So…. you want to use the PerformancePoint web service so you can extend PerformancePoint, and integrate it into bespoke applications and SharePoint. We needed to create a Web part that could show a users PerformancePoint assignments in SharePoint. So, this should be simple we know that Excel uses the webservices to get all of its PerformancePoint information, so lets just tap into that and away we go… OR not!
We were after creating a WebPart that did not require any further references and was self contained. This is where life got tricky. We needed to get all the applications within Performance Point, and then get all the Assignments for each application that are related to the requesting user.
After looking through available web services, it is not clear how to retrieve the amount of data that is required to run PPS, so that was a complication. However for now lets look at how to get the applications:
We can get the whole Biz system from the Web service using this: ( where ppsMDM is the MetaDataManager web service!)
//Get the System Data
MetaDataManager.BizSystem bizSystem = ppsMDM.GetSystem(false);
This should return the whole system to a Biz system object, however, as we found the webservice attempts to cast the array of application into a dataset, and then fails to do so, meaning that we can not get the application data. After some degree of head scratching it was decided to change the Webservice Reference.cs, so the Application list was returned as an object. This enables us to then manually deserialize the XML, into our own object and get access to the entire Application object, as we should have had. It does seem that if you are willing, and able, to use the PPS Client Dll’s, that you can hook straight into them to get this to work less painfully (thanks to Casper and his post here) you need to reference this (Microsoft.PerformancePoint.Planning.Client.Common) and any other dependant DLL’s. This is how we have deserialize this, once creating the object ArrayOfBizApplication, and BizApplication:
sb.Append(“”);
foreach (XmlNode xmlNode in xmlNodes)
{
if (xmlNode.Name.ToLower() == “arrayofbizapplication”){
sb.Append(xmlNode.InnerXml.ToString());
}
}sb.Append(“”);
XmlSerializer serializer;
System.IO.StringReader sr = new System.IO.StringReader(sb.ToString());
XmlTextReader xmlTReader = new XmlTextReader(sr);serializer = new XmlSerializer(typeof(ArrayOfBizApplication));
arrayOfBizApplicaion = (ArrayOfBizApplication)serializer.Deserialize(xmlTReader);
Now we have the array of Applications we should be able to get the Application ID’s and then the Assignements from PPS, without the need for referencing any Microsoft PPS Dll’s.
AI Assistance in Microsoft Fabric
The exponential growth of Large Language Models (LLMs) couples with Microsoft’s close partnership with OpenAI
Apr
10 reasons why it’s worth the effort to understand the value of your data
“If leaders really want to create a data driven culture, the journey starts with them!
Apr
Content Safety in Azure AI Studio
Azure AI Content Safety is a solution designed to identify harmful content, whether generated by
Apr
Model Benchmarks in Azure AI Studio
In the constantly changing field of artificial intelligence (AI) and machine learning (ML), choosing the
Apr
Celebrating International Women’s Day: from Classroom to Code
As we celebrate International Women’s Day, I want to share my journey of breaking stereotypes
Mar
Pretty Power BI – Adding Pagination to Bar Charts
Good User Experience (UX) design is crucial in enabling stakeholders to maximise the insights that
Feb
Pretty Power BI – Creating Dynamic Histograms
Good User Experience (UX) design is crucial in enabling stakeholders to maximise the insights that
Feb
Top Tips to Pass the Databricks Certified Data Engineer Professional Exam
Having recently passed the Databricks Certified Data Engineer Professional exam, this blog post covers some
Jan