Recently we had a situation, where we needed to import a CRM organization from one environment to another. To help with this, we were sure to make use of the import speed fix in RU8. The challenge though was that the source environment used SQL Reporting Services 2005, while the target environmented used SQL Reporting Services 2008.
During the import we got the following error:
Error| Import Organization (Name=CRMTEST, Id=79a213fe-7f89-df11-95e8-00505692406b) failed with Exception:
Microsoft.Crm.CrmReportingException: The report definition is not valid. Details: The report definition has an invalid target namespace '_http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' which cannot be upgraded. ---> System.Web.Services.Protocols.SoapException: The report definition is not valid. Details: The report definition has an invalid target namespace '_http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' which cannot be upgraded. ---> The report definition is not valid. Details: The report definition has an invalid target namespace '_http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' which cannot be upgraded.
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at Microsoft.Crm.ReportingServices2005.ReportingService2005.CreateReport(String Report, String Parent, Boolean Overwrite, Byte[] Definition, Property[] Properties)
at Microsoft.Crm.Reporting.ReportServer.UploadReport(String path, Byte[] reportDefinition, String name, String description)
--- End of inner exception stack trace ---
at Microsoft.Crm.Reporting.ReportServer.UploadReport(String path, Byte[] reportDefinition, String name, String description)
at Microsoft.Crm.Reporting.ReportServer.UploadReport(SRSReport report, String reportId, String name, String description)
at Microsoft.Crm.Setup.Server.Utility.ReportsUtility.OrganizationPublishReportsScaleGroup(IDbCommand command, Uri reportingUrl, String orgUniqueName)
at Microsoft.Crm.Tools.Admin.DBImportHelper.RePublishReports(IDbCommand command, String organizationUniqueName, Uri reportUrl)
at Microsoft.Crm.Tools.Admin.ImportOrganizationInstaller.Import(Guid organizationId, String organizationUniqueName, String organizationFriendlyName, String sqlServerName, String databaseName, Uri reportServerUrl, String privilegedUserGroupName, String sqlAccessGroupName, String userGroupName, String reportingGroupName, String privilegedReportingGroupName, ICollection`1 users, MultipleTenancy multipleTenancy)
The fix was simple, although not neccessarily obvious. If we read the error, the issue seems clearish: The namespace "http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition" which is defined in the RDL of a Report was not found or is invalid.
But why was it not valid or not found? The problem is that CRM relies on the client-side reporting components provided by the Microsoft Report Viewer Control to interact with the SSRS server. In this case, the server only had the 2005 version of the control installed and did not have the 2008 version. Installing the 2008 version and re-running the import fixed the issue. You can download the latest version of this control here:
Enjoy,
This posting is provided "AS IS" with no warranties, and confers no rights.