Welcome on my SharePoint 2010 blog


My name's Roy. I'm a dutch SharePoint & BI consultant/architect at Advantive B.V. At this moment I'm busy with some big SharePoint 2010 projects in The Netherlands. In all the projects I've got different roles, like: Business consultancy, Lead Consultant, Architect (logical and technical), Development and Teaching/courses.

Products where you can ask me about are: SharePoint, Visual Studio, SQL Server, PowerPivot, Analysis and Reporting Services, Visio Services, InfoPath, PerformancePoint Services, Team Foundation Server, Office line.

I love to work and to write about Microsoft SharePoint 2010 so, feel free and read/comment my Blogs!


Monday, April 26, 2010

Performance Services 2010: Monitor, Analyse, Plan!

Building Performance Point Dashboards.

Within a few days the new RTM version of SharePoint 2010 (SP2010) will finally be launched! As we already know from the Beta and RC version: SP2010 will bring us a lot of new and cool stuff!

One of these  new things is: Microsoft Performance Point Services 2010 (PPS2010). In the 12 Wave it was a separate product called: Performance Point Server 2007. Within the 14 wave it is integrated in the SP2010 product stack as a separate Service Application.

With PPS2010 you can do your performance management based on underlying datasources. PPS2010 can be split into three parts:

• Monitoring; What is happening and what is happened?
• Analysis; Why has it happened?
• Plan/forecast; What is going to happen/next steps, what do I want to happen?

To answer the above questions you can generate PPS2010 functionalities like:
(Balanced) Scorecards, KPI's, analytical reports (with drilldown) and trend analysis.

Withing this blog we will show you an example of the easyness of creating a
Performance Point dashboard within PPS2010/SP2010.

• SharePoint 2010 Enterprise
• SQL Server 2008 (x64)
• Contoso Retail DW SQL2008 Example DB (see: codeplex.com or Microsoft.com)
• Business intelligence center template created in SharePoint 2010, from this
   site you can start the Performance Point Dashboard Designer
• A Secure Store Service Application with a master key and application key set.
• A PPS2010 target application ID in Secure Store service application with the
   the credentials set for this target application ID

From the business intelligence center start the Dashboard Designer. Click on
create dashboards and then click start using performance point services.(see picture below).

Click on the button "Run dashboard designer". The Performance Point service will now download and open the designer application from the SharePoint Server.

The next time you can open the dashboard designer from the Start-menu.

The Dashboard designer start page will look like this:

Make sure that you first created a connection to the Contoso Retail DW in the dashboard designer. This will not be shown in this example.

The next step is to create the scorecard where the KPI's will be integrated. On the create tab click Scorecard. Choose for Microsoft - Analysis Services

Choose the Contoso Retail DW Datasource and click next

Select Create KPI's from SQL Server Analysis Services measures and click Next

Click Add KPI (this will give you the possibility to add an existing KPI from the cube. If you choose for Select KPI you can choose a KPI you created in this workspace. Rename the name of the KPI to: Sample_KPI

In the next screen select a dimension, choose Sales Territory country

Next, choose a measure filter for the target and the actual of the KPI, Choose Greater China as actual and India as target.

In the Add member columns screen, check <Add column members> and choose the date.calender Year field in the dimension textbox. In the member textbox select the years 2008 and 2009

Choose the location in SharePoint (document library) where you want to place your Dashboard content, click Next.

Click Finish and rename the scorecard to: Sample_Scorecard. Your scorecard should look like this:

In the details pane (right) open the dimensions group and pick the field <Category Name> and move it to the right hand side of the <Sample KPI> in the scorecard.

A Screen opens, right click <All Products> and choose Autoselect members --> Select Children. All the underlying categories will dynamically be shown in the scorecard.

Click update in the edit-tab and the scorecard should look like the following:

When you created your first scorecard, we will go further by creating an analytic report, click on the create-tab on analytic chart. You can see that you can also choose an Excel Report or Reporting Services Report.

Choose the Contoso Retail DW Datasource and click finish

Rename the report to: Sample_Pie

Drag the dimensions, measures or named sets you want on to the report designer as shown in the picture below:

Now you can change your report type to: Pie Chart by right clicking on the report

Create another Analytic chart with report type: Line Chart. Choose the dimensions and measures that areshown below:

Call the chart: Sample_Line

On the Create-tab, click KPI details. Rename this one to Sample_KPIDetails.

The last step is to create a dashboard and drag and drop all the items we just created on the dashboard. On the Create-tab click Dashboard and choose 2 zone dashboard. In fact: you're now are going to create a SharePoint site with some webparts in two webpart zones.

Give the page a name, e.g.: Sample_Dashboard. Right click on the dashboard and choose add below. You now will create a zone below, after that click in the new zone and choose: split zone. You now have created a four webpart site.

Now drag and drop your items from the details pane to the dashboard until your screen looks like the following:

Keep your mouse on the scorecard part of the dashboard and drag the Member Unique Name to the Piechart part, you've now created a connection between the both parts.

Drag the Cells context field to the KPI details part of the dashboard, after you've done with this you're dashboard should look like the following:

The most exiting part!! Right click on the dashboard in the workspace browser and choose: Deploy to SharePoint. You're new dashboard will now be uploaded to SharePoint (it creates a new page, with the necessary webparts and publishes all your items to SharePoint). You're Dashboard should look like this:

If you click on Performance Point Content you can see the items you've just created.

Congratulations! You've just had you're first PPS2010 experience!

Thursday, April 8, 2010

Visio Services and SharePoint 2010 - A great link!

With the new product of Visio Services 2010 and it's integration with SharePoint 2010 you now have the possibility to integrate your own Visio diagrams within your own SharePoint 2010 environment. But that's not all, you can also make dynamic Visio diagrams by connecting the Visio Shapes to external datasources.
This blog shows an example of how to create a Visio diagram with external data and publish it to SharePoint 2010.

- Visio Services 2010
- SharePoint 2010
- An external datasource
- Target application ID created in Secure Store Service App
- Target application ID connected to Visio Service App

Open Visio and create your own Visio diagram, I created a diagram which shows revenue per country per employee. You can also make a diagram which visualizes your network infrastructure or shows a specific process (flowchart) of your company.

Save the Visio diagram as a "Web drawing"

New in Visio 2010 (Professional and Premium versions) is the Data-tab, click on this tab and observe the new possibilities!

Click on Link data to shapes, choose your datasource (I've chosen SQL Server) and select the data/columns you want to use in your diagram (the data you want to link to your Visio Shapes).

When you successfully created a connection you see the External Data Window below your Visio diagram with your chosen resultset.

If you're dataset is correct, click in the datatab on Data Graphics and create an new data graphic.

Click in the top left on new item (image below) and now you can add some treshholds and checks. These items will be connected to your data graphics item you just created. See examples below:

Example 1

Example 2

Example 3

Now it's time to connect the data to the Visio shapes, there are two ways to do this:

- Select a shape in the Shape selector en pick a specific row in de external data window and drag this row to the diagram.

- Drag a shap to the diagram en connect a row to the shape afterwards
After you connected your rows your diagram could look like this:

On your right hand side you can see the Shape data window (see picture above)

Now we're ready to save (share) it to SharePoint, click on file and the backstage appears, choose share and choose a Sharepoint library where you want to store the Visio Web Drawing.

Open a SharePoint site and edit the page, choose to insert a new webpart and choose Office client applications, and Visio Web Access. Click add to add the webpart to your site.

In the tool pane of the webpart, select your new Visio diagram, change some settings if you think it's necessary. Click apply and ok in the webpart-properties. Check-in your page and your SharePoint site with Visio could look like this:

Visio ask you if you want to refresh the underlying data when the diagram refreshes. Click on "Refresh always" if you want to do that.

Congratulations: Your first Visio integration with SP2010 is a fact!

Saturday, April 3, 2010

Publish a Managed Metadata Service cross-farm

Most important part (different than Technet document) is marked in Purple!
[Please keep in mind that this applies to a pre-release version of SharePoint Server 2010, and may change before the product is released]

Some of the service applications in SharePoint Server 2010 support sharing across SharePoint farms, as described in this article from TechNet. This post describes how to do it with a Managed Metadata Service.

To be able to subscribe to content types and terms from a Managed Metadata Service in another farm, there are a few things you need to do. Although this could seem like a somewhat cumbersome procedure for accomplishing something rather simple, it’s necessary for having control of your systems, and keeping them protected from intruders. Besides, you only have to do it once, and it really shouldn’t take you more than 10 minutes when you know what to do, which is exactly what I’m about to explain to you.

Most of the operations can be performed using SharePoint 2010 Central Administration, but I encourage you to use PowerShell instead, as this is a lot faster once you get used to it. There are six steps you need to follow, and I recommend doing them in the following order:
  1. Set up a trust relationship between the farms
  2. Set up Application Discovery and Load Balancer Service Application permissions
  3. Publish Managed Metadata Service
  4. Connect proxy to Managed Metadata Service
  5. Add proxy to service connection group
  6. Set up Managed Metadata Service permissions
In this post, the publisher farm is the farm in which the Managed Metadata Service is running, while the consumer farm is the farm which will consume data from the publishing farm.
Before we begin, let me first briefly describe the environment we’ll be working with:
  • The publisher farm is called “Enterprise Services Farm”, and has a Managed Metadata Service application called “Enterprise Metadata Service”. This service application consists of a term store, and a content type syndication hub.
  • The consumer farm is simply called “Collaboration Farm”.
Although documentation for most of the necessary operations can be found on TechNet, I’m including the actual PowerShell commands to give you an example of how it’s done. Please note that commands with brackets like this <content> requires you to replace the brackets and content with what the content describes.
Ok, let’s get started!

Set up a trust relationship between the farms

For the server farms to be able to communicate, you need to set up a trust relationship between them. This enables the farms to know that a service request is actually coming from the farm it claims to be coming from, and also enables federated authentication of users potentially not present in both farms. Farm root certificates must be exchanged between the servers, and a STS certificate must be exported from the consumer and imported to the publisher. How to set up the trust relationship is described in detail on TechNet.
On the publisher farm, run the following commands to export the farm root certificate to c:\temp on the server:
$rootCert = (Get-SPCertificateAuthority).RootCertificate
$rootCert.Export("Cert") | Set-Content C:\temp\EnterpriseServicesRootCert.cer -Encoding byte
Run the following to export the necessary certificates on the consumer farm to c:\temp on the server:
$rootCert = (Get-SPCertificateAuthority).RootCertificate
$rootCert.Export("Cert") | Set-Content "C:\temp\CollaborationRootCert.cer" -Encoding byte

$stsCert = (Get-SPSecurityTokenServiceConfig).LocalLoginProvider.SigningCertificate
$stsCert.Export("Cert") | Set-Content "C:\temp\CollaborationSTSCert.cer" -Encoding byte
Copy the files from the c:\temp folder on the publisher farm to the c:\temp folder on the consumer farm and vice versa.
Run the following commands on the publisher farm to set up the trust relationship with the consumer farm:
$trustCert = Get-PfxCertificate "C:\temp\CollaborationRootCert.cer"
New-SPTrustedRootAuthority Collaboration -Certificate $trustCert

$stsCert = Get-PfxCertificate "c:\temp\CollaborationSTSCert.cer"
New-SPTrustedServiceTokenIssuer Collaboration -Certificate $stsCert
Finally, run these commands on the consumer farm to set up the trust relationship with the publisher farm:
$trustCert = Get-PfxCertificate "C:\temp\EnterpriseServicesRootCert.cer"
New-SPTrustedRootAuthority EnterpriseServices -Certificate $trustCert

Set up Application Discovery and Load Balancer Service Application permissions

The Application Discovery and Load Balancer Service Application, aka Topology Service, handles discovery of the farm’s service applications, providing other farms with the information necessary for them to be able to consume any of the farm’s published service applications (it also serves purposes inside the farm, but that’s not the subject of this post). The only supported rights for this service application is “Full Control”, which is what we’ll grant.
On the consumer farm, run the following command to get the id of the consumer farm:
Copy the Id output from this command, and run the following command on the publisher farm:
$security = Get-SPTopologyServiceApplication | Get-SPServiceApplicationSecurity
$claimProvider = (Get-SPClaimProvider System).ClaimProvider
$principal = New-SPClaimsPrincipal -ClaimType "http://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue <farmid from previous command>
Grant-SPObjectSecurity -Identity $security -Principal $principal -Rights "Full Control"
Get-SPTopologyServiceApplication | Set-SPServiceApplicationSecurity -ObjectSecurity $security 

Publish Managed Metadata Service

To enable content types and terms to be accessible from outside the farm, the Managed Metadata Service must be published for outside consumption. How to publish the service application is described in detail in this article.
On the publisher farm, run the following command to publish the Managed Metadata Service called “Enterprise Metadata Service”:
Publish-SPServiceApplication (Get-SPMetadataServiceApplication “Enterprise Metadata Service”)

Connect proxy to Managed Metadata Service

Next, we need to create a proxy for the “Enterprise Metadata Service” in the consumer farm. On the publisher farm, run the following command to get the URI of the “Application Discovery and Load Balancer Service Application” (which will provide the consumer farm with information about the “Enterprise Metadata Service”):
Copy the LoadBalancerUrl from the output of the previous command to the consumer farm, and then run the following command to get the URI of the Enterprise Metadata Service application, and create a local proxy for it:
New-SPMetadataServiceApplicationProxy -Name “Enterprise Metadata Service Proxy” –URI (Receive-SPServiceApplicationConnectionInfo -FarmUrl <LoadBalancerUrl from the previous command> | Where {$_.Name -eq "Enterprise Metadata Service"}).Uri

Add proxy to service connection group

Run the following command on the consumer farm to add the new proxy to the default proxy group:
Add-SPServiceApplicationProxyGroupMember (Get-SPServiceApplicationProxyGroup -default) -Member (Get-SPMetadataServiceApplicationProxy "Enterprise Metadata Service Proxy")
The result of this is that all web applications using the default proxy group will use the “Enterprise Metadata Service Proxy” too.

Set up Managed Metadata Service permissions

Finally, to allow the consumer farm to connect to the Managed Metadata Service on the publisher farm, you have to grant the consumer farm permissions to the service application. The Managed Metadata Service supports three permissions: ”Read Access to Term Store”, “Read and Restricted Write Access to Term Store” and “Full Access to Term Store”. In this example, we’ll grant the consumer farm the least permissions, “Read Access to Term Store”:
On the consumer farm, run the following command to get the id of the farm:
Copy the outcome to the publisher farm, and then run the following commands there:
$security = Get-SPMetadataServiceApplication "Enterprise Managed Metadata Service" | Get-SPServiceApplicationSecurity
$claimProvider = (Get-SPClaimProvider System).ClaimProvider
$principal = New-SPClaimsPrincipal -ClaimType "http://schemas.microsoft.com/sharepoint/2009/08/claims/farmid" -ClaimProvider $claimProvider -ClaimValue <farmid from previous command>
Grant-SPObjectSecurity -Identity $security -Principal $principal -Rights "Read Access to Term Store"
Get-SPMetadataServiceApplication "Enterprise Metadata Service" | Set-SPServiceApplicationSecurity -ObjectSecurity $security

That’s it, you’re up and running with a Managed Metadata Service that is shared between the two server farms!
The only thing left to do is to decide what you want to consume through the proxy, and configure it accordingly. You can learn more about this on TechNet.
Finally, I’d like to share some error messages I’ve received related to the tasks described here, and what was their resolution in my case, to ease your troubleshooting:
  • If you try to manage your Managed Metadata Service Proxy on the consumer farm from the SharePoint 2010 Central Administration and get the error message “The Service Application being requested does not have a Connection associated with the Central Administration web application. To access the term management tool use Site Settings from a site configured with the appropriate Connection”, this could be because your proxy has not been added to a proxy group. See Add proxy service to connection group.
  • Managed Metadata Service Proxy on the consumer farm from the SharePoint 2010 Central Administration and get the error message “The Managed Metadata Service or Connection is currently not available. The Application Pool or Managed Metadata Web Service may not have been started. Please Contact your Administrator”, this could be because your farm doesn’t have the right permissions to the Managed Metadata Service. See Set up Managed Metadata Service permissions.