Zoek
The Advantive Blog

Nice tools to monitor/plan your SharePoint 2010 and SQL environment:

ULS Viewer

Tool to track your ULS Log files in a user friendly interface Download ULS Viewer

SQL Server benchmark tool (I/O monitoring)

Before you deploy a new farm, we recommend that you benchmark the I/O subsystem by using the SQLIO disk subsystem benchmark tool. For details, see SQLIO Disk Subsystem Benchmark Tool

If you want to use content type publishing on a consuming web application or you want to create metadata columns, the following things are important to keep in mind. Sometimes the UI gives some strange messages that can be solved by adding the features below and set permissions for the users (who need access) on metadata service applications level.

Error with Content type publishing:
You can get a error if you want to publish the content types: "Proxy (association between service app and webapp) cannot be reached". You don't have enough permissions to access the service application.

Error with creating managed metadata column:
While creating a metadata column in a library or list you can get the following error: "You need to activate the feature to use the metadata service application". To solve this problem enable the features below.

Another error you can get is: "cannot get terms out of term store". This means you don't have enough permissions on the metadata service applications.l

Solution:
**First make sure that the users or groups have permissions to use (view or contribute or full control) the metadata service application.**

If you want to use this feature that's part of the metadata service application, you need to activate two features on WebApp level, these features can't be through the UI, so use the powershell script:

enable-spfeature -identity 7201d6a4-a5d3-49a1-8c19-19c4bac6e668 -URL http://<YourWebApp>

enable-spfeature -identity 73EF14B1-13A9-416B-A9B5-ECECA2B0604C -URL http://<YourWebApp>

After installing the following features are available:

MetaDataNav                            7201d6a4-a5d3-49a1-8c19-19c4bac6e668    Web
TaxonomyFieldAdded             73ef14b1-13a9-416b-a9b5-ececa2b0604c     Site

This has really improved in SP2010. Now you can write to the ULS logs easily even with SharePoint Foundation. All you have to do is this:

SPDiagnosticsCategory diagCat = new SPDiagnosticsCategory(

"My category",

TraceSeverity.Monitorable,

EventSeverity.Error);

 

SPDiagnosticsService diagSvc = SPDiagnosticsService.Local;

diagSvc.WriteTrace(

0, // custom trace id

diagCat,

TraceSeverity.Monitorable, // logging level of this record

"Writing to the ULS log: {0}", // custom message

new object[] { "SharePoint rocks!" } // parameters

);


This will result in a nice entry in the SharePoint log file:

Works great, but not available in sandboxed solutions...

Building Performance Point Dashboards.

Within now and 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.

Example

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

Prerequisites

• 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

Steps

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

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

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

4:
The Dashboard designer start page will look like this:

5:
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.

6:
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

7:
Choose the Contoso Retail DW Datasource and click next

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

9:
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

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

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

12:
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

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

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

15:
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.

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

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

18:
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.

19:
Choose the Contoso Retail DW Datasource and click finish

20:
Rename the report to: Sample_Pie

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

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

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

24:
Call the chart: Sample_Line

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

25:
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.

26:
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.

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

28:
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.

29:
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:

30:
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:

31:
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!

 

 

 

 

 

 

 

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.

Prerequisites:
- 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

1:
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.

2:
Save the Visio diagram as a "Web drawing"

3:
New in Visio 2010 is the Data-tab, click on this tab and observe the new possibilities!

4:
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).

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

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

7:
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

8:
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:

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

10:
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.

11:
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.

12:
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:

13:
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!

With PowerPivot (codename: Gemini) for Excel 2010 users can work with loads of company data as never before. With PowerPivot, as an end user, you can create your “own cube” within Excel and simply slice and dice through these tons of information.

In this exercise, you will learn how to import and prepare data from a SQL Server 2008 R2 database into the Microsoft Project “PowerPivot” Add-in for Microsoft Office Excel 2010 (PowerPivot).

Requisites:

  • Microsoft SQL Server 2008 R2
  • PowerPivot module installed
  • Excel 2010
  • ContosoRetailDW (2008 R2 database, you can download this one from codeplex or Microsoft site.)

Exercise 1: Getting started

By the end of this exercise, you will understand:

·         How to launch PowerPivot

·         How to connect a PowerPivot to an external data source to the PowerPivot

·         How to control what data is imported into PowerPivot

·         How to create a calculated column using a Data Analysis Expression formula

 

 

·         Click Start, All Programs, Microsoft Office, Microsoft Excel 2010 (Beta)

·         Click the PowerPivot tab.

·         Click the PowerPivot window button to start the PowerPivot add-in. The add-in loads a new top-level window entitled PowerPivot Client Window.

 

·         In the PowerPivot Client Window, click the From Database button, and select From SQL Server from the list of data sources.

·         In the Server name field, enter localhost.

·         In the Database name combo-box, select ContosoRetailDW from the list. The wizard automatically creates a Friendly connection name.

·         Click the Next button to continue the running the wizard.

·         On the Choose How to Import the Data page, choose the Select from a list of tables and views to choose the data to import option and click Next.

  

·         From the list of available tables, scroll down and place a check next to the FactSales table.

·         Click the Select Related Tables button to have the wizard select those tables related to FactSales. The wizard displays a message that “6 related tables were selected”.

·         With the FactSales table still selected, click the Preview and Filter button. The wizard opens a new window where you can filter the data that it imports.

 

·         Remove the check for the SalesKey column.

 

·         Scroll to the right until you can see the CurrencyKey column. Remove  the check from the CurrencyKey column.

 
 

·         Click OK to apply the filter and return to the wizard. Notice that the Filter Details column now shows Applied filters.

·         Click on the table name FactSales in the Friendly Name column and change the name to Sales.

·         Click Finish to start the import and prepare process.

 

Note: As the import process progresses, the dialog provides you with information about the number of rows transferred.

 

Note: Notice how PowerPivot has transferred almost four million rows from the Sales table. With more memory, you could work with 100 million row datasets.

  

·         Once the import process is complete, click the Details button in the Message column to review any status messages. Generally you only need to do this if any errors occurred.

 
 

·         Click OK, then Click Close to close the wizard and return the PowerPivot Client Window.

·         At the bottom of the window, you will see a tab for each imported table. Right click on the DimChannel tab and choose Rename from the context menu.



·         Change the name to Channel. You can rename the tables to make it easier for you to work with them.

·         Click on the Sales tab.

·         Scroll all the way to the right until you can see the Add Column column.



·         Select Add Column.

·         In the formula bar enter =[SalesAmount] – [TotalCost] and press Enter. PowerPivot creates the new column and updates the screen with your calculation.


 

·         With the new CalculatedColumn1 column selected, right click and select Rename Column from the context menu.

 
 

·         Type Profit to change the column name and press Enter.

·         Click the PowerPivot button in the upper left corner of the application window and select Save.

 
 

·         Change the path to the desktop and name the file ContosoSales.xlsx and click Save.

·         Once PowerPivot has saved the file, continue to the next exercise.

Exercise 2: Work with data

In this exercise, you create a sales report in Excel 2010 using PowerPivot as your in-memory data source containing almost four million rows.

By the end of this exercise, you will understand:

·         How to create a PivotTable and PivotChart report connected to PowerPivot

·         Use data slicers to filter data

Note: Exercise 2 assumes you have completed Exercise 1 and that Excel 2010 and the PowerPivot Client Window are still open.
 

·         If necessary, click the ContosoSales.xlsx button on the Task Bar to activate the PowerPivot Client Window.

·         Select the PivotTable button and from the drop-down menu, choose the Chart and Table (Vertical) menu option. PowerPivot will return you to Excel window.

 
 

·         In the Insert PivotTable dialog, choose the Existing Worksheet option and click OK.

 
 

·         In the PowerPivot Task Pane, scroll to the bottom of the list of tables until you find the Sales table. Then find the Profit field and place a check next to it.

·         Next, find the ClassName field in the DimProduct table. Drag and drop it into the Axis Fields box.

 
 

·         Now find the ChannelName field in the Channel table. Drag and drop it into the Row Labels box.

·         Place a check next to the TotalCost field in the Sales table. You should note that Excel adds it under the existing Profit field in the Values box and to the right of the Sum of Profit column in the PivotTable.

·         Click the drop-down menu on the Sum of Profit field in the Values box and select Move Down.

·         Click on the chart, and then place a check next to the SalesAmount field in the Sales table.

·         Click the drop-down menu on the Sum of SalesAmount field in the Values box and select Move to Beginning.

·         On the PivotTable, select the cell with the text Row Labels (it should be cell A1). Change the value to Class / Channel.

·         Change the Sum of SalesAmount column header to Sales Amount.

·         Change the Sum of TotalCost column header to Total Cost.

·         Change the Sum of Profit column header to Profit. The headers should now all be changed.

·         Highlight all of the cells in the PivotTable that contain numeric figures.

 

·         Click the Home tab on the Ribbon followed by the $ symbol to format the selected values.

·         Next, click the Format button and from the drop-down menu, choose the AutoFit Column Width command.

 
 

·         Select the Sheet1.

·         On the PivotChart, select the Y Axis label, then right click and select Format Axis.

·         In the Format Axis dialog, change the Display units to Thousands.

 
 

·         Choose the Number option from the list of pages.

·         Choose Currency from the Category list.

·         Change the Decimal places to 0 and click Close.

 
 

·         Choose the Number option from the list of pages.

·         Choose Currency from the Category list.

·         Change the Decimal places to 0 and click Close.

 

·         If you would like to resize the chart. Click the right side of the charge on the grab handle. Drag to left until it is the width that you desire.

·         In the Gemini Task Pane, locate the GeographyKey field under the DimStore table. Drag and drop it to the Slicers Horizontal box.

·         Find the PromotionName field in the DimPromotion table. Drag and drop it to the Slicers Vertical box.

·         Finally, locate the Manufacturer field in the DimProduct table. Drag and drop it to the Slicers Vertical box.

·         Right click on the Horizontal Slicer: GeographyKey, and select Slicer Settings.

·         Change the Caption from GeographyKey to Country and click OK.

·         Repeat the process and change the title of the first Vertical Slicer from PromotionName to Promotion.

 
 

·         In the Country slicer, select only one of the fields such as 731. Notice how the PivotChart and PivotTable update in real time. Play around with other slicers to get a feel for how the real time analysis works.

·         Close Excel by clicking the File and select Exit.

·         If prompted to save your changes, do so. Excel will close the PowerPivot Client Window. 

The Content By Query webpart (CQWP) is one of the most powerful and most commonly used tools in SharePoint. On top of that it also highly customizable. A big downside is that customizing the CQWP is tedious work. Especially if you do not want to alter SharePoint native files.

When I was working with the CQWP in SharePoint 2010 I found that most of the know nuisances are still there. For instance the ItemXslLink (and others) are still not configurable in the webpart configuration panel. But it seems one big improvement has been made: You do not longer have to set the CommonViewFields property (well, not if you do it right).

 

 

The SharePoint CQWP actively looks in the XSL style sheets for XML attribute references (@) it can’t resolve. If it finds them it will presents the user the possibility in the CQWP toolpart to map these attributes to SharePoint fields. For instance by default SharePoint would map the @Description attribute to the Comments field.

Even nicer is that you can even map multiple fields to 1 attribute. If the first field is empty the value of the second field is used.  

The new friendlyer Content By Query WebPart of SharePoint 2010

 

 
<xsl:template name="NoImage" match="Row[@Style='NoImage']" mode="itemstyle">
<xsl:variable name="SafeLinkUrl">
<xsl:call-template name="OuterTemplate.GetSafeLink">
<xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="DisplayTitle">
<xsl:call-template name="OuterTemplate.GetTitle">
<xsl:with-param name="Title" select="@Title"/>
<xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>
</xsl:call-template>
</xsl:variable>
<div class="item link-item">
<xsl:call-template name="OuterTemplate.CallPresenceStatusIconTemplate"/>
<a href="{$SafeLinkUrl}" title="{@LinkToolTip}">
<xsl:if test="$ItemsHaveStreams = 'True'">
<xsl:attribute name="onclick">
<xsl:value-of select="@OnClickForWebRendering"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="$ItemsHaveStreams != 'True' and @OpenInNewWindow = 'True'">
<xsl:attribute name="onclick">
<xsl:value-of disable-output-escaping="yes" select="$OnClickTargetAttribute"/>
</xsl:attribute>
</xsl:if>
<xsl:value-of select="$DisplayTitle"/>
</a>
<div class="description">
<xsl:value-of select="@Description" />
</div>
</div>

 Example snippet of itemstyle.xsl the @Description and @Title attributes are highlighted.

Krassen in de productieomgeving of gestructureerd doorvoeren?

In omgevingen waar informatiesystemen gerealiseerd en onderhouden worden is het, om kwaliteit en continuïteit te kunnen waarborgen, belangrijk om wijzigingen op een gestructureerde manier te ontwikkelen, testen, te accepteren en uit te rollen. Activiteiten van ontwikkelaars, testers, klant en gewone gebruikers dienen daarom strikt gescheiden te worden.

OTAP is een omgeving bestaande uit:

  • Ontwikkelomgeving     – hier wordt nieuwe functionaliteit, aanpassingen aan bestaande functionaliteit en uitbreiding op bestaande functionaliteit ontwikkeld.
  • Testomgeving                  – hier wordt de ontwikkelde functionaliteit, of het nu nieuw, gewijzigd of uitgebreid is, getest op het functioneren.
  • Acceptatieomgeving     – hier wordt de geteste en door de testers goedgekeurde functionaliteit aangeboden aan de aanvrager(s), ook wel acceptanten genoemd, ter acceptatie.
  • Productieomgeving       – dit is de omgeving waarop de dagelijkse werkzaamheden worden uitgevoerd.

Het inrichten van een OTAP-omgeving heeft alleen zin als de daarbij behorende rollen, rechten en processen ook geïmplementeerd worden in alle 4 de onderdelen. Wat wij veel zien in de praktijk, is dat er een OTAP-omgeving opgetuigd wordt zonder dat de daarbij behorende rechten, rollen en verantwoordelijkheden worden toegepast. In deze situatie kunt u, net zoals er nog steeds veel organisaties zijn, alleen een productieomgeving inrichten.

OTAP is duur
Zeker in deze tijd van meer met minder (kostenbesparing) krijgen wij vaak de opmerking: OTAP-inrichting is duur. Het klopt dat een OTAP-omgeving extra investeringen vergt. Maar OTAP inrichten zonder de rollen, rechten en processen toe te passen, is minstens 2 keer zo duur. Wijzigingen niet getest uitrollen in de productieomgeving, kan zelfs nog vele malen duurder zijn. Denk hierbij aan mogelijk dataverlies, of verlies van productiviteit van de collega’s bij een rolback (recovery).

Moet OTAP identiek zijn?
Een OTAP-omgeving is voor iedere organisatie anders. Er moet vanuit gegaan worden dat er ten minste een test en acceptatie (gecombineerd) beschikbaar is met dezelfde servicesverdeling als de productieomgeving.

Wat gaat er mis bij OTAP?
In veel gevallen wordt de OTAP-omgeving neergezet zonder de rechten, rollen en processen toe te passen. Buiten dit moet u er zich van bewust zijn dat een goede OTAP-inrichting rivaliteit zal oproepen tussen ontwikkelaars, functioneel (applicatie)beheerders en technisch beheerders.

Waar gaat het vaak fout:

                ·         Er wordt meteen gestart met de productie

·         Ontwikkelaars krijgen teveel rechten op de TAP-omgeving

·         Geen goede governance

·         Geen deploymentplan (inclusief rolback scenario)

·         Denken: ik heb toch OTAP (maar geen rechten, rollen e.d.)

·         Volop in de valkuil lopen

Mijn mening of OTAP noodzakelijk is
Ja, maar een volledige OTAP is niet voor alle organisaties van toepassing. Het is wel zeer belangrijk dat voorkomen wordt dat er direct in de productieomgeving aanpassingen (anders dan content) of uitbreidingen worden doorgevoerd.

 

Samen met Interoute, een vooraanstaande aanbieder van (inter)nationale telecommunicatiediensten in Europa bouwen wij een nieuwe webomgeving voor Kiwanis kristoffel Bocholt (belgië) op basis van de nieuwste Microsoft-technologie. Vooruitlopend op de wereldwijde introductie van Microsoft SharePoint 2010, welke pas per 12 mei beschikbaar komt voor het grote publiek, zullen wij deze technologie inzetten om de portalomgeving te realiseren en op 12 april al over te dragen aan Kiwanis . De reden voor dit initiatief is dat zowel Interoute als wij het gedachtegoed en de goede doelen van Kiwanis een warm hart toedragen.

Delen

Voor Kiwanis kristoffel Bocholt (belgië) zal een nieuwe internetsite worden gerealiseerd. Op deze site zullen informatie en ontwikkelingen met betrekking tot (nieuwe) Kiwanis-projecten met het publiek gedeeld worden. Eveneens wordt er een samenwerkingsomgeving gebouwd waarin de leden van Kiwanis interne informatie, zoals notulen, commissies en dergelijke met elkaar kunnen delen. Tot slot wordt er een Kiwanis-community gebouwd waarbinnen de leden zowel informatie met betrekking tot Kiwanis als zakelijke informatie met elkaar kunnen delen. Bijvoorbeeld: waar ben ik mee bezig?, waar heb ik ervaring mee?, enzovoort. Deze nieuwe web-omgeving wordt door ons gebouwd, Interoute host deze omgeving en Microsoft stelt door middel van een fundprogramma de licenties beschikbaar.

Interoute

Interoute is een vooraanstaande aanbieder van (inter)nationale telecommunicatiediensten in Europa. Het netwerk van Interoute is het grootste in Europa en biedt een ongeëvenaarde homogeniteit, bereik en capaciteit. De producten en diensten omvatten bandbreedte, virtuele privé-netwerken, internettoegang met hoge snelheid en transit, beheerde hosting, communicatiediensten en streaming van media. De samengevoegde netwerkactiva van Interoute vertegenwoordigen één van de grootste en meest geavanceerde spraak- en datanetwerken in Europa.

Kiwanis

Kiwanis is een internationale organisatie van autonome clubs waar mensen met de meest uiteenlopende beroepen elkaar ontmoeten. Onder het motto "We Build" streven de Kiwanis-clubs naar de uitvoering van effectieve humanitaire acties die zowel sociale als culturele doelen dienen. Deze acties hebben vaak een plaatselijk karakter maar ze kunnen zich ook uitstrekken tot regionale, nationale en zelfs internationale projecten. De clubs proberen vooral dáár met raad en daad te ondersteunen waar overheid en hulporganisaties geen bijdrage kunnen of willen leveren. De wil om snel, individueel en wars van bureaucratie te helpen, motiveert het werk van Kiwanis.

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:

(Get-SPFarm).Id

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”):

Get-SPTopologyServiceApplication

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:

(Get-SPFarm).Id

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.
 
Microsoft Gold Partner
Information Worker Solutions
Networking Infrastructure Solutions
Advanced Infrastructure Solutions
ISV/Software Solutions
Security Solutions
© COPYRIGHT ADVANTIVE 2010 | LEGAL NOTICE