Microsoft Secure Tech Accelerator
Apr 03 2024, 07:00 AM - 11:00 AM (PDT)
Microsoft Tech Community
Mastering Configuration Manager Patch Compliance Reporting
Published May 25 2020 04:45 AM 97.9K Views
Microsoft

Hi, Jonas here!

Or as we say in the north of Germany: "Moin Moin!"
I am a Microsoft Customer Engineer (CE formerly known as PFE) and a while back (years in fact) I was asked to analyze the update compliance status of a SCCM/ConfigMgr/MECM environment. I will use the current name: "Microsoft Endpoint Configuration Manager" (MECM) in the rest of the blog.
I used different reports to look for clients not installing the necessary updates, but it was time consuming and I was missing a general overview with some meaningful KPIs. I ended up with a comprehensive SQL query and an Excel sheet, but changed that to a SQL Server Reporting Services (SSRS) report. I then made that available to several departments in the organization.
As mentioned before, it's been a while since I created the report. If I were to start now it would be a PowerBI version or I would simply grab one of the PowerBI reports available from the MECM community. But since I still use the report and find it quite helpful, I decided to share that with the rest of the world.

 

Updated version (v3.9)

I updated the solution again. Use the table of contents to jump to the summary of changes directly if you want.

 

Table of contents:

TR:DR
The report explained
1st sub-reports (list of systems)
2nd sub-report (per system)

3rd sub-report (errorlist)

4th sub-report (deployments per system)

5th sub-Report (updates approved)
Some key facts and prerequisites:
How to install
Script Parameters
Script Examples

Activate report data caching
Additional report
Disclaimer
Resources
Changes

 

TL;DR

The following report should help you identify update problems within a specific collection and a group of systems and is designed to work well for a few thousand clients. The query might run longer in bigger environments and you might need to improve it or run it not within business hours to show results.
The installation guide for the custom update reporting can be found at the end of this post but you should at least start with the "Some key facts and prerequisites" section.
If you're just looking for the SQL statement behind the report, copy the query from the "UpdatesSummary.sql" file and use it in SQL directly.
The whole solution can be found on GitHub: https://github.com/jonasatgit/updatereporting
Feel free to improve the SQL queries or some of the reports on Github.
If you are a Premier customer and if you are looking for a more complete reporting solution, ask your Microsoft contact about the following offerings:
"Microsoft Endpoint Configuration Manager: Advanced Dashboards"
"Microsoft Endpoint Manager: PowerBI Dashboard Integration"

"Microsoft Endpoint Manager: Update Compliance Dashboard"

"Modern Workplace Compliance Reporting"

 

The report explained:

The main report dashboard looks like this:

Figure 1: Main update compliance dashboardFigure 1: Main update compliance dashboard

 

I used different KPIs to measure update compliance and the report combines all that into one dashboard. The main KPI is the first bar and all the others should simply help identify patch problems or flaws in your deployment strategy.

The report also has five sub-reports. One to show you a list of systems in a specific state (1st sub-report). One for a list of missing updates for a single system (2nd sub-report).  One sub-report (3rd sub-report) to show you a list of update installation errors or WSUS scan errors. One sub-report for all update deployment-states per system (deployments per system) and the last report (Updates Approved) shows you the NOT deployed / approved updates a system is still missing.

Figure 2: Simplified view of report dependenciesFigure 2: Simplified view of report dependencies

 

1st sub-reports (list of systems)

Almost each bar or pie chart links to a sub-report to show compliance state of that subset of systems to give you better visibility. This is an example of all the uncompliant systems from the first bar in the dashboard and is basically what the Excel list looked like in the early days:

Figure 3: List of all uncompliant systemsFigure 3: List of all uncompliant systems

If you click on different bar or pie charts, the same sub-report will be opened, but the data will be filtered depending on which bar or pie chart you clicked.

 

2nd sub-report (per system)

If you click on a system name a system specific report will open. The list of updates of that report will be filtered for the specific need. For example, if you click on “missing updates approved” just the approved and missing updates will be visible. The report also shows installations errors if any happened. Each error will link to a Bing search with the hex value of the error. The search string looks like this: https://www.bing.com/search?q=error+0x80070005
The report is basically a copy of one of the default MECM reports with some adjustments and some custom filters to filter for “Deployed and missing updates”, “Not deployed but missing”, "Missing updates with errors", “All missing updates deployed or not” or just “All updates per device.

It also contains update collections and maintenance windows to help identify missing or wrong collection memberships:

Figure 4: Per device update compliance reportFigure 4: Per device update compliance report

 

3rd sub-report (errorlist)

If you either click on the “WSUS-Scan Error” or “Systems with install error” bar a list with errors will be visible as shown in the screenshot below:

Figure 5: List of WSUS scan errorsFigure 5: List of WSUS scan errors

The report contains around 400 possible WSUS errors, tips and links to give you a troubleshooting starting point. It might not be a complete list, but it should cover the most common errors.

 

4th sub-report (deployments per system)

The fourth sub-report is a simple list of update deployments and their state and some other useful information per system. 

It can be either be opened directly or if you click on the "Deployments non compliant" row of the first sub-report.

Figure 6: Update deployment-states per deviceFigure 6: Update deployment-states per device

 

5th sub-report (updates approved)

If you click on the yellow “Updates Approved” bar a report shows you all the updates the selected systems are still missing, which are NOT yet approved / deployed.

The report should help identify problems with the selection of updates in your deployments.

Figure 7: Report of missing updates not yet approvedFigure 7: Report of missing updates not yet approved

 

Some key facts and prerequisites:

  • The report is made to show the update compliance status of members of a collection or multiple collections no matter what type of systems are a member or which or how many updates are deployed to each individual system. So, it can be a combined view over multiple deployments and not just one deployment.
  • The report combines multiple deployments into one single view.
    If you have a simple group of systems and deploy every necessary update with one deployment, the deployment status might be enough, but if you have a more complex setup, you might want to see details based on a specific group of systems no matter if, how or how many updates are deployed to each system.
  • I have defined "compliant" to be a system which has:
    • all enabled update deployments set to compliant (see changes down below. Column: "Deployments Non Compliant")
    • the last security update installation in Win32_Quickfixengineering was in the current month (or the monthly security rollup. Column: "Month Since Last Update Install")
    • The last or current security rollup is installed (see changes down below. Column: "Last Rollup Status")
  • The report will all updates no matter if deployed as "available" or "required".
  • The report consists of multiple KPIs to indicate the update compliance or update/client health state and should give you an overview from different viewpoints to help identify problematic systems or a flaw in your patch strategy.
  • The report will use data from WMI class Win32_QuickFixEngineering which needs to be enabled in hardware inventory client settings. The class is only used to determine the latest or last cumulative update or A security update installation to identify systems which seem to be fine but actually have never installed anything. "HotFixID" and "InstalledOn" are the only required fields. 
  • The report also uses LastLogonTimeStamp from AD System Discovery to visually show systems which have not logged on to the domain in a while and which might be disposed of already and could be deleted from the MECM database. If you don't use AD system discovery the report will show all systems of the specified collection as not compliant in the pie chart "Last ADDS logon" .
    • AD system discovery is no hard requirement to run the report
  • The report does not show historical data and will always show the current status. So, if you change a deployment in the middle of the month, the compliance percentage will drop almost immediately as it does with the deployment in MECM.
  • The report has multiple sub-reports to drill further down and almost each report will use the same dataset
    • Read more about data caching down below
  • The SQL query of the dataset is made to filter out Defender Update Deployments, because they normally will be changed every x hours and could interfere with the overall compliance state and should be monitored with other reports.
    You can change that via the available report parameters.  
  • The 2nd Level sub-report per system will also show Defender updates, even if they are filtered out on the dashboard
  • The SQL query might run longer in bigger environments depending on SQL performance and SQL maintenance. In some cases one of the “ForceLegacyCardinality” parameters can help to speed up the queries. (See parameter description down below)
  • There are several sub-reports with the same look and feel, because it was simpler to copy the report and just change the filter for the specific need.
  • Most sub-reports will be hidden in SSRS to avoid direct use and keep the folder as clean as possible.
  • The reports are made on SSRS 2017 but can be converted to the older format using the "ForceLegacyFormat" parameter.
  • The reports can be used on PowerBI Reporting Services if you upload them manually. Start with the “rsd” files from the “work” folder to avoid any errors. 

 

How to install:

  1. In case you used an older version of the solution before, delete and re-create the report folder in SSRS (or create a new one) and run the latest script again.
  2. Make sure you have Win32_Quickfixengineering enabled in the client settings for hardware inventory.  "HotFixID" and "InstalledOn" are the only required fields. 
  3. You could also use AD System Discovery to have further data, but that's no hard requirement.
  4. Either clone the repository or download the whole content.
  5. Copy the whole content to the SQL Server Reporting Services Server (SSRS)
  6. Create a new folder on the report server website where the reports should be imported to.
    1. The folder should be under the normal MECM folder (normally called ConfigMgr_[SITECODE]), but it can also be at the root level of your Reporting Services Server. But keep in mind that report subscriptions are only visible in the MECM console, if the report, you have subscribed for, is below the normal MECM folder. The subscription will not be visible in the MECM console if the report was placed at the root level.
  7. Start a PowerShell session as admin.
    1. The user running PowerShell also needs to have admin rights on the SQL Reporting Services Server to upload the reports
  8. Change the directory to the folder were the import script "Import-SSRSReports.ps1" can be found.
  9. Start the script ".\Import-SSRSReports.ps1" with the appropriate parameters (see below or run “Get-Help .\Import-SSRSReports.ps1 -Full”)
    1. The script will copy each RDL and RSD file from the "Sourcefiles" folder to a new "work" folder in the same directory the script resides.
    2. The script will then simply replace some values with the parameter values you provided
    3. The script will then upload the datasets and the reports to the server and the folder you provided as parameters
    4. The files in the "work" folder will not be deleted and can be used as a backup or for manual uploads if necessary and will contain the data you provided as parameters to the script
    5. IMPORTANT: If you need to re-run the script, use the -TryOverwrite parameter first and if it does not work as expected delete the SSRS website folder with all of its content. I faced some issues with some settings not being overwritten hence the name of the parameter "Try"Overwrite.

 

Script parameters:

Parameter

Required

Example value / Description

ReportServerURI

Yes

Value:
http://reportserver.domain.local/reportserver

 

Description:
The URL of the SQL Reporting Services Server.
Can be found in the MECM Console under "\Monitoring\Overview\Reporting" -> "Report Server" or in the "Report Server Configuration Manager" under "Web service URL"

TargetFolderPath

Yes

Value:
ConfigMgr_P11/Custom_UpdateReporting

 

Description:
The folder where the reports should be placed in. I created a folder called "Custom_UpdateReporting" below the default MECM reporting folder. My sitecode is P11, so the default folder is called "ConfigMgr_P11".
Like this for example: "ConfigMgr_P11/Custom_UpdateReporting"
IMPORTANT: Use '/' instead of '' because it's a website.

TargetDataSourcePath

Yes

Value:
ConfigMgr_P11/{5C6358F2-4BB6-4a1b-A16E-8D96795D8602}

 

Description:
The path should point to the default ConfigMgr/MECM data source.
In my case the Sitecode is P11 and the default data source is therefore in the folder "ConfigMgr_P11" and has the ID "{5C6358F2-4BB6-4a1b-A16E-8D96795D8602}"
The path with the default folder is required. Like this for example: "ConfigMgr_P11/{5C6358F2-4BB6-4a1b-A16E-8D96795D8602}"

IMPORTANT: Use '/' instead of '\' because it's a website.

DefaultCollectionID

No

Value:
SMS00001

 

Description:
The report can show data of a default collection when it will be run, so that you don't need to provide a collection name each time you run the report.
The default value is "SMS00001" which is the CollectionID of "All Systems", which might not be the best choice for bigger environments.

DefaultCollectionFilter

No

Value:

All%

 

Description:

The filter is used to find the collection you are interested in and the value needs to match the name of the collection you choose to be the default collection for the parameter "defaultCollection".
In my case "S%" or “Servers%” or "Servers of%" to get the "Servers of the environment" collection for example.

DoNotHideReports

No

Value:

'Software Updates Compliance - Overview','Compare Update Compliance'

 

Description:

Array of reports which should not be set to hidden. You should not use the parameter unless you really want more reports to be visible.

DoNotUpload

No

Description:

Switch parameter to not directly upload the reports to SRRS. That might be helpful if you do not have the rights to upload and need to give the files to another person for example. In that case, just use the report files in the work folder and upload them manually. (Was called "Upload" in the first script version)

ReportSourcePath

No

Value:
"C:\Temp\Reports"

 

Description:
The script will use the script root path to look for a folder called "Sourcefiles" and will copy all the report files from there. But you could also provide a different path where the script should look for a "Sourcefiles" folder

ForceLegacyFormat

No

Description:

Switch parameter to change the xml definition 
of each report to the older pre SSRS 

2016 format. That way the reports also 

work with SSRS 2014 for example.

ForceLegacyCardinalitySQL2016SP1AndHigher

No

Description:
Switch parameter to change some SQL queries to use legacy cardinality
(More information can be found in the sources list below)

IMPORTANT: Can only be used if the SQL Server hosting the MECM database is at least running SQL Server 2016 SP1.

ForceLegacyCardinalityOlderThanSQL2016SP1

No

Description:
Switch parameter to change some SQL queries to use legacy cardinality.
More information can be found here.

IMPORTANT: Can only be used if the SQL Server hosting the MECM database is OLDER than 2016 SP1.

 

TryOverwrite

No

If set, the script will try to overwrite existing reports. In some cases not all settings are overwritten unfortunately, hence the name TRY-Overwrite

 

 

Script examples:

Get the full list of parameters by running:

 

Get-Help .\Import-SSRSReports.ps1 -Full

 

Upload all reports with the minimum required parameters

 

.\Import-SSRSReports.ps1 -ReportServerURI "http://reportserver.domain.local/reportserver" -TargetFolderPath "ConfigMgr_P11/Custom_UpdateReporting" -TargetDataSourcePath "ConfigMgr_P11/{5C6358F2-4BB6-4a1b-A16E-8D96795D8602}"

 

Upload all reports with the minimum required parameters and force legacy format

 

.\Import-SSRSReports.ps1 -ReportServerURI "http://reportserver.domain.local/reportserver" -TargetFolderPath "ConfigMgr_P11/Custom_UpdateReporting" -TargetDataSourcePath "ConfigMgr_P11/{5C6358F2-4BB6-4a1b-A16E-8D96795D8602}" -ForceLegacyFormat

 

Just change the report files and do not upload them

 

.\Import-SSRSReports.ps1 -ReportServerURI "http://reportserver.domain.local/reportserver" -TargetFolderPath "ConfigMgr_P11/Custom_UpdateReporting" -TargetDataSourcePath "ConfigMgr_P11/{5C6358F2-4BB6-4a1b-A16E-8D96795D8602}" -DoNotUpload

 

Upload all reports and change the default CollectionID and Collection-Filter

 

.\Import-SSRSReports.ps1 -ReportServerURI "http://reportserver.domain.local/reportserver" -TargetFolderPath "ConfigMgr_P11/Custom_UpdateReporting" -TargetDataSourcePath   "ConfigMgr_P11/{5C6358F2-4BB6-4a1b-A16E-8D96795D8602}" -DefaultCollectionID "P1100012" -DefaultCollectionFilter "All Servers of Contoso%"

 

Activate report data caching:

Activate report data caching to increase report render speed. As mentioned before almost every report retrieves data from the same dataset. By activating report data caching you can increase report render speed especially for the compliance sub-reports (like the first sub-report). 

First you need to show all hidden items of your report folder by clicking on "Tiles" and "Show hidden items".

Figure 8: Show hidden itemsFigure 8: Show hidden items

 

Choose the "UpdatesSummary" dataset and click on the three dots "..." and choose "Manage".

Click on "Caching" and "Cache copies of this dataset and use them when available" and "Apply".

Figure 9: Activate data source cachingFigure 9: Activate data source caching

 

Additional report:

Also, a while ago I created a report to compare the patch status of a maximum of six systems which will also be upload to your SSRS if you run the install script. It should just help to have a fast and simple way to spot differences.
The report has a filter to limit the amount of systems returned by name and you can choose a maximum of six systems to compare them. You could also choose to only view required updates to limit the view and complexity of the report.

Figure 10: Compare update compliance reportFigure 10: Compare update compliance report

 

I hope you like the report solution and I hope it is a good extension of what you are using right now. 

 

Stay safe and healthy!

 

Best regards

Jonas Ohmsen

Senior Customer Engineer - Microsoft Germany

 

Disclaimer:

This posting is provided "AS IS" with no warranties, and confers no rights

 

Resources:

Download the whole solution or clone the repository here:
https://github.com/jonasatgit/updatereporting

Other blogs:

https://aka.ms/JonasOhmsenBlogs

https://aka.ms/StefanRoellBlogs

Slow ConfigMgr console:

https://support.microsoft.com/en-us/help/3196320/sql-query-times-out-or-console-slow-on-certain-conf...

 

 

Changes:

(The version number can be found in the lower left corner of the dashboard. No version number means v1.0)

 

2022-10-12 v3.9:

  • Added logic to hide zero values in diagrams based on feedback
  • Fixed minor issues

2022-05-06 v3.8:

  • Fixed a sub-report link problem for WSUS error and install error list

2022-04-04 v3.7:

  • Added parameter to show data based on current or previous month. The previous month setting is only applicable if updates are deployed with a month delay and does not rely on historical data
  • Changed the way compliance for update rollups are shown between first day of month and second Tuesday based on: https://github.com/jonasatgit/updatereporting/pull/11
  • Changed the "exclude future deployments" parameter to be able to filter out deployments in one of the following states: Deployed as available, deployment disabled, start time or deadline in the future
  • Changed column "Missing updated approved" to only show missing updates if the corresponding deployment has not been filtered out via the new exclude parameter. The "per device" report still shows all updates no matter the deployment selection
  • Added the new deployment exclude parameter also to the "Per device deployments" report. The report will now exclude deployments based on the parameter.
  • Added cumulative update prefix like "2022-04" to the dashboard for each rollup bar graph
  • Added systems domain name column to each list report
  • Added switch "TryOverwrite" to import script. If set, the script will try to overwrite existing report items. Might not work in every case. If successful subscriptions will also be kept.
  • Added new filter to the "Per device" report called: "All missing Security and Critical updates deployed or not"
  • Removed Security Update requirement in QFE query to improve QFE detection accuracy
  • Fixed typo in "Per device" report based on: https://github.com/jonasatgit/updatereporting/issues/9
  • Fixes typo in import script
  • Fixed sorting issue in "per device" report
  • Fixed sorting issue in "per device deployments" report
  • Fixed "uncompliant" typo in "compliance list" report via: https://github.com/jonasatgit/updatereporting/pull/15
  • Fixed typo in "compare update compliance" via: https://github.com/jonasatgit/updatereporting/pull/14
  • Fixed an issue with parameters not correctly handled between the dashboard and most of the sub-reports

2021-07-02 v3.6:

  • Added "Cumulative Update for Microsoft server operating system" string for server 2022 updates to main SQL query

2021-07-02 v3.5:

  • Changed the overall compliance state from "all approved and missing updates" + "a security update installation happend within one month" to "All deployments are compliant" + "either the last or the current cumulative update is installed" + "a security update installation happend within one month" (based on Win32_QuickFixEngineering)
  • Added help text to all report column headers
  • Added Update install errors bar graph to dashboard (below WSUS scan errors)
  • Changed filter for top 10 systems on dashboard to be more accurate
  • Added top 10 update install errors to dashboard
  • Added new report with details about install errors and WSUS scan errors
    • Contains around 400 common windows update related errors with possible actions on how to fix them
  • Added new parameter to exclude deployments containing Microsoft Defender and System Center Endpoint Protection updates
    • Was previously part of the SQL query and not easily changeable nor visible to the report user
  • Removed Server 2008 specific parts
  • Added new filter to "per device" report called: "Missing updates with errors" and “All missing updates deployed or not”
  • Added more details about errors to "per device" report
  • Added update collection and maintenance window list to “per device” report
  • Added column: “Earliest Deadline” to “per device” report
  • Changed first sub-report name from “all uncompliant” to “compliance list”
  • Changed default sort order from "count of missing updates" to "month since last update install"
  • Changed "WSUS version" to "OS build version". Easier to determine actual OS version and patch level
  • Changed "Defender Pattern Version" to "Defender Pattern Age" to be able to spot systems with older pattern more easily
  • Added column "WSUS scan error" to system list
  • Added column count of "Updates with install error" to system list
  • Added column number of "Deployments non compliant" to system list
    • Helps to determine any problems with deployments when all updates are installed, but deployments are still marked as uncompliant
  • Added new report to list all update deployments and their states per device
  • Made "Per device" and “compliance list" report visible to be able to schedule subscriptions without the dashboard
  • Fixed several minor issues with each report
  • Changed SQL query for deployed updates to work better in larger environments
  • Changed import script to also handle SSRS folder path with spaces in it
  • Changed import script to delete existing contents of "work" folder from a previous run
  • Changed import script parameter name "Upload" to "DoNotUpload". Function is the same.
  • Removed import script parameter "UseViewForDataset". (To much work to keep the view consistent with regular query)
  • Added new import script parameters: "ForceLegacyCardinalitySQL2016SP1AndHigher" and "ForceLegacyCardinalityOlderThanSQL2016SP1" Read more about it here

2020-12-09 v2.1:

  • Fixed language and QFE problem
  • Added new parameter -ForceLegacyFormat,
  • Fixed minor issues and linked all reports to the per device sub-report

2020-11-03 v1.0:

  • Fixed wrong parameter name, updated repository with several fixes

 

 

75 Comments

Hi Jonas, impressive article and a great solution with a lot of useful information. Thanks for putting it together!

Thank you @jonasoh for the Awesome blogpost for the Community :cool:

I have Shared it on my Social media Channels ;)

 

Copper Contributor

Hi Jonas,  
This is really helpful, however I am facing some errors when running the PS script - the definition of this report is not valid or supported by this version of Reporting Services

 

Any ideas?

Microsoft

Hi @MarkB35.

I only tested SSRS 2017, so it might not work with older versions. Which version you are running? Can you share the exact error message?

Download link for SSRS 2017: https://www.microsoft.com/en-us/download/details.aspx?id=55252 Just in case :)

Best regards

Jonas

Copper Contributor

HI @jonasoh 

I managed to resolve this.

We was on SQL 2014, I updated to SQL 2017 and it now works.

Copper Contributor

This looks very useful, but I am running into issues during installation.  I am receiving the error below for every RDL file that attempts to install.  Any help would be appreciated.


Uploading: UpdatesSummaryView.rsd...

'/1Patch_Compliance_Reports/UpdatesSummaryView' cannot be found. --->
Microsoft.ReportingServices.Diagnostics.Utilities.ItemNotFoundException: The item
'/1Patch_Compliance_Reports/UpdatesSummaryView' cannot be found.
at Microsoft.ReportingServices.Library.ReportingService2005Impl.GetProperties(String Item, Property[] Properties,
ItemNamespaceEnum itemNamespace, Property[]& Values)
at Microsoft.ReportingServices.WebServer.ReportingService2010.GetProperties(String ItemPath, Property[] Properties,
Property[]& Values)"
At E:\Reports\updatereporting-master\Import-SSRSReports.ps1:233 char:21
+ $Properties = $ReportServerConnection.GetProperties("$target ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SoapException

The property 'Value' cannot be found on this object. Verify that the property exists and can be set.
At E:\Reports\updatereporting-master\Import-SSRSReports.ps1:235 char:21
+ $prop.Value = $true
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyNotFound

Exception calling "SetProperties" with "2" argument(s): "System.Web.Services.Protocols.SoapException: The value for
parameter 'Properties' is not specified. It is either missing from the function call, or it is set to null. --->
Microsoft.ReportingServices.Diagnostics.Utilities.MissingParameterException: The value for parameter 'Properties' is
not specified. It is either missing from the function call, or it is set to null.
at Microsoft.ReportingServices.Library.ReportingService2005Impl.SetProperties(String Item, Property[] Properties,
Guid batchId)
at Microsoft.ReportingServices.Library.ReportingService2005Impl.SetProperties(String Item, Property[] Properties)
at Microsoft.ReportingServices.WebServer.ReportingService2010.SetProperties(String ItemPath, Property[] Properties)"
At E:\Reports\updatereporting-master\Import-SSRSReports.ps1:236 char:21
+ $ReportServerConnection.SetProperties("$targetPath/$reportNa ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SoapException

Microsoft

Hi @riche10it which SSRS version you are using? I tested SSRS 2017 which will work with older SQL versions. 
Some reports should be set to hidden and that seems to be failing in your case. Those reports are only used as a sub-report for the dasboard and hiding them makes therefore sens. 
You can always try to upload the reports manually from the "work" folder by clicking the "upload" button in the SSRS folder you which to have the reports in. Make sure to upload the two ".rsd" files first. Hope this helps. 

Brass Contributor

Hi Jonas

thnx for this dashboard :)

Copper Contributor

I am receiving the following error when trying to publish your report. Any guidance would be appreciated.

 

writeErrorStream : True
PSMessageDetails :
Exception : System.InvalidOperationException: The HTML document does not contain Web service discovery
information.
at System.Web.Services.Discovery.DiscoveryClientProtocol.DiscoverAny(String url)
at Microsoft.PowerShell.Commands.NewWebServiceProxy.GenerateWebServiceProxyAssembly(String
NameSpace, String ClassName)
TargetObject : http://servername/reports/ReportService2010.asmx?wsdl
CategoryInfo : InvalidOperation: (http://servername...e2010.asmx?wsdl:Uri) [New-WebServiceProxy],
InvalidOperationException
FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.NewWebServiceProxy
ErrorDetails :
InvocationInfo : System.Management.Automation.InvocationInfo
ScriptStackTrace : at <ScriptBlock>, C:\Temp\updatereporting-master\Import-SSRSReports.ps1: line 191
at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo : {0, 0}

Copper Contributor

Hi @jonasoh,

 

Thank you for this great report. But I'm receiveing the following error when I try to run the report:

 

Une erreur s'est produite lors du traitement du rapport. (rsProcessingAborted)
L'exécution a échoué pour le jeu de données partagé « ClientSecurityOverview ». (rsDataSetExecutionError)
Impossible de lire la ligne de données suivante pour le dataset UpdatesSummary. (rsErrorReadingNextDataRow)
Erreur de conversion du type de données nvarchar en varbinary.

 

Could you please help me to solve this issue ?

 

Regards,

Youssef

Copper Contributor

I did all the prep work and ran the PowerShell. The reporting works, but I have a problem accessing the sub-report. I try to click on an individual machine to get the sub-report and it attempts to open: /ConfigMgr_XYZ/Custom_UpdateReporting/_Computer Dashboard_2 (I replaced our site code with XYZ)

 

Should I just use Report Builder to map it to one of the hidden reports? If so, which one? 

 

[EDIT: I customized the link for the machine names to use Software Updates Compliance - Per device with a filter value of 0. I'm not sure if that's what you intended, but I like it that way.]

Microsoft

@jdurlewanger looks like you are trying to upload the report to the PowerBI Report Server. The script is not able to do that yet, but you could manually upload each file to the server. You might need to change the data source and path manually for each report via Report Builder.

Changing the script to be PowerBI Report Server aware is still in my backlog.  

Microsoft

@gadgetz I removed the link from the report and updated the Git repository.  That was just a test and I seem to have forgotten to remove the link. 

Microsoft

@youssefsaad I changed to SQL query to not rely on the SQL Server install language. 

More details can be found here: https://github.com/jonasatgit/updatereporting/issues/1
Just download the latest version and the report should run. 

Copper Contributor

@jonasoh I am not trying to upload to powerbi, I am trying to upload to SSRS report server hosting the configmgr db.

Microsoft

@gadgetz great idea changing the link to the per device report. I did that for all the links and updated the repository.

 

@youssefsaad I had to change the query again to fix the language issue, but it should work now. Just grab the latest files from the repository.

 

@riche10it I added a new switch parameter called "ForceLegacyFormat" to convert the files to the older format. The reports should work now on older SSRS versions as well. But updating to the latest SSRS version should be the first step, as you already did.

Copper Contributor

Hi, Jonasoh. First thank you very much for the reports and script to load reports.

I have sccm 2016

powershell script completed without any error.

but  I am having a weird error.  First, after run the script. I am only seeing two reports:

compare update compliance and software updates compliance-overview.

pagenated reports(17)

datasets(2)

The other problem is I got following error when trying to run report, including any existing report from ssrs install:

 

 

xp620303_1-1613776971019.png

 

I have to retype in password on datasource security as on this screen. but after run one repport, problem come back again:

xp620303_2-1613777103519.png

 

any idea what's going on?

 

thanks

Steven

 

Copper Contributor

never mind, figured out what went wrong regarding issue on my post. thanks

Copper Contributor

Hi, Jonasoh! I followed the instructions you provided for this custom report but I am receiving this warning message "Warning: The dataset ‘UpdatesSummaryView’ refers to the shared data source ‘/coh/{5C6358F2-4BB6-4a1b-A16E-8D96795D8602}’, which is not published on th
e report server. The shared data source ‘/coh/{5C6358F2-4BB6-4a1b-A16E-8D96795D8602}’ must be published before this shared dataset can run." What can I do to correct this error? 

Microsoft

Hi @xp620303 you might need to type in the password for the reporting user in the SCCM console under: "Administration\Security\Accounts" instead of using SSRS directly. 

Hi @NewMem2022 have you provided the full path to ConfigMgr datasource like this?

-TargetDataSourcePath "ConfigMgr_P11/{5C6358F2-4BB6-4a1b-A16E-8D96795D8602}"

In my case the SiteCode is P11 and the default ConfigMgr reporting folder is called: "ConfigMgr_P11". I am assuming your SiteCode is "COH" which means the folder might be called: "ConfigMgr_COH" and you schould use that for the TargetDataSourcePath parameter. 
Delete and re-create the folder on the reporting services website before re-uploading the reports to avoid any errors. 
Hope this helps.  

Best regards
Jonas

Copper Contributor

Hi @jonasoh ,

 

Thank you for the report

 

I am trying to run the PS script but I am getting the following error can you help me in this.

 

.\Import-SSRSReports.ps1 -ReportServerURI "http://clhqsm217/Reports
/browse/ConfigMgr_EUC" -TargetFolderPath "ConfigMgr_EUC/Custom_UpdateReporting" -TargetDataSourcePath "ConfigMgr_EUC/{5C
6358F2-4BB6-4a1b-A16E-8D96795D8602}"
Copy "E:\updatereporting-master\updatereporting-master\SourceFiles\*" to "E:\updatereporting-master\updatereporting-master\work\"
Found 19 .rdl and .rsd files in "E:\updatereporting-master\updatereporting-master\work"
Working on: Compare Update Compliance.rdl
Working on: Software Updates Compliance - Overview ABC Last ADDS Logon.rdl
Working on: Software Updates Compliance - Overview ABC Last Policy Update.rdl
Working on: Software Updates Compliance - Overview ABC Last Reboot.rdl
Working on: Software Updates Compliance - Overview ABC Last Update Install.rdl
Working on: Software Updates Compliance - Overview all compliant.rdl
Working on: Software Updates Compliance - Overview all uncompliant.rdl
Working on: Software Updates Compliance - Overview current rollup compliant.rdl
Working on: Software Updates Compliance - Overview current rollup uncompliant.rdl
Working on: Software Updates Compliance - Overview last rollup compliant.rdl
Working on: Software Updates Compliance - Overview last rollup uncompliant.rdl
Working on: Software Updates Compliance - Overview Pending Reboot.rdl
Working on: Software Updates Compliance - Overview subreport template.rdl
Working on: Software Updates Compliance - Overview Updates missing not deployed.rdl
Working on: Software Updates Compliance - Overview WSUSScanError.rdl
Working on: Software Updates Compliance - Overview.rdl
Working on: Software Updates Compliance - Per device.rdl
Working on: UpdatesSummary.rsd
Working on: UpdatesSummaryView.rsd
Connecting to: http://clhqsm217/Reports/browse/ConfigMgr_EUC...
New-WebServiceProxy : The HTML document does not contain Web service discovery information.
At E:\updatereporting-master\updatereporting-master\Import-SSRSReports.ps1:223 char:35
+ ... onnection = New-WebServiceProxy -Uri $ReportServerUriFull -Namespace ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (http://clhqsm21...e2010.asmx?wsdl:Uri) [New-WebServiceProxy], Invalid
OperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.NewWebServiceProxy

Problem with connection...
End of script!

Microsoft

Hi @Navajyoti the report server URI parameter should point to the report server API instead of the ConfigMgr reports folder.
Not like: -ReportServerURI "http://clhqsm217/Reports/browse/ConfigMgr_EUC"

Instead like: -ReportServerURI "http://clhqsm217/reportserver"

The URI might be different if you changed it in: "Report Server Configuration Manager".

You will find the actual URI in "Report Server Configuration Manager" under "Web Service URL".

Copper Contributor

Hi Jonasoh, 

 

Thank you for creating this report and it's looking great. I uploaded this report to my MECM system without any problem, when I run compliance report against specified collection, I found out some client with same status as compliant clients (no red section) but they are located in uncompliant section. I couldn't figure out what causing the two client with same patches installation and compliance status but one is compliant and another isn't. 

I reviewed your "patching" compliance definition and believe the uncompliant machine should be in compliance client group instead of uncompliant. Do you have any idea?

 

Thanks a lot,

Gloria 

Copper Contributor

Hello Jonasoh,

 

Can you tell me what the required version of SSRS is for these to work? I get the following error when trying to install them via PowerShell.

 

Exception calling "CreateCatalogItem" with "7" argument(s): "System.Web.Services.Protocols.SoapException: The definition of this report is not valid
or supported by this version of Reporting Services. The report definition may have been created with a later version of Reporting Services, or
contain content that is not well-formed or not valid based on Reporting Services schemas. Details: The report definition has an invalid target
namespace 'http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition' which cannot be upgraded.
at Microsoft.ReportingServices.Library.ReportingService2010Impl.CreateReport(String Report, String Parent, Boolean Overwrite, Byte[] Definition,
Property[] Properties, ItemType ItemType, CatalogItem& ItemInfo, Warning[]& Warnings)
at Microsoft.ReportingServices.Library.ReportingService2010Impl.CreateCatalogItem(String ItemType, String Name, String Parent, Boolean Overwrite,
Byte[] Definition, Property[] Properties, CatalogItem& ItemInfo, Warning[]& Warnings)
at Microsoft.ReportingServices.WebServer.ReportingService2010.CreateCatalogItem(String ItemType, String Name, String Parent, Boolean Overwrite,
Byte[] Definition, Property[] Properties, CatalogItem& ItemInfo, Warning[]& Warnings)"
At C:\Users\da_mpeterson.HSHSAD\Desktop\updatereporting-master\updatereporting-master\Import-SSRSReports.ps1:246 char:17
+ $null = $ReportServerConnection.CreateCatalogItem(
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SoapException

 

Any help would be appreciated, thanks!

Microsoft

Hi @webcat123 I will release a new version of the report framework in a few days. That should give you more details about why a system is marked as uncompliant. 

 

Hi @Agr8lemon the reports are build with Report Builder version 2016 and 2017 and contain a mix of those two schemas: 

'http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition'

'http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition'

As stated in the "Some key facts and prerequesites" section (last two lines) you can force the older schema (2010) by using the "-ForceLegacyFormat" parameter.
In case you want to upload the reports to PowerBI report server you have to do that manually as the upload script is not PowerBI aware at the moment.

Copper Contributor

Hi Jonasoh,

 

Great report but the statistic I am having issues with is the top bar graph (Update Compliance) which is showing 100% uncompliant but I know this should be partially compliant, where is it pulling this information from?

 

Thanks

MECM.JPG

Microsoft


Hi @famelton you should see a description for each bar or column header if you hover over it with your mouse.
I described the compliance state in the: "Some key facts and prerequisites:" section. But to be honst it was easy to miss. So, I highlighted each fact and put that specific one on the third position.
But my guess would be column: "Month Since Last Update Install" (see first sub-report) because that is based on WMI class Win32_QuickFixEngineering which is not enabled in Hardware Inventory by default.

Copper Contributor

Thank you Jonasoh for the update, looking forward to seeing the new version of report

 

Thanks,

Copper Contributor

Thanks @jonasoh that was exactly what it was. As soon as Win32_QuickFixEngineering was enabled and the hardware inventory task run, the compliance started increasing. Thanks for your swift assistance.

Microsoft

Hi @webcat123 I hope you saw the new version (v3.5) already. I listed all the changes here: https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/mastering-configuration-mana...

 

Copper Contributor

Hey Jonas,

Great work!

Whenever I run the script, I get the following error:
At C:\Scripts\SSRS_Reports\Import-SSRSReports.ps1:211 char:21
+ Sign&nbsp;up
+ ~
The ampersand (&) character is not allowed. The & operator is reserved for future use; wrap an ampersand in double quotation marks ("&") to pass it as part of a string.
At C:\Scripts\SSRS_Reports\Import-SSRSReports.ps1:223 char:18
+ </button> </div>
+ ~
The '<' operator is reserved for future use.
At C:\Scripts\SSRS_Reports\Import-SSRSReports.ps1:237 char:16
+ </button> </div>
+ ~
The '<' operator is reserved for future use.
At C:\Scripts\SSRS_Reports\Import-SSRSReports.ps1:250 char:189
+ ... ata-ga-click="(Logged out) Header, go to Features">Features <span cla ...
+ ~
The '<' operator is reserved for future use.
At C:\Scripts\SSRS_Reports\Import-SSRSReports.ps1:250 char:269
+ ... nk-symbol float-right text-normal color-text-tertiary pr-3">&rarr;</s ...
+ ~
The ampersand (&) character is not allowed. The & operator is reserved for future use; wrap an ampersand in double quotation marks ("&") to pass it as part of a string.
At C:\Scripts\SSRS_Reports\Import-SSRSReports.ps1:254 char:167
+ ... ck Link--secondary no-underline f5 Bump-link--hover">Mobile <span cla ...
+ ~
The '<' operator is reserved for future use.
At C:\Scripts\SSRS_Reports\Import-SSRSReports.ps1:254 char:247
+ ... nk-symbol float-right text-normal color-text-tertiary pr-3">&rarr;</s ...
+ ~
The ampersand (&) character is not allowed. The & operator is reserved for future use; wrap an ampersand in double quotation marks ("&") to pass it as part of a string.
At C:\Scripts\SSRS_Reports\Import-SSRSReports.ps1:255 char:178
+ ... k Link--secondary no-underline f5 Bump-link--hover">Actions <span cla ...
+ ~
The '<' operator is reserved for future use.
At C:\Scripts\SSRS_Reports\Import-SSRSReports.ps1:255 char:258
+ ... nk-symbol float-right text-normal color-text-tertiary pr-3">&rarr;</s ...
+ ~
The ampersand (&) character is not allowed. The & operator is reserved for future use; wrap an ampersand in double quotation marks ("&") to pass it as part of a string.
At C:\Scripts\SSRS_Reports\Import-SSRSReports.ps1:256 char:184
+ ... ink--secondary no-underline f5 Bump-link--hover">Codespaces <span cla ...
+ ~
The '<' operator is reserved for future use.
Not all parse errors were reported. Correct the reported errors and try again.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : AmpersandNotAllowed

 

Any idea what I'm doing wrong?

Microsoft

Hi @Zirigo my guess would be that you copied too much from the GitHub page here: https://github.com/jonasatgit/updatereporting/blob/master/Import-SSRSReports.ps1
The easiest way to download the whole solution is to use the "Code" and "Download ZIP" button on the following GitHub page: https://github.com/jonasatgit/updatereporting

 

Copper Contributor

Hi Jonasoh,

Thank you so much for promptly answering my inquiry.

Yes, you were right, I copied too much from the GitHub page.

Using the link you provided, I was able to get the right code and run successfully the PowerShell script.

 

Thank you a million!

Copper Contributor

Hi Jonasoh,

Sorry to send you this second request.

What would be the best way to send this report to an IT VP that cannot access the SSRS report but could read it in any other format?

Thank you.

Microsoft

Hi @Zirigo I normally create a report subscription to send the report via email and use the report format appropriate for the audience. 

Read more about it here: https://docs.microsoft.com/en-us/sql/reporting-services/subscriptions/subscriptions-and-delivery-rep...

Or here: https://techcommunity.microsoft.com/t5/configuration-manager-archive/configuring-email-notification-...

I tend to create the subscription via the SQL Server Reporting Services website instead of the ConfigMgr console, but both ways are appropriate. 

Copper Contributor

Thank you so much Jonasoh, this is great.
I will read the document and implement it into my environment.

Again, thank you!

 

Brass Contributor

Hi Jonason 

 

I start using this report its great.

Buit I have some problem.
I have enabled Win32_QuickFixEngineering, I can see data in resource explorer, but your report say 999 and servers go uncompliant.Screenshot_6.pngScreenshot_7.png

Microsoft

Hi @Marek_Belan that's because preview updates are not marked as "security updates". Instead, they are simply flagged as "updates".

The whole report logic though is based on cumulative security updates and that is not easy to change. 

But I updated the report solution and added cumulative security updates for Server 2022 to the main SQL query.

So, server 2022 (not the eval version) will work with report version v3.6.

Hope it helps. 

Copper Contributor

I can't get past the error below, i am not sure what may need to be installed but i can't find a good solution online about how to fix it.

 

New-WebServiceProxy : The HTML document does not contain Web service discovery information.
At I:\SMS_SRSRP\Reports\updatereporting-master\Import-SSRSReports.ps1:282 char:35
+ ... onnection = New-WebServiceProxy -Uri $ReportServerUriFull -Namespace ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (http://******...ervice2010.asmx:Uri) [New-WebServiceProxy], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.NewWebServiceProxy

Problem with connection...

Microsoft

Hi @pdantro  I can only guess from the data available in the error output. I would either say the system running the script has no access to the report server or the URL is not correct. The URL should be in the following format: http://reportserver.domain.local/reportserver It is not the URL you normally use to connect to the report server. It is the "Web service URL". Also, the script cannot upload to PowerBI Report Server, that needs to be done manually. Hope ist helps. 

Copper Contributor

Hi and thanks to nice reports !

Where do you find the ID ? ConfigMgr_P11/{5C6358F2-4BB6-4a1b-A16E-8D96795D8602}

 

Best regards Peter

Microsoft

Hi @Peter1365 it is the default ID of the ConfigMgr datasource. If you open your reporting server website (Typically something like this: http://reportserver.domain/reports) and browse to the ConfigMgr reports you should be able to find the datasource down below. 
Since it is always the same ID though, it is enough to just replace "ConfigMgr_P11" with the folder name of your reporting server and leave the ID as it is. 

Hope it helps

Best regards

Jonas

Copper Contributor

Hi i got a warning when we try to run your script and the doesnt works. 

 

Warning: The dataset ‘DataSource1’ refers to the shared data source ‘DataSource1’, which is not published on the report server.  The shar

ed data source ‘DataSource1’ must be published before this report can run.

 

Best regards

Copper Contributor

Hello,

 

The script worked perfectly but when im in my repository for the the new reports 9 of them are grayed out and when i try to run them some run fine but those with the excluded product list parameter gets an error that there is no value.

 

JamesPrice_0-1648494450944.png

JamesPrice_1-1648494477787.png

 

 

Copper Contributor

Hi @jonasoh,

 

Wonderful report and thank you for your efforts in providing this information.  However, I'm running into an issue similar to what famelton posted earlier.  The dashboard is displaying 0% compliance but when I go into the bar, I have some systems with no outstanding updates missing.  I did however, miss the part of including the Win32_QuickFixEngineering and added that to the client settings and ran a hardware scan and let it run overnight.  This morning I'm still seeing 0% compliance as in the image below:

Jdoza15_1-1648656932739.png

 

 

And when I go into the Update compliance, I have some systems showing 0 missing updates.

Jdoza15_0-1648656800015.png

Here's a screenshot of my settings for quick fix engineering:

Jdoza15_2-1648657272046.png

 

Any thoughts on what I may be missing with my config for this report for my environment?  Thanks!

Copper Contributor

Hi Jonas,

 

Is there a way of excluding third party patches like Patch My Pc?

I have ADR that deploys only once a month and PMPC releases new updates during entire month which causes Chart for "Current Rollout" to display 100% Non-Compliant, even though I selected "Exclude future updates" and picked 'Yes'. Report for single device shows my that this months CU is installed, but some recently released PMPC updates are missing, even though they are not included in SUG for PMPC ADR.

sebdar_0-1648825299839.png

 

Is there any way I could exclude for example Article ID which starts from PMPC or look only at Software Update deployments that have deadline?

Microsoft

Hi @Peter1365 regarding the "DataSource1" not yet published error. I think there is still something wrong with the value of parameter "TargetDataSourcePath". The script does not validate the existence of the data source value you provided. So, a wrong value would result in the exact error.  You can send me the command you use directly if you want so that I can have a look and be able to hopefully help you. 

 

Hi @James Price the hidden reports are by design. They only work as sub-reports from the main dashboard. The parameters are hidden and can only be passed from the dashboard, hence the error you see. The report in your screenshot is available via the "Last reboot" donut visual. 

 

Hi @Jdoza15 the properties "HotfixID", "Installed On" and "Description" of Win32_Quickfixengineering are required. I will add the info to the post in an upcoming update. I somehow missed that :) 

 

Hi @sebdar the current rollup bar is limited to Microsoft cumulative rollups for the operating system and does not show any status for 3rd Party updates or any other updates.
Your screenshot can either mean the current OS rollup is not installed at the moment, or you opened the report between the first of the month and the next Patch Tuesday and there is simply no "current" rollup for the current month available.
I will update the report solution in the next couple of days and you will be able to filter out available deployments, deployments with start and or deadline in the future.
It might help to get a more accurate compliance reporting for your scenario.
Regarding the statement: "...but some recently released PMPC updates are missing, even though they are not included in SUG for PMPC ADR"
The report has three options to show you updates which are required but not deployed.
The first option would be the "Updates approved" bar on the dashboard and the fourth sub-report which is there to tell you exactly that. That an update is missing/required but not deployed to the system. Which might not be what you want.
Option two would be the first sub-report and the column "Missing updates all". Which is also telling you that some updates are still missing no matter if deployed or not.
Option three would be the second sub-report and the list of updates and their state.
If you're seeing the PMPC updates in one of the mentioned places that is by design and should help you identify any gaps in your deployment strategy.

It is not possible to filter by KB article ID but I hope the upcoming change will help you get a better compliance overview. 

Copper Contributor

Hi @jonasoh ,

 

Thank you for your reply. I do appreciate that.

Monthly latest CU is deployed and installed, same for Feature Update. When I deep dive to the last report for device that includes all the installed and required updates, it shows me that only PMCP are not installed since they showed up after ADR run as per schedule. Before they were release by PMPC Current Rollout was showing 90% (so I have seen in it in a correct state), since the latest CU and 3rd party patches for PMPC were installed as expected. Problem arise few days after once new updates are added by PMPC. So to Current Rollup includes 3rd party ADR, maybe it considers it as a normal deployment of Updates even though they are 3rd party. Below you can see Device report.
I'm looking forward to new release where you will be able to select deployment. Thanks in advance.

sebdar_0-1649360769409.png

 

 

 

 

 

Copper Contributor

HI @jonasoh ,

Getting the below error on SSRS 2019

 

Uploading: Software Updates Compliance - Overview.rdl...
Exception calling "CreateCatalogItem" with "7" argument(s): "System.Web.Services.Protocols.SoapException: The
definition of this report is not valid or supported by this version of Reporting Services. The report definition may
have been created with a later version of Reporting Services, or contain content that is not well-formed or not valid
based on Reporting Services schemas. Details: An error occurred while parsing EntityName. Line 5542, position 34.
at Microsoft.ReportingServices.Library.ReportingService2010Impl.CreateReport(String Report, String Parent, Boolean
Overwrite, Byte[] Definition, Property[] Properties, ItemType ItemType, CatalogItem& ItemInfo, Warning[]& Warnings)
at Microsoft.ReportingServices.Library.ReportingService2010Impl.CreateCatalogItem(String ItemType, String Name,
String Parent, Boolean Overwrite, Byte[] Definition, Property[] Properties, CatalogItem& ItemInfo, Warning[]& Warnings)
at Microsoft.ReportingServices.WebServer.ReportingService2010.CreateCatalogItem(String ItemType, String Name,
String Parent, Boolean Overwrite, Byte[] Definition, Property[] Properties, CatalogItem& ItemInfo, Warning[]&
Warnings)"
At E:\Scripts\reports\updatereporting-master\updatereporting-master\Import-SSRSReports.ps1:305 char:17
+ $null = $ReportServerConnection.CreateCatalogItem(
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SoapException

Uploading: Software Updates Compliance - Overview Updates missing not deployed.rdl...
Uploading: Software Updates Compliance - Overview Pending Reboot.rdl...
Uploading: Compare Update Compliance.rdl...
Uploading: Software Updates Compliance - Per device.rdl...
Uploading: Software Updates Compliance - Per device deployments.rdl...
Uploading: Software Updates Compliance - Overview ABC Last Policy Update.rdl...
Uploading: Software Updates Compliance - Overview ABC Last Reboot.rdl...
Uploading: Software Updates Compliance - ErrorList.rdl...
Uploading: Software Updates Compliance - Overview ABC Last ADDS Logon.rdl...
Uploading: Software Updates Compliance - Overview current rollup status.rdl...
Uploading: Software Updates Compliance - Overview last rollup status.rdl...
Uploading: Software Updates Compliance - Overview ABC Last Update Install.rdl...
Uploading: Software Updates Compliance - Overview compliance list.rdl...
Exception calling "CreateCatalogItem" with "7" argument(s): "System.Web.Services.Protocols.SoapException: The
definition of this report is not valid or supported by this version of Reporting Services. The report definition may
have been created with a later version of Reporting Services, or contain content that is not well-formed or not valid
based on Reporting Services schemas. Details: An error occurred while parsing EntityName. Line 1787, position 34.
at Microsoft.ReportingServices.Library.ReportingService2010Impl.CreateReport(String Report, String Parent, Boolean
Overwrite, Byte[] Definition, Property[] Properties, ItemType ItemType, CatalogItem& ItemInfo, Warning[]& Warnings)
at Microsoft.ReportingServices.Library.ReportingService2010Impl.CreateCatalogItem(String ItemType, String Name,
String Parent, Boolean Overwrite, Byte[] Definition, Property[] Properties, CatalogItem& ItemInfo, Warning[]& Warnings)
at Microsoft.ReportingServices.WebServer.ReportingService2010.CreateCatalogItem(String ItemType, String Name,
String Parent, Boolean Overwrite, Byte[] Definition, Property[] Properties, CatalogItem& ItemInfo, Warning[]&
Warnings)"
At E:\Scripts\reports\updatereporting-master\updatereporting-master\Import-SSRSReports.ps1:305 char:17
+ $null = $ReportServerConnection.CreateCatalogItem(
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SoapException

Copper Contributor

seen my mistake my collections filter contain the ampersand "&" character

Version history
Last update:
‎Nov 09 2023 11:08 AM
Updated by: