MOSS Kalender nach Start- oder End-Datum filtern

Gestern kontaktierte mich ein Kunde, weil er es nicht schaffte, in einem SharePoint 2007 Kalender ein View einzurichten, welcher basierend auf dem Startdatum oder dem Enddatum gefiltert Einträge anzeigt. Die Site arbeitete bis vor ein paar Tagen noch mit dem SharePoint Portal Server 2003, wo er dies bisher ohne Probleme definieren konnte.

Ich habe dann das mal auf einem meiner SharePoint’s ohne Migrationshintergrund angeschaut. Völlig irritiert musste ich feststellen, dass sich so ein Filter wirklich nicht setzten lies. Damit starb meine anfängliche Vermutung, dass die SPS03-to-MOSS07 Migration das Problem war. Diverse Beiträge im Internet haben mir das nun auch bestätigt: In SharePoint 2007 Kalender kann man in einem View keinen Filter auf Start- oder/und End-Datum setzten. Eigentlich bin ich überrascht, dass ich über dieses Problem nicht schon eher angetroffen habe, ist dies ja nun wirklich nicht mein erstes SharePoint 2007 Projekt.

Variante 1: Calculated Fields

Nun gut, dem Kunde nützt kein Feedback, dass es nicht geht. Er will eine Lösung dafür – zumal es ja in der Vorgängerversion funktioniert hat. Im Internet findet man hierzu häufig die Lösung, dass man nun zwei weitere Felder hinzufügt. Beides sind calculated Fields, welche jeweils einfach die Werte der Originalfelder übernehmen (=[EndDate]). Diese berechneten Felder lassen sich dann bei der Filterdefinition verwenden.

Bei dieser Lösung berichten Andere aber davon, dass es Probleme mit der genauen Filterung von ganztägigen Ereignissen gibt. 

Variante 2: SharePoint Designer

Ich habe aber nun einen anderen Weg verfolgt: Da die gefragten Views in meinem Fall vom Setup her eher statisch sind (Filter und Feldauswahl ändern sich nicht), hab ich den View im SharePoint Designer 2007 editiert. Hier mein Vorgehen dazu:

  1. Im besagten Kalender einen neuen View erstellen (oder sich den Namen des zu bearbeitenden Views merken). 
  2. In diesem View einen Filter auf ein verfügbares Feld vom Typ DateTime setzen (z.B. “Erstellt”). 
  3. Den Vergleichsoperator und den Vergleichswert setzt man schon analog dem Endergebnis. Da ich alle Ereignisse anzeigen will, welche in der Vergangenheit liegen, lautet meine Filterdefinition “Erstellt ist kleiner als [Heute]“.
  4. Nun öffnet man den SharePoint Designer 2007, öffnet die entsprechende Site, geht zum Kalender und findet dort seinen View (ie. “Done.aspx”). Diesen öffent man nun in der Code- oder Split-Ansicht.
  5. Beim KalenderwebPart findet man nun den View-HTML-Code (all das, was mit < und > grosszügig vermischt ist)
  6. Jetzt sucht man am einfachsten nach “Where”. Der erste Treffer solle zu etwa diesem Abschnitt führen:
  7. <Query><Where><Lt><FieldRef Name="Created"/><Value
    Type="DateTime"><Today/></Value></Lt></Where></Query>
  8. Wenn man nun einfach den FieldRef Name auf “EndDate” (oder “EventDate”) ändert und speichert, ist es das auch schon gewesen.

WICHTIG: Wenn man diesen View nun via SharePoint wieder ansehen geht, erscheint dort etwa folgendes:

Sprich, wenn ich den View irgendwie dort nun verändere, wird die Anpassung in der Filter-Field Selektion überschrieben und das Ergebnis ist wieder filterlos.

Bewertung der Varianten

Beide Varianten haben ihre Vor- und Nachteile. Bei der ersten Variante gibt es über die Contenttypes natürlich die Möglichkeit, dass man nicht jeden Kalender nachpflegen muss, sondern die neuen Felder einmal definiert und diese dann auf alle Kalender angewendet werden. Wenn Kalendereinträge bearbeitet werden, erscheinen diese berechneten Felder auch nicht. Aber es gibt einfach 2 Felder, welche nur zu Filterzwecken existieren und sonst keine Daseins-Berechtigung haben und die Probleme mit ganztägigen Ereignissen gilt es auch zu berücksichtigen.

Die SharePoint Designer-Variante ist dazu genau das Gegenteil: Es gibt keine weiteren Felder. Es kann aber auch nicht mit Contenttypes eine Vorlage editiert werden. Diese Anpassung muss für jeden Kalender gemacht werden. Auch ist hier die Gefahr gross, dass Benutzer diese Anpassung durch ein Bearbeiten des Views überschreiben.

Schlussendlich muss jeder situativ entscheiden, welche diese (mir bis heute bekannten) Varianten sich besser eignet.

Mögliche Features für SharePoint 2009

Habe soeben via Martin Hipfinger über Twitter einen interessanten Link erhalten, welcher mögliche Features der kommenden Version von SharePoint aufführt. Ich hab den Beitrag mal ins Deutsche übersetzt und die Beschreibungen noch etwas ergänzt:

Feature Beschreibung Wahrscheinlichkeit Quelle
64-bit only SharePoint v14/2009 wird nur als 64bit Version ausgeliefert. Es wird also keine 32Bit Versionen von SharePoint mehr geben. bestätigt TechNet
Silverlight Silverlight 2.0 WebParts oder komplettes Silverlight UserInterface. Silverlight gibt es ja für fast alle Browser. Dieser Schritt scheint möglich, würde sogar interessante Möglichkeiten schaffen.    

Ich aber glaube, dass es bei WebParts bleiben wird. Das ganze UI auf Silverlight zu migrieren, würde einen Rückschritt für die Kompatibilität von SharePoint zu Clients bedeuten.

ziemlich sicher Spekulation
Super-Lists SQL-Tabellen-ähnliches Verhalten für SharePoint Listen. Bill Gates spricht davon, SharePoint Listen besser abfragen zu können und Listen auch besser skalieren zu können. Es ist aber noch etwas schwammig.    

Heute ist das mit den Listen ja so eine Sache: Abfragen sind über Views möglich, Relationen (*hoff*) gibt es nicht, nur Lookups, und grosse Listen (>2000 Items) werden von Microsoft nicht empfohlen.

möglich Bill Gates
Groove Integration Anwender, welche Groove installiert haben, könnten mehr Synchronisationsoptionen angezeigt werden.    

Auch schreibt Ray davon, dass SharePoint das UI von Groove wird. Ich könnte mir vorstellen, dass mit einer Groove-Umgebung User Inhalte von SharePoint offline verfügbar machen könnten. Dokumente von SharePoint offline verfügbar. So quasi der Colligo von Microsoft.

möglich Ray Ozzie
Master Data
Management
Mittels MDM könnte SharePoint besser mit anderen Datenbanken arbeiten.Der Witz: Es gibt nur eine Version des Datensatzes, MDM hat Prozesse, welche sicherstellen, dass es nur eine Version bleibt (Sync,…) Microsoft lässt dies unter dem Codenamen “Bulldog” laufen.    

Klingt interessant (hier lesen). SharePoint könnte so noch viel stärker bei Datenbereitstellung und -bearbeitung als UserInterface fungieren.

ziemlich sicher Microsoft MDM
XHTML-compliant
output
SharePoint wird auf sauberem XHTML basieren. Die aktuelle Version von SharePoint verwendet im default.master keinen Doctype.  möglich Spekulation
FAST search
integration
Die Suche wird durch FAST-basierende Technik und WebParts ersetzt. Da Microsoft mit FAST ein interessantes Produkt eingekauft hat, scheint eine Implementation in SharePoint in meinen Augen sehr wahrscheinlich. Ob es zur Version 14 reicht, sei aber dahingestellt. kann sein CMS Watch
ODF and PDF
support
 Es werden keine speziellen Filter mehr benötigt, um aus ODF (Open Document Format)- und PDF-Dateien die Inhalte und Metadaten zu extrahieren.     

Interessant wird es aber wohl wieder einmal mehr bei PDF. Adobe wird hier sicher wieder interventieren. PDF ist doch schon bei Office 12/2007 in der Beta drin gewesen und dann im Fertigprodukt nur als Addon verfügbar gewesen.

möglich Microsoft
CMIS support Content Management Interoperability Services werden es SharePoint ermöglichen, mit anderen ECM’s via WebServices zu kommunizieren. Mit IBM, EMC, OpenText, Oracle und SAP bauen alle mit am CMIS-Standard. Insofern könnte das gut kommen. ziemlich sicher Microsoft
Claims-based Authentication 
mechanism
Das Ziel ist, dass SharePoint mit jedem Corperate Identity System arbeiten kann, um User zu autentifizireren. Hierzu zählen Active Directory, LDAPv3-basierende Verzeichnisse, LiveID, OpenID und InfoCard Systeme wie Microsofts CardSpace oder Novells Digital Me. kann sein Network World

Das sind schon ein paar nette Features drin. In meinem Umfeld wird sicher Super-Lists, MDM, die FAST-Suche und die Claims-based Authentication interessant sein. 

Super-Lists und MDM werden helfen, Daten effizient in SharePoint verwalten zu können, wobei ich echt auf relationale Listen hoffe. Die Sache also, welche wir bis anhin nur dank Bamboo-Solutions verwirklichen konnten.

Die FAST-Suche lässt mich hoffen, dass die Unzulänglichkeiten der bisherigen Suche dann Geschichte sind. Dass damit dann also Wildcard-Suchen möglich werden, dass Userprofile effizienter indexiert sind (gelöschte User sollte man nicht mehr finden dürfen) und dass der Index sich stärker an der Arbeitsweise Inhaltsquelle orientiert (Berechtigungen auf Filesystem, MOSS zeigt Files an, welche im Explorer nicht geöffnet werden können).

Und mit der Claims-based Authentication scheint es dann einfacher zu werden, wenn es gilt externe User auf eine Extranet-Umgebung zugreiffen zu lassen. Bisher sind dazu mit FBA und der SQL-DB in meinen Augen zuwenig flexible Instrumente zur Verfügung.

STSADM Import erstellte das Parent Web nicht

Heut war ich mal nicht im Büro arbeiten… ich war bei einem Kunden (jep, am Samstag). Dort gab es ein Problem mit SharePoint, bzw. dem Importieren von WSS-Sites in einen MOSS (“Microsoft Office SharePoint Server”, aber wer das hier zu verstehen gedenkt, wird das eh schon gewusst haben). Dazu habe ich dem Kunden Scripts vorbereitet, welche mittels STSADM alle Sites exportiert und auf dem neuen Server wieder importiert.

Dieser Migrationsprozess wurde 2-3 mal vom Kunde selbst getestet und validiert. Stets verlief alles einwandfrei. Bloss eben gestern – am effektiven GoLive – nicht. 

Die Fehlermeldung bestand stets darin, dass beim Import die Meldung erschien, dass die Parent-Site noch nicht existiere. Eigentlich hat dies bei jedem Test STSADM beim Importieren gemacht. Die Site muss von STSADM als erstes erstellt werden, bevor Inhalte darin abgelegt werden können.

Internetrecherchen ergaben, dass diese Meldung erscheint, wenn der User, welcher den Import durchführen will, nicht als Site-Collection-Administrator definiert ist. Von der Site her war er aber drin… aber in der Zentraladministration fehlte er noch (sonderbar, ich weiss). Also rein mit ihm. Der erneute Import aber scheiterte wieder mit der selben Meldung. 

Dann wollte ich das Problem weiter eingrenzen. Ich exportierte abermals eine einzelne Site vom WSS und wollte diese in eine neu erstelle SiteCollection auf dem WSS importieren. Scheiterte aber ebenfalls. Gleiche Übung auf dem MOSS war aber erfolgreich. Ok, das Problem konnte langsam eingegrenzt werden. 

Was war bloss anders, als an den Tests, welche vorgängig gemacht worden sind? Warum liesen sich diese Sites nicht mehr importieren? Nun, nicht der User war das Problem, sondern die Quell-SiteCollection: Damit kein User während der Migration auf einer WSS-Site noch arbeitet, haben wir diese SiteCollection in einen Read-only-Betrieb geschaltet.

Also haben wir den SC-Lock testhalber kurz aufgehoben und nochmals eine Site exportiert und den Import auf MOSS-Seite erneut gestartet und siehe da: es funktionierte. 

Hm… aber dass ein SC-Lock auf Exportierte Sites einen Einfluss hat, war mir bis heute nicht bekannt. Falls es  jemand gibt, der mir das erklären kann,… bitte gerne.