Operations Manager Reports Deployment Failure: Troubleshooting and Solutions

Table of Contents

Operations Manager Reports Fail to Deploy

This article addresses a critical issue encountered in System Center Operations Manager where the deployment of reports fails, accompanied by event ID 31567. This problem typically arises after installing System Center 2019 Operations Manager in conjunction with a recent version of SQL Server Reporting Services (SSRS) 2017. This guide provides a comprehensive walkthrough to diagnose and resolve this deployment failure, ensuring the seamless operation of your Operations Manager reporting infrastructure.

Symptoms

One of the most noticeable symptoms of this issue is the absence of reports within the Operations Manager console. When navigating to the Reporting view and attempting to access any report folder, the expected list of reports is conspicuously empty. This lack of visibility into operational data can significantly hinder monitoring and analysis capabilities.

Furthermore, the Operations Manager event log diligently records error messages that provide crucial clues to the underlying problem. These error messages, typically logged under the Operations Manager log source, Health Service Modules source, and Data Warehouse task category, carry the Event ID 31567. A sample error message is shown below for better understanding:

Log Name: Operations Manager

Source: Health Service Modules

Date: <Date> <Time>

Event ID: 31567

Task Category: Data Warehouse

Level: Error

Keywords: Classic

User: N/A

Computer: <FQDN>

Description:

Failed to deploy reporting component to the SQL Server Reporting Services server. The operation will be retried.

Exception ‘DeploymentException’: Failed to deploy reports for management pack with version dependent id ‘<ID>‘. System.Web.Services.Protocols.SoapException: Uploading or saving files with .CustomConfiguration extension is not allowed. Contact your administrator if you have any questions. —>

Microsoft.ReportingServices.Diagnostics.Utilities.ResourceFileFormatNotAllowedException: Uploading or saving files with .CustomConfiguration extension is not allowed. Contact your administrator if you have any questions.

at Microsoft.ReportingServices.Library.ReportingService2005Impl.CreateResource(String Resource, String Parent, Boolean Overwrite, Byte[] Contents, String MimeType, Property[] Properties, Guid batchId)

at Microsoft.ReportingServices.WebServer.ReportingService2005.CreateResource(String Resource, String Parent, Boolean Overwrite, Byte[] Contents, String MimeType, Property[] Properties)

One or more workflows were affected by this.

Workflow name: Microsoft.SystemCenter.DataWarehouse.Deployment.Report

Instance name: Data Warehouse Synchronization Service

Instance ID: {GUID}

Management group: <Management Group Name>

Key Observations from the Error Message:

  • Event ID 31567: This ID is a strong indicator of report deployment failures within Operations Manager.
  • “Uploading or saving files with .CustomConfiguration extension is not allowed.”: This specific error message points towards a restriction in SSRS related to file extensions.
  • Workflow name: Microsoft.SystemCenter.DataWarehouse.Deployment.Report: This indicates that the issue is specifically within the report deployment workflow of the Data Warehouse component.

It is important to note that this issue is not limited to fresh installations. It can also manifest in System Center Operations Manager version 1807 after upgrading to SSRS 2017 and subsequently removing and reinstalling Operations Manager Reporting. This highlights the persistence of the problem across different upgrade scenarios.

Cause

The root cause of this report deployment failure lies within a security enhancement introduced in SSRS 2017 version 14.0.600.1274 and later. These versions incorporate a new advanced setting named AllowedResourceExtensionsForUpload. This setting acts as a security measure, restricting the types of resource files that can be uploaded to the report server by defining a whitelist of allowed file extensions.

By default, this whitelist does not include all the file extensions required by Operations Manager Reporting. Specifically, Operations Manager utilizes file extensions that are not part of the default AllowedResourceExtensionsForUpload list. Consequently, when Operations Manager attempts to deploy reports, SSRS blocks the deployment process due to these unrecognized file extensions, leading to the observed errors and the absence of reports in the console.

To visualize this restriction, imagine SSRS as a gatekeeper for file uploads. The AllowedResourceExtensionsForUpload setting is the gatekeeper’s rulebook, specifying which file types are permitted through the gate. If Operations Manager tries to upload a file type not listed in this rulebook, the gatekeeper denies entry, and the deployment fails.

This security feature is designed to prevent the upload of potentially malicious files to the report server. However, in the context of Operations Manager, it inadvertently blocks legitimate report deployment files, necessitating a configuration adjustment to resolve the issue.

Resolution 1: Modifying Allowed Resource Extensions via SQL Server Management Studio

The most straightforward solution to this issue is to broaden the scope of allowed file extensions in SSRS by adding *.* to the AllowedResourceExtensionsForUpload setting. This effectively permits all file extensions to be uploaded, resolving the conflict with Operations Manager’s report deployment process.

Here are the step-by-step instructions to implement this resolution using SQL Server Management Studio (SSMS):

  1. Launch SQL Server Management Studio: Open SQL Server Management Studio on a machine that can connect to your SSRS instance. Ensure you are using an account with sufficient administrative privileges to modify SSRS settings.

  2. Connect to the Report Server Instance: In the Connect to Server dialog box, select Reporting Services as the Server type. Enter the server name where your SSRS instance is installed. This is typically the same server where your SQL Server Database Engine is running, but it could be a separate dedicated reporting server. Specify the authentication method and provide credentials as needed, then click Connect.

    Connect to Report Server

  3. Access Report Server Properties: Once connected, you will see the report server instance in the Object Explorer pane on the left. Right-click on the name of your report server instance (e.g., MSSQLSERVER) and select Properties from the context menu.

    Report Server Properties

  4. Navigate to Advanced Settings: In the Server Properties dialog box, navigate to the Advanced page by selecting it from the left-hand menu.

    Advanced Settings in Report Server Properties

  5. Locate AllowedResourceExtensionsForUpload Setting: Scroll down the list of advanced settings until you find AllowedResourceExtensionsForUpload. This setting is typically located under the Security section.

    AllowedResourceExtensionsForUpload Setting

  6. Modify the Setting Value: Click on the Value field associated with AllowedResourceExtensionsForUpload. The current value will likely be a comma-separated list of allowed extensions. To allow all extensions, append ,*.* to the existing list. If the list is currently empty, simply enter *.*. For example, if the current value is .rdl,.rsd,.dtsx,.xmla,.biml, change it to .rdl,.rsd,.dtsx,.xmla,.biml,*.*.

    Modify AllowedResourceExtensionsForUpload Setting

  7. Apply Changes and Close: After modifying the value, click OK to save the changes and close the Server Properties dialog box.

  8. Restart SSRS Service: For the changes to take effect, you must restart the SQL Server Reporting Services service. Open the Services console (services.msc), locate the service named SQL Server Reporting Services (<InstanceName>) (where <InstanceName> is your SSRS instance name), right-click on it, and select Restart.

    Restart SSRS Service

After restarting the SSRS service, the Operations Manager report deployment process should now be able to proceed without encountering the file extension restriction. Verify the resolution by checking the Reporting view in the Operations Manager console and confirming that reports are now visible. Also, monitor the Operations Manager event log to ensure that Event ID 31567 errors are no longer being logged.

Resolution 2: Utilizing PowerShell to Configure Allowed Extensions

Alternatively, you can use a PowerShell script to modify the AllowedResourceExtensionsForUpload setting. This method is particularly useful for automation or when you prefer a command-line approach.

Here is the PowerShell script to add the *.* extension to the allowed list:

$ReportServerUri = "http://<ReportServerName>/ReportServer"  # Replace with your Report Server URL
$rs = New-WebServiceProxy -Uri $ReportServerUri'/ReportService2010.asmx?wsdl' -Namespace SSRS
$credential = Get-Credential # Enter your administrative credentials when prompted

$rs.ClientCredentials.Windows.ClientCredential = $credential

$SettingName = "AllowedResourceExtensionsForUpload"
$PropertyValue = @("*.*") # Add *.* to allow all extensions

try
{
    $rs.SetSystemProperties(@($SettingName), @($PropertyValue))
    Write-Host "Successfully added '*.*' to AllowedResourceExtensionsForUpload setting." -ForegroundColor Green
}
catch
{
    Write-Error "Error setting System Property: $($_.Exception.Message)"
}

Explanation of the PowerShell Script:

  • $ReportServerUri = "http://<ReportServerName>/ReportServer": This line defines a variable $ReportServerUri to store the URL of your SSRS instance. Replace <ReportServerName> with the actual name of your report server. If SSRS is configured with HTTPS, ensure you use https:// instead of http://.

  • $rs = New-WebServiceProxy ...: This command creates a web service proxy object ($rs) to interact with the SSRS web service. It uses the ReportService2010.asmx?wsdl endpoint, which is the SOAP endpoint for SSRS administration.

  • $credential = Get-Credential: This prompts you to enter administrative credentials that have permissions to modify SSRS settings.

  • $rs.ClientCredentials.Windows.ClientCredential = $credential: This line sets the credentials for the web service proxy object.

  • $SettingName = "AllowedResourceExtensionsForUpload": This defines the name of the SSRS system property we want to modify, which is AllowedResourceExtensionsForUpload.

  • $PropertyValue = @("*.*"): This sets the new value for the property to *.*, allowing all file extensions. Note that we are using an array @("*.*") because SetSystemProperties expects an array of values.

  • try { ... } catch { ... }: This block implements error handling. It attempts to set the system property using $rs.SetSystemProperties(...). If the operation is successful, it displays a success message. If an error occurs, it catches the exception and displays an error message.

How to Run the PowerShell Script:

  1. Open PowerShell as Administrator: Launch PowerShell with administrative privileges.
  2. Copy and Paste the Script: Copy the entire PowerShell script and paste it into the PowerShell console.
  3. Modify $ReportServerUri: Crucially, replace <ReportServerName> in the $ReportServerUri variable with the correct name of your SSRS server.
  4. Execute the Script: Press Enter to execute the script.
  5. Enter Credentials: When prompted, enter the administrative credentials for your SSRS instance.
  6. Restart SSRS Service: After running the script, you must restart the SQL Server Reporting Services service as described in Resolution 1, step 8, for the changes to take effect.

Similar to Resolution 1, after restarting SSRS, verify that reports are now deploying correctly by checking the Operations Manager console and event logs.

Choosing the Right Resolution

Both Resolution 1 and Resolution 2 effectively address the report deployment failure issue. The choice between them often depends on your preference and environment:

  • Resolution 1 (SSMS): Is generally preferred for interactive, one-time configuration changes. It provides a graphical interface, which might be more comfortable for users who are less familiar with PowerShell.

  • Resolution 2 (PowerShell): Is advantageous for automation, scripting, and managing multiple SSRS instances. It is also suitable for environments where command-line tools are favored or required.

In most scenarios, Resolution 1 using SQL Server Management Studio provides a quick and accessible solution. However, for larger deployments or when incorporating configuration changes into automated processes, the PowerShell script in Resolution 2 offers greater flexibility and efficiency.

Conclusion

Encountering report deployment failures in Operations Manager can disrupt critical monitoring capabilities. This article has provided a comprehensive guide to understanding and resolving the issue related to the AllowedResourceExtensionsForUpload setting in SSRS 2017 and later versions. By implementing either Resolution 1 or Resolution 2 and restarting the SSRS service, you can effectively restore report deployment functionality and ensure the smooth operation of your System Center Operations Manager environment.

Do you have any further questions or experience with this issue? Feel free to share your thoughts and comments below!

Post a Comment