Im Laufe meiner langjährigen SharePoint-Projektarbeit trat folgendes Szenario immer wieder auf, so dass ich dem Thema den heutigen Artikel widmen möchte.

Szenario:

Es wird eine SharePoint-Lösung inklusive Inhaltstypdefinition für einen Kunden konzipiert und entwickelt. Während der Entwicklung werden diverse Systeme mit dem aktuellen Entwicklungsstand hochgezogen und fortlaufend gepflegt. (Dies sind in der Regel Entwicklungs-, Integrations- und Test-Systeme). Im Laufe der Entwicklungsphase oder – noch schlimmer – nach der Installation beim Kunden fällt auf, dass noch ein oder zwei Inhaltstypspalten mehr benötigt werden. Also ändert ein Entwickler kurzer Hand die Inhaltstyp-Definition und rollt das Inhaltstyp-Feature erneut aus.

Alles scheint wunderbar zu funktionieren, bis man bedauerlicherweise feststellen muss, dass alle bereits angelegten Listeneinträge (Seiten, Wiki-Einträge, etc.), die diesen Inhaltstyp verwenden, nicht aktualisiert wurden.

Und was nun?! Alle Inhalte verwerfen und neu aufbauen? Das kostet in Anbetracht der Vielzahl an beteiligten Systeme viel Arbeit und vor allem Nerven!

Diesen Mehraufwand sparen wir uns bei der HanseVision gerne und haben ein kleines (aber mächtiges) Tool für unseren Entwicklungskomponenten-Baukasten implementiert, das unsere Systeme jederzeit Abgleichen kann.

Aber – warum werden die Listen-Inhaltstypen nicht synchronisiert?

Dieses ungewöhnliche Verhalten ist erstaunlicherweise der SharePoint-Standard und besteht schon seit den Anfängen des MOSS. Der Grund für das Verhalten ist laut Microsoft, die Revisionssicherheit zu gewährleisten. Daher ist jeder Inhaltstyp, der einer Liste zugewiesen wurde, “nur” eine Kopie des Website-Inhalttyps und bekommt Änderungen am Original daher nicht zwingend mit.

Für Dienstleister, die immer wieder mit neuen Anforderungen und Änderungen der Inhaltstypen konfrontiert werden, ist dieses Verhalten allerdings eine echte Herausforderung.

Unter SharePoint 2010 gibt es mittlerweile sogenannte „Upgrade Actions“, um Inhaltstypen anzupassen. Dazu muss allerdings das Inhaltstyp-Feature sauber versioniert werden. Und das kann ggf. unschön sein, wenn bei der Auslieferung an den Kunden das Feature schon die Version 15.0.0.0 hat.

Upgrade Action (Spalte hinzufügen):

<AddContentTypeField ContentTypeId=“0x010100F15ADB2FA333AD49848E7E01BC79C9750202″

FieldId=“{b63c6371-f774-451d-b4fb-5679625fafd5}“

PushDown=“TRUE“ />

Das Inhalttyp-Synchronisierungs-Tool

Da gerade große Veröffentlichungs Portale mit sehr vielen Inhaltsseiten und Spalten unter diesem Verhalten leiden, habe ich mich vor einiger Zeit der Herausforderung gestellt und und einen Mechanismus entwickelt der das Abgleichen bestehender Listen-Inhaltstypen leisten kann.

Nach kurzer Entwicklungszeit und diversen Absprachen mit Microsoft war es dann vollbracht! Der Mechanismus war fertig und wurde in einer “Console Application” verpackt, um sie auf den Entwicklungs- und Build-Systemen in das Post Deploy-Skript aufnehmen zu können.

image

Die Applikation nimmt als Eingabe-Parameter die URL der Websitesammlung und den Gruppennamen der Inhaltstypen entgegen. (Alle Inhaltstypen zu einem Projekt werden bei der HanseVision in einer Gruppe gekapselt)

Was macht die Applikation unter der Haube?

  1. Es ordnet alle Website-Inhaltstypen der jeweiligen Gruppe, so dass die vererbten Inhaltstypen hinter Ihren Eltern stehen.
  2. Es prüft die Feature-Definition, ob alle Website-Inhaltstypen auch wirklich aktuelle sind.
  3. Es sucht nach einem Listen-Inhaltstype pro Website-Inhaltstyp. Ist einer gefunden, dann wird das Delta ermittelt und korrigiert.

Das Tool ist in Punkto Kosten-Nutzen-Verhältnis unschlagbar und somit für uns unverzichtbar!

Leave a comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.