Saturday, June 15, 2013

Create PerformancePoint Content List Programmatically

Create PerformancePoint Content List Programmatically


During one of PerformancePoint project, we need to create a custom PerformancePoint Content list to save our PerformancePoint reports.

First as usual I created the list using XML schema and everything works fine until I deployed it to staging environment.

In staging environment, if I try to create a report using Dashboard designer, I will get an error as

"You do not have permission to run a query using this report."

For saved report in the list, when try to display the report, there is an error

"The report no longer exists or you do not have permission to view it."

In the SharePoint event log, there is

06/14/2013 16:39:28.96  w3wp.exe (0x2468)                        0x182C SharePoint Foundation          Logging Correlation Data       xmnv Medium   Name=Request (GET:http://server1000:80/pps1/_layouts/ppswebparts/ReportViewPreview.aspx?SiteLocation=http%3a%2f%2fserver1000%2fpps1%2fxyz&ItemLocation=%2fpps1%2fxyz%2fLists%2fSavedReports%2f3_.000) edeeac52-ede6-4a34-b7d7-73ec6ac14012
06/14/2013 16:39:28.98  w3wp.exe (0x2468)                        0x182C SharePoint Foundation          Logging Correlation Data       xmnv Medium   Site=/pps1 edeeac52-ede6-4a34-b7d7-73ec6ac14012
06/14/2013 16:39:28.98  w3wp.exe (0x2468)                        0x182C SharePoint Foundation          Topology                       e5mc Medium   WcfSendRequest: RemoteAddress: 'http://ppsdev06:32843/3fc88cafe222497aa89ab77622ed491b/PerformancePointService.svc' Channel: 'Microsoft.PerformancePoint.Scorecards.IBIMonitoringServiceApplication' Action: 'http://www.microsoft.com/performancepoint/scorecards/IBIMonitoringServiceApplication/GetAnalyticReportView' MessageId: 'urn:uuid:6aa61912-71a0-4feb-895f-b34743b23cd4' edeeac52-ede6-4a34-b7d7-73ec6ac14012
06/14/2013 16:39:28.99  w3wp.exe (0x2468)                        0x182C PerformancePoint Service       PerformancePoint Services      ef8z Critical An exception occurred while rendering a Web control. The following diagnostic information might help to determine the cause of this problem:  Microsoft.PerformancePoint.Scorecards.BpmException: The report no longer exists or you do not have permission to view it.  PerformancePoint Services error code 20700. edeeac52-ede6-4a34-b7d7-73ec6ac14012
06/14/2013 16:39:29.02  w3wp.exe (0x2468)                        0x182C SharePoint Foundation          Topology                       e5mc Medium   WcfSendRequest: RemoteAddress: 'http://ppsdev06:32843/3fc88cafe222497aa89ab77622ed491b/PerformancePointService.svc' Channel: 'Microsoft.PerformancePoint.Scorecards.IBIMonitoringServiceApplication' Action: 'http://www.microsoft.com/performancepoint/scorecards/IBIMonitoringServiceApplication/GetSettingValue' MessageId: 'urn:uuid:a9e31515-75c1-4df5-9f43-a98aafb52ac0' edeeac52-ede6-4a34-b7d7-73ec6ac14012


In Windows Event Viewer, there  is error

"An exception occurred while rendering a Web control. The following diagnostic information might help to determine the cause of this problem: Microsoft.PerformancePoint.Scorecards.BpmException: The report no longer exists or you do not have permission to view it. PerformancePoint Services error code 20700."


The solution:

The solution is to use SharePoint object model to create the PerformancePoint Content List and don't use the XML schema.

I think the reason is that when PerformancePoint Content List is created there is some OOTB code runs and set the list to use unattended service account to call the web service. When everything runs on the same machine, it just works fine. When PerformancePoint service 'PerformancePointService.svc' runs on a different server, the list created from XML schema cannot use the proper account to call the service on a different machine.

No comments:

Post a Comment