Freitag, 12. Dezember 2008

Fehler beim Anlegen eines Folders in einer Dokumentenbibliothek

Einen sehr merkwürdigen Fehler habe ich bei unserem aktuellen Projekt - einer Migration von Livelink nach SharePoint - entdeckt und gelöst.

Hier werden u.a. programmatisch Folder und Dokumente in einer Dokumentenbibliothek angelegt aber ab und zu taucht diese Fehlermeldung auf:

The filename, directory name, or volume label syntax is incorrect. (Exception from HRESULT: 0x8007007B)

Der Name des anzulegenden Folders war "1_ERF ", beinhaltete also keine Zeichen, die SharePoint kategorisch ablehnt (wie z.B. & # % * usw.). Über die Oberfläche war der Folder ebenfalls problemlos anlegbar.
Daraufhin versuchte ich noch einmal den Folder programmatisch anzulegen. Diesmal ohne das Leerzeichen am Ende und siehe da, plötzlich funktionierte es problemlos.

Fazit: Beim programmatischen Anlegen von Foldern in einer Dokumentenbibliothek am besten immer ein .TrimEnd() oder .Trim() an den Folder-Namen hängen.

Montag, 1. Dezember 2008

Michael Greth auf dem 3. Treffen der regionalen SharePoint User Gruppe

Vgl: Consultants Digest

Ich freue mich, an dieser Stelle verkünden zu können, dass Michael Greth, einer der SharePoint Evangelisten in Deutschland und Microsoft MVP, am 15.01.2008 zum dritten Treffen der regionalen SharePoint User Gruppe Nürnberg kommen wird, um dort über das Podcasting Kit zu sprechen.

Der Termin wird am 15.01.2008 wieder bei der Spirit Link Technology in Erlangen stattfinden.

Anmeldung und weitere Informationen zu dem Termin und der User Gruppe finden Sie unter:

Xing Termin: https://www.xing.com/app/events?op=detail;id=281380;from=home

User Gruppe: https://www.xing.com/net/spusergroupnbg/

Spirit Link Technology: www.spiritlink-technology.de

Ich würde mich freuen auch den einen oder anderen Blog Leser dort zu diesem sicher spannenden Termin begrüßen zu dürfen.

Montag, 24. November 2008

2. Treffen der regionalen SharePoint User Gruppe

Vgl: Consultants Digest

An dieser Stelle möchte ich einen kurzen Rückblick auf das letzte Treffen der regionalen User Gruppe geben.

Am 20.11.2008 haben sich ca. 20 Fachanwender und Softwarespezialisten bei der Spirit Link Technology eingefunden, um in gemütlicher Runde über SharePoint und andere Themen zu plaudern.

Thematisch stand der Abend im Zeichen von Livelink Migration nach SharePoint und Business Intelligence mit SQL Server Reporting Service im SharePoint Kontext.

Nach einer kurzen Einleitung hat Andras Molnar über ein laufendes Projekt der Spirit Link Technology gesprochen, in dem es um die Migration von 160.000 Dokumenten eines bestehenden Knowledge Sharing Systems auf Livelink Basis in eine SharePoint Umgebung geht.

Schwerpunkte des Vortrages waren:

  • Generelles Migrationsvorgehen
  • Evaluation von Migrationstools
  • Problemkreise der Migration
    • Livelink Aliase
    • Pfadlängen
    • Dokumentengrößen
    • Versionierungen
  • Detailierte Problemlösung
  • Migrationsdauer und User Interaction

Im Anschluss an den Vortrag von Andras Molnar hat Sebastian Gerling zum Thema Business Intelligence Ansätze im Microsoft SharePoint Umfeld angesprochen. Nach einer kurzen theoretischen Einleitung wurde anhand von Screencasts und Live Demos das Vorgehen der Erstellung eines funktionsfähigen in SharePoint implementierten Berichtes von dem Aufbau der SQL Server Tabellen über die Erstellung des Berichtes in SQL Server Reporting Services bis hin zur Implementierung in ein SharePoint Berichtszentrum gezeigt.

Schwerpunkte des Vortrags waren:

  • SQL Server Integration Services (SSIS)
  • SQL Server Analysis Services (SSAS)
  • SQL Server Reporting Services (SSRS)
    • Berichtserstellung in Visual Studio
    • Modifizierung von Berichtselementen
    • Bedingte Formatierungen und der Umgang mit Ausdrücken
  • Voraussetzung für die Implementierung von SRSS Reports in SharePoint
  • Vorgehen beim Implementieren
    • Data Connection
    • Single Item Security

Diesen Vortrag und die Screencasts werden Sie in Kürze auch hier auf dem Blog zu finden sein.

Im Anschluss an die Vorträge wurden offene Fragen diskutiert und in gemütlicher Runde bei Bier und Brötchen der Abend ausklingen gelassen.

Weiter Informationen rund um die User Gruppe und die Teilnehmer finden Sie unter:

https://www.xing.com/net/spusergroupnbg/

Freitag, 14. November 2008

Migration von LiveLink nach SharePoint

Im Moment beschäftige ich mich mit der Migration eines LiveLink-Projektes nach SharePoint und bin ziemlich stark darin eingebunden, darum ist es momentan leider etwas ruhiger auf der SharePointBox.
Aber ich denke, hier wird in der nächsten Zeit noch genug postbares Material anfallen.

Donnerstag, 6. November 2008

Geomapping mit SharePoint

vgl.: Consultants Digest

Ich habe gerade auf dem SharePoint Magazin einen interessanten Artikel gelesen, aus dem ich das Bild unten als Appetizer entnommen habe. Der Artikel von Scott Caulk behandelt die Visual Fusion Lösung von IDV Solutions.

Besonders gelungen ist die Anbindung an einen Webservice, der für jede gültige Adresse einen Längen- und Breitengrad heraussucht. Dadurch kann der Anwender im Grunde jede Adressliste auf einer Karte darstellen und schnell Mash Ups für jede Situation erstellen.


Freitag, 10. Oktober 2008

spdisco.aspx von anderem Prozess im Zugriff??!

Kürzlich habe ich für einen eigenen Webservice eine Solution geschrieben. Die Solution sollte auch die spdisco.aspx im /ISAPI Verzeichnis anpassen, damit Dienstebeschreibungen für den Webservice gleich mitgeliefert werden. Da es sich um eine .aspx Datei handelt, konnte ich leider nicht per System.Xml darauf zugreifen, sondern musste den guten alten StreamReader /-Writer verwenden.

Beim Speichern der neuen Version bekam ich aber unregelmäßig die Exception, ein anderer Prozess greife auf diese Datei zu. Obwohl mein eigener Code es definitiv nicht war. In diesem Fall blieb mir nichst anderes übrig als die Datei als .txt zu speichern und händisch umzubenennen.

Welche Prozess greift den grundsätzlich auf diese Datei zu, mit Ausnahme des IIS, wenn er grad den Cache neu aufbaut??

Farmdeploy mit SPJobdefinition

Alle bisherigen Solutions wurden immer nur auf einem Frontend deployed. Bei diesem Projekt war es jedoch eine Anforderung, die Lösung auf allen Frontends (4 Stück) der Farm einzurichten bzw. auch wieder zurückzuziehen.

Es gab daher nur den Weg über eine SPJobDefinition, da dieser über mehrere Farmmember synchroniziert werden.

Der Umgang mit dieser Klasse war eine gute Erfahrung für mich, denn in Zukunft wird es viele Anwendungsfälle geben, in denen ich auf dieses Wissen zurückgreifen kann. Warm-Ups, BDC-Deployment, Design-Anapssungen, usw.

Gruß Nils

Mittwoch, 8. Oktober 2008

Erstes Treffen der ISPA SharePoint User Group Nürnberg

Vgl. Consultants Digest

Wie mein Kollege Ricky schon in der SharePoint Box geschrieben hat, hat am letzten Donnerstag das erste Treffen der regionale User Gruppe Nürnberg bei der Spirit Link GmbH stattgefunden.

Zu meiner großen Freude sind ca. 90% der Personen, die zugesagt hatten auch erschienen. So hatten wir eine sehr angenehme Mischung aus interessierten Endanwendern, Sharepoint Dienstleistern und Trainern vor Ort. Schon zu Begin der Veranstaltung bei Kaffee und Brötchen wurde intensiv über verschiedenste Themen gesprochen.

Nachdem ich mich nach ca. einer halben Stunde genötigt sah, dem regen Treiben ein Ende zu setzen, sind wir nach einer kurzen Einleitung, inklusive eines Begrüßungsvideos von Michael Greth und Daniel Wessels zu dem thematischen Hauptschwerpunkt des Abend übergegangen. Aus meinem Vortrag unter dem Titel "Hands on Experiences zum Einsatz von Nintex Workflow 2007" ist glücklicherweise schnell eine rege Diskussion zum Thema Workflows, Livelink sowie Möglichkeiten und Grenzen von SharePoint geworden.

Im Anschluss an den Vortrag sind die meisten Teilnehmer noch in angenehmer Atmosphäre geblieben, um das eine oder andere mehr oder weniger SharePoint relevante Thema zu besprechen und interessante Kontakte zu knüpfen.

Alle Teilnehmer haben Interesse an weitern solcher Termine bekundet, was mich als Ausrichter natürlich besonders glücklich macht, da es für einen gelungenen Auftakt spricht. An dieser Stelle möchte ich mich auch bei unsere Verwaltung bedanken für Ihre Hilfe bei der Vorbereitung danken. Nur durch sie konnte das Event so gut und reibungslos gelingen.

Der nächste Termin soll in den nächsten sechs bis acht Wochen stattfinden. Als erneuten Austragungsort haben wir uns auf die Spirit Link GmbH geeinigt, allerdings sollen weitere Treffen bei Möglichkeit auch bei anderen Teilnehmern stattfinden.

Weiter Informationen zu den Terminen kann man auch bei der extra eingerichteten XING Gruppe zur regionale SharePoint User Gruppe Nürnberg erfahren.

Dienstag, 7. Oktober 2008

Listeninstanzen in Solutions vorbefüllen

Bisher haben wir Listen, die per Solutions installiert werden und von Haus aus über Werte verfügen sollten mit Hilfe von FeatureReceivern befüllt. Da es sich dabei um eine Vielzahl von Listen mit mehreren Spalten handelte, bot es sich an, das ganze über eine Befüll-Methode abzuarbeiten, die ihre Daten aus den entsprechenden Settings-Dateien beziehen.

Nun arbeite ich aktuell aber an einem sehr kleinen Projekt welches derartigen Aufwand nicht gerechtfertigt: im Rootweb wird eine Liste mit vier einzelnen Einträgen benötigt, die sich nicht mehr ändern werden.

Diese Werte werden nun einer ListInstance mitgegeben:


<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<!-- PicklistRole -->
<ListInstance FeatureId="39fba828-57af-4c1f-ba42-19cc13e8ad99"
TemplateType="100"
Id="PicklistRoleList"
Title="$Resources:root_lists,picklistRoleInstanceTitle;"
Description="$Resources:root_lists,picklistRoleInstanceDescription;"
OnQuickLaunch="FALSE"
Url="$Resources:core,lists_Folder;/Picklist Rolle">
<Data>
<Rows>
<Row>
<Field Name="Title">Projektmanager</Field>
</Row>
<Row>
<Field Name="Title">Technischer Leiter</Field>
</Row>
<Row>
<Field Name="Title">Entwickler</Field>
</Row>
<Row>
<Field Name="Title">Projektassistenz</Field>
</Row>
</Rows>
</Data>
</ListInstance>
</Elements>


Diese ListInstance wird im Feature eingebunden welches dann über die WebFeatures-Sektion der onet.xml aktiviert wird und daraufhin die Liste mitsamt den Einträgen bereitstellt:

Montag, 6. Oktober 2008

WebTemplates löschen

Mir stellte sich folgender Anwendungsfall: Unterhalb einer SiteCollection sollen eigene SubWebs erstellt werden können; unterhalb dieser jedoch keine weiteren also ausschließlich Websites eine Ebene unterhalb der SiteCollection.

Programmatisch löste ich das ganze mit Hilfe eines FeatureReceivers, dessen Feature (Web-Scope) in der onet.xml aktiviert wird:

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
// remove all site templates to prevent, users create more subwebs beneath the current one
if (properties.Feature.Parent is SPWeb)
{
try
{
using (SPWeb currentWeb = (SPWeb)properties.Feature.Parent)
{
currentWeb.SetAvailableWebTemplates(new Collection(), (uint)1031);
currentWeb.Update();
}
}
catch (Exception e)
{
}
}
}

In dem obigen Codebeispiel werden die verfügbaren WebTemplates des aktuellen Webs einfach neu gesetzt und zwar mit einer leeren Collection des Typs SPWebTemplate. Anschließend wird das Web geupdated damit die Änderung wirksam wird. Die 1031 steht hier übrigens für den deutschen Sprachraum.

Wiederherstellen lassen sich die Standard-Templates natürlich auch mit Hilfe dieser zwei Zeilen:

currentWeb.AllowAllWebTemplates();
currentWeb.Update();

Freitag, 26. September 2008

1. Treffen der ISPA SharePoint User Group Nürnberg

Gestern Abend von 17 bis ca. 20 Uhr fand bei der Firma Spirit Link GmbH in Erlangen das erste Treffen der ISPA SharePoint User Group Nürnberg statt.
Mehr als ein Dutzend Mitglieder waren vor Ort und plauderten in lockerer Atmosphäre beim Genuss zahlreicher belegter Brötchen, Kaffee und Softdrinks über ihre Erfahrungen und Projekte mit SharePoint. Die Hauptpräsentation des Abends, moderiert von Sebastian, mit dem Schwerpunkt NINTEX Workflow 2007 kam bei allen gut an und führte zu angeregten Diskussionen der Teilnehmer im Anschluss.
Schön war, dass viele Teilnehmer über die XING-Gruppe von dem Event erfuhren und sich darüber auch gleich anmeldeten.

Fazit: Es wurde viel gelacht, Kontakte geknüpft und die Teilnehmer waren sich einig, bei der nächsten Veranstaltung in sechs bis acht Wochen wieder mit von der Partie zu sein.

Freitag, 19. September 2008

SharePoint Community Camp 2008 - Hands on Experiences

Wie bereits mehrfach erwähnt war ich ja Anfang der Woche auf dem SharePoint Community Camp 2008. Das Beste zu erst, es hat sich 100%ig gelohnt. Vor allem die Kontakte innerhalb der SharePoint Community sind wertvoll, so habe ich nach verschiedensten Telefonaten Gelegenheit gehabt, mit Michael Greth persönlich zu sprechen. Ich habe auch Peter Fischer den Produkt Manager SharePoint für Deutschland kennenzulernen. Mit ihm habe ich dort auch vereinbart, dass er wenn es sich einmal einrichten lassen sollte an einem Termin der regionale SharePoint User Gruppe Nürnberg teilnehmen wird. Weiterhin haben wir Lisa Metzger kennengelernt, mit der insbesondere der fachliche, aber auch der persönliche Kontakt sehr interessant und wertvoll war.

Welche Inhalte sind auf der Messe behandelt worden?

Tag 1

  • Keynote: SharePoint – ein aktueller Überblick aus Sicht von Microsoft
    • Peter Fischer (Product Solution Manager SharePoint und Enterprise Search, Microsoft GmbH, Unterschleissheim)
  • Web 2.0/Enterprise 2.0/SharePoint – Ideen, Konzepte, Lösungen
    • Michael Greth (SharePointCommunity, Berlin)
  • SharePoint als Social Plattform in einer PR-Agentur
    • Martin Bussick (PLEON GmbH, Berlin)
    • Michael Meefeld (PLEON GmbH, Düsseldorf)
  • SharePoint Plattformlösungen am Beispiel von CKS:EBE Blog und Confluence Wiki
    • Elisabeth Metzger (Namics AG, Zürich))
  • SharePoint Podcasting Kit – Audio und Video im Unternehmen
    • Gernot Kühn (Microsoft GmbH, Berlin)
    • Michael Greth (SharePointCommunity, Berlin)

    Tag 2

  • SharePoint Wiki im Einsatz – Alle wissen Bescheid
    • Helmut Reinke (MindBusiness GmbH)
  • OneNote – Mehr als nur Notizen
    • Dagmar Herzog (MindBusiness GmbH)
  • Mindjet Connect – den Informationsaustausch im Team vereinfachen
    • Steven Greenhill (MindBusiness GmbH)
  • Die MySite – Jedem seine Webseite
    • Helmut Reinke (MindBusiness GmbH)

    Mein Fazit ist, dass die Vorträge am ersten Tag wirklich interessant waren, es sind Erfahrungen aus der Praxis heraus geschildert worden. Spannende Ansätze ließen sich insbesondere aus dem Vortrag von Michael Meerfeld und Martin Bussick ziehen, die sehr schön den Weg von einer Idee hin zu einem vollständigen SharePoint Intranet geschildert haben und hierbei auch auf mögliche Stolpersteine hingewiesen haben.

    Interessant waren auch die Hinweise von Michael Greth zu den derzeit auf dem Markt befindlichen Tools und Kits im Bereich Web 2.0 und Enterprise 2.0. Aus dem Strauß an Ideen, die daraus entstanden sind werden wir sicherlich einige realisieren.

    Lisa Metzgers Vortrag hat sich insbesondere um den Teil des Wikis und der Blogs gedreht. Hier fanden wir es besonders gut, das aus der Praxis heraus einmal die Möglichkeiten, aber auch die Restriktionen des Standard SharePoint Wikis und Blogs aufgezeigt worden sind und weiter Third Party Module gezeigt worden sind.

    Der zweite Tag hatte einen leicht werblichen Touch, hat aber insbesondere im Bereich OneNote und Wiki noch einmal neue Einblicke in die Arbeitsweisen mit diesen Tools gebracht.

    Abschließend gibt es vier von fünf Daumen nach oben von mir für die Veranstaltung und ich denke wir werden uns alle im nächsten Jahr oder hoffentlich schon vorher wieder sehen.

Donnerstag, 18. September 2008

SharePoint Community Camp 09.2008

Anfang der Woche war ich mit Sebastian in Stuttgart zu Besuch beim SharePointCommunityCamp 09.2008, eine Veranstaltung mit dem Focus Web 2.0/Enterprise 2.0/Social Communities und SharePoint.

An zwei Tagen wurden uns diverse coole Tools und Erweiterungen - z.B. eine Art YouTube oder diverse bessere Wikitools - für SharePoint gezeigt.



Tag 1 beschäftige sich stark mit gängigen Web 2.0-Tools und dem damit verbunden Sinn und Nutzen sowie einigen konkreten Vorträgen wie z.B. der Abschaffung des vorhandenen gewachsenen Intranets zugunsten einer einheitlichen SharePoint-Lösung, der reale Einsatz von SharePoint-Wikis, bzw. Lösungen, die das Standard-Wiki ersetzen können. Sehr interessant war ebenfalls das vorgestellte SharePoint Podcasting Kit und sein Einsatz im Unternehmen.

Tag 2 ging dann mehr auf konkrete Tools wie OneNote, Mindjet Connect und oberflächlich den Einsatz der MySite ein.

Während der Stunden des ersten Abends wurden dann in geselliger Atmosphäre Kontakte geknüpft und angeregte Gespräche geführt, bei denen sich dann herausstellte, dass einige Probleme in Bezug auf SharePoint überall gleich vorhanden sind, z.B. das generelle Zugeringabschätzen von zeitlichen Aufwänden oder die Vorstellung von Kunden, was alles mit SharePoint möglich ist.

Rückblickend betrachtet möchte ich sagen, dass sich der Besuch der Konferenz voll und ganz gelohnt hat. Die Vorträge regten zu neuen Denkweisen an, uns sind ein Dutzend neue Anwendungsgebiete für Features in Kundenprojekten ob der vorgestellten Tools eingefallen und wir haben eine Menge interessanter neuer Kontakte geknüpft und vorhandene vertieft.

Vielen Dank also an Michael Greth für die Organisation des Events und die tollen Vorträge (deren Präsentationen übrigens hier online verfügbar sind) und bis zum nächsten Mal!

Dienstag, 16. September 2008

Microsoft BI Artikel

Vgl: Consultants Digest

…ich habe gerade auf dem Sharepoint Magazin einen sehr interessanten Artikel, den ersten von sechs, ich bin schon auf die anderen gespannt, gelesen. Kirsten Hodges, für den Blog hier klicken, beschreibt in dem Artikel, den man hier findet sehr schön die einzelnen Bestandteile der MS BI Familie.
Hier ein kurzer Abriss des Inhaltes:
  • What Is Business Intelligence?
  • Was versteht Microsoft unter BI, Stichwort Monitor, Analyse & Plan
  • What’s SharePoint Got to do With it?
  • Excel Services, LOB Integration über BDC, Integration von Report Bibliotheken
  • Performance Who?
  • Was ist der Performance Point, welche Möglichkeiten bietet der Performance Point, Stichwort KPI und Dashboards
  • What Am I Talking About?
  • Jedes Einsatzziel bedarf eines speziellen Tools, nicht jedes Produkt ist für jede Aufgabe geeignet
  • Dashboard, KPIs, Scorecards. Whatever!
  • Was sind eigentlich dies KPIs, diese Dashboards und diese ganzen Sachen, von denen immmer alle reden?
  • What Are We Going to Cover?
    Welche Bereiche werden in der Serie abgedeckt?
  • Part 1 – Getting to Know You - Intro to SharePoint BI
  • Part 2 – Sell! Sell! Sell! Why Build a Dashboard Anyway?
  • Part 3 – KPIs – Where do I Come From?
  • Part 4 – Dissecting Dashboards
  • Part 5 – We Really Need to Talk – Scorecards & Reports
  • Part 6 – Beware the Bogeyman – Securing Dashboards

Donnerstag, 11. September 2008

SharePoint Enterprise 2.0 Drittanbieterübersicht

Vgl: Consultants Digest


ich habe gerade auf ReadWriteWeb einen sehr interessanten Artikel zu Enterprise 2.0 und SharePoint gelesen. Unter dem Titel “SharePoint To Run Enterprise 2.0″ gibt Sarah Perez einen sehr guten Überblick über den Web 2.0 und Enterprise 2.0 Markt im SharePoint Umfeld. Ich werde mir jetz mal die einzelnen Anbieter anschauen, die sie dort aufzählt.
Thank you for that Sarah

Mittwoch, 10. September 2008

XING XING

Vgl: Consultants Digest

… ich habe heute eine neue XING Gruppe gegründet, in die ich alle Interessierten die sich bisher bei mir gemeldet haben einlade und alle weiteren Interessierten einladen möchte. Die Gruppe trägt den Namen “ISPA SharePoint User Group Nürnberg”. Zu finden ist sie hier.

Vorteil der XING Gruppe ist das einfach moderieren, Abstimmen von Terminen sowie Inhalten und das simple Kontaktmanagement. Zusätzlich können hier auch regionale SharePoint Themen gepostet werden. Ich würde mich freuen noch weitere Mitglieder in der Gruppe begrüßen zu dürfen.

Dienstag, 9. September 2008

Erster Termin der Regionalen SharePoint User Group Nürnberg

Vgl: Consultants Digest

Hallo liebe Blog Leser

im Rahmen der International SharePoint Professionals Association (ISPA) habe ich in Abstimmung mit Michael Greth, dem Regional Evangelist für Deutschland eine regionale User Group für den Großraum Nürnberg gegründet. Ziel der User Group ist es, einen regionalen Austausch zu Themen rund um Microsoft SharePoint zu etablieren und ein lokales Netzwerk aus Interessierten aufzubauen. Um diese Ziel zu erreichen werden regelmäßige offline Treffen stattfinden. Das erste wird am 25.09.2008 um 17:00 bei der Spirit Link GmbH, Paul-Gordan-Straße 13, 91052 Erlangen stattfinden. Die Agenda sieht wie folgt aus

——————————————————————
Vorstellung ISPA (Sebastian Gerling 10min)
- Was ist die ISPA
- Was macht die ISPA
- Regionale Gruppen in der ISPA

Kurzvorstellung Spirit Link technology (Sebastian Gerling 5min)
- Wer ist der Gastgeber?
- Was macht der Gastgeber?

Vorstellung der Teilnehmer (30min)
Jeder Teilnehmer der sich vorstellen möchte kann die folgenden Punkte an sebastian.gerling (at) spiritlink.de senden. Diese werden in die Präsentation eingebaut:

- Name
- Firma
- Position
- Was war mein interessantestes SharePoint Projekt?
- Was sind meine thematischen Schwerpunkte?
- Was reizt mich am Thema SharePoint?

Vorträge (Sebastian Gerling 30min)
- Thema I: Nintex Workflow Komponenten (Hands on Experiences)

Meet & Greet (45min)
- Offenen Diskussionsrunde in kleineren Gruppen
——————————————————————

Ich möchte Sie hiermit herzlich zu diesem Termin und zur SharePoint User Group Nürnberg einladen und würde mich über Ihre Teilnahme freuen.
Weiter Informationen zu diesem Termin finden Sie bei XING oder auf dem Blog von Michael Greth.

Bitte melden sie sich über die folgende Email Adresse an: ug-nuernberg (at) mysharepoint.de

Samstag, 6. September 2008

Buchempfehlung

Vgl: Consultants Digest

ich habe gerade das Buch “Business Intelligence with Microsoft Office PerformancePoint Server 2007” gelesen und bin damit sehr zufrieden. Die Inhalte werden verständlich erklärt, es wird ein akzeptables Niveau an Vorwissen vorausgesetzt und die meisten Dinge die erläutert werden sind auch bebildert, so dass es dem geneigten Leser leicht fällt den Ausführungen des Autors zu folgen. Das Buch kann man unter *click* bestellen.

Ich habe hier mal die Inhaltszusammenfassung von Amazon angehängt:

Deliver BI Solutions with Microsoft Office PerformancePoint Server 2007

Maximize the powerful BI tools available in PerformancePoint 2007 with help from this practical guide. You will learn how to collect and store data, monitor progress, analyze performance, distribute dynamic reports, and create maintainable projects and forecasts. Business Intelligence with Microsoft Office PerformancePoint Server 2007 provides full details on creating scorecards and dashboards, performing advanced analysis on data, and setting up business plans. You will also learn how to integrate PerformancePoint with ProClarity, Excel 2007, and SQL Server Reporting Services.

  • Configure, deploy, and secure all the PerformancePoint components
  • Create KPIs, scorecards, reports, and dashboards with the Dashboard Designer
  • Create business models with the Planning Business Modeler and create budgets and forecasts with Excel 2007
  • Enable advanced data analysis with PerformancePoint Server and ProClarity tools
  • Take advantage of the enhanced analytic capabilities of Excel 2007
  • Use SQL Server Reporting Services for analytics
  • Align performance with organizational objectives

Synopsis
This is an in-depth guide to creating world-class Business Intelligence solutions. This comprehensive volume covers every aspect of PerformancePoint 2007, the latest in Microsoft’s line of Business Intelligence applications. You will learn to collect and warehouse corporate data, perform fiscal analysis, distribute dynamic reports across the enterprise, and forecast business trends. “Business Intelligence with Microsoft Office PerformancePoint 2007″ provides full details on creating scorecards, dashboards, and analytics and shows how to integrate PerformancePoint with Microsoft Office 2007 and SQL Server 2005 Reporting Services. You will get full coverage of the cutting-edge financial planning, reporting, security, and delivery tools available in PerformancePoint 2007.

Das magische Quadrat...

Vgl: Consultants Digest

…der Business Intelligence führt nach Gardner Microsft an. In dem Artikel, den man sich hier anschauen kann, werden die TOP 10 der Business Intelligence Anbieter vor dem Hintergrund verschiedener Kriterien beleuchtet. Es werden Stärken und Schwächen der einzelnen Anbieter beleuchtet und eine Überblick über den Markt ansich und seine Entwicklung gegeben. Microsoft befindet sich ganz weit oben im vierten Quadranten vor allem auf Grund der Möglichkeit durch die Office Integration auf den Markt durchzugreifen.

Freitag, 5. September 2008

ISPA User Group Nürnberg...

Vgl: Consultants Digest

…ist gerade im Entstehen. Ich habe in letzter Zeit öfter mit Michael Greth telefoniert und wir sind übereingekommen, dass ich die Organisation der Nürnberger SharePoint User Group im Rahmen der International SharePoint Professional Association übernehmen werde.

Wir haben auch schon einen ersten Termin intiiert. Dieser wird am 25.09.2008 stattfinden. Weiter Details zu dem Termin findet man unter *click*. Falls von der Seite meiner Leser Interesse daran besteht an diesem Termin teilzunehmen, so hinterlassen Sie mir doch bitte einfach einen Kommentar

Dienstag, 2. September 2008

…SharePoint und Web 2.0 - Eine Hassliebe?

Vgl: Consultants Digest


…ich habe gerade einen sehr schönen Artikel über Web 2.0 Technologien und Sharepoint gelesen, welcher auch ein Real Life Scenario beinhaltet. Es werden schön die einzelnen Vorteile von Web 2.0 Techiken erläutert und die Möglichkeiten in SharePoint geschildert. Ich bin trotzdem etwas skeptisch, ob Web 2.0 oder Enterprise 2.0 sich wirklich durchsetzen wird bei SharePoint, weil in einem hohen Mass die Flexibilität fehlt, die Web 2.0 letztendlich ausmacht…
Trotzdem ein lesenswerte Artikel, den man hier finden kann *Click*

Montag, 1. September 2008

Neue Umfrage gestartet

Ich habe eine neue Umfrage mit einmonatiger Laufzeit gestartet: "Wie nutzen Sie SharePoint in Ihrem Unternehmen oder dem Ihrer Kunden?"

Ziel der Umfrage ist es, eine gewisse Tendenz für die Richtung zukünftiger Posts festzustellen.

Freitag, 29. August 2008

Toolbar in WebPart programmatisch ausblenden

Hier wieder ein schönes Beispiel, was für Potential für Zeitverschwendung in SharePoint steckt:
Über die Oberfläche ist es relativ simpel, die Toolbar in einem Webpart zu verstecken, wie der folgende Screenshot zeigt.



Einfach auf "Freigegebenes Webpart bearbeiten" klicken und bei Symbolleistentyp "Keine Symbolleite" auswählen. Abspeichern und Fertig.

Das ganze jetzt programmatisch in die Solution mit hineinzunehmen sollte doch wohl kein Aufwand sein. Ist es auch nicht... - wenn man weiß, wo man hinfassen muss.

Und das herauszufinden kostet Zeit.
Denn das SDK und selbst die MSDN sind da leider unvollständig. Erst ein Kommentar aus der Community brachte Licht ins Dunkel: *click*

Um also in einem Webpart - in meinem konkreten Fall das ListView-Webpart auf eine Aufgabenliste mit Gantt-View - die Symbolleiste auszublenden bedarf es folgender Anpassungen:


in der schema.xml der Liste

<views>
.....
<View Type="GANTT" DisplayName="Gantt" Url=&quotGantt.aspx" Level="1" BaseViewID="13" ContentTypeID="0x" ImageUrl="/_layouts/images/generic.png" WebPartZoneID="Main">
<Toolbar Type="None"></Toolbar>
.....
</View>
.....
</views>

in der onet.xml

<modules>
<module name="DefaultConfig" url="Lists/WebsitesList" list="101">
<file url="BlankPortalPage.aspx" name="Kalender.aspx" type="GhostableInLibrary">

<view list="Lists/TaskList" name="Gantt" displayname="Gantt" type="GANTT" baseviewid="13" webpartzoneid="Top" webpartorder="2">
<!--[CDATA[ <webpart xmlns="http://schemas.microsoft.com/WebPart/v2" iwp="http://schemas.microsoft.com/WebPart/v2/ListView"> <assembly>Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</assembly> <typename>Microsoft.SharePoint.WebPartPages.ListViewWebPart</typename> <frametype>None</frametype> <title>Kalender</title> </webpart> ]]-->
</view>
</file>

</module>

</modules>


Dadurch werden sowohl im View als auch im WebPart die Symbolleisten nicht mehr angezeigt. Der Nachteil daran ist, dass über die Oberfläche die Toolbar aber nicht mehr manuell wiederangezeigt werden kann.

Berechtigungen für Quicklaunch-Elemente in der Navigation programmatisch vergeben

In unserem aktuellen Projekt ist es u.a. eine Anforderung, dass ein Element der Quicklaunchnavigation nur für bestimmte Benutzergruppen sichtbar ist.

Über die Oberfläche ist dies mit wenigen Klicks durchführbar:



Da die Gruppen, die hier berechtigt werden sollen, allerdings erst beim Erstellen eines neuen Subwebs via FeatureReceiver angelegt werden, muss die Berechtigung des Quicklaunches ebenfalls programmatisch erfolgen:


SPNavigationNodeCollection quickLaunch = web.Navigation.QuickLaunch.Navigation.QuickLaunch;

...

// new link: "Offene Aufgaben"
sb = new StringBuilder(Settings.openTasksUrl);
SPNavigationNode openTasksNode = new SPNavigationNode(Settings.openTasksTitle, sb.ToString());
quickLaunch.AddAsFirst(openTasksNode);
openTasksNode.Update();

openTasksNode = quickLaunch[0];

// set audience only to special groups
if (openTasksNode.Properties.ContainsKey("Audience"))
{
openTasksNode.Properties.Remove("Audience");
}

openTasksNode.Properties.Add("Audience", ";;;;" + Settings.groupNameTechnicansTitle + "," + Settings.groupNameCommercialsTitle + "," + Settings.groupNameBusinessManagerTitle);
openTasksNode.Update();

Im ersten Teil wird ein neues Objekt vom Typ SPNavigationNode erzeugt und der vorhandenen SPNavigationNodeCollection quickLaunch hinzugefügt. Diese kann einfach aus dem aktuellen web gezogen werden.

Da das SDK sich leider etwas ausschweigt was mögliche Properties eines SPNavigationNode-Objektes angeht, war etwas Recherchearbeit nötig und letztenendes das Debuggen und Abfragen eines vorhandenen SPNavigationNode-Objektes (mit über die Oberfläche gesetzten Gruppenberechtigungen) im Visual Studio-Debugger. In den Properties gab es unter anderem den Key "Audience" und seinen Value ";;;;Techniker,Kaufleute,Business Manager".

Das war also das Format, indem die Gruppen dem SPNavigationNode zugewiesen sein müssen.
Das Property wird für das SPNavigationNode-Objekt also gesetzt und dieses dann noch einmal geupdated.

Wichtig hierbei ist, dass die Gruppen irgendwie eindeutig benannt sind. SharePoint sucht nicht nur im Namen einer Gruppe sondern auch in deren Beschreibung. Gibt es mehrere Gruppen in denen z.B. in der Beschreibung "Kaufleute" auftaucht (z.B. "Benutzergruppe Kaufleute" und "Benutzergruppe Logistik Kaufleute"), kann SharePoint dies nicht mehr eindeutig zuordnen und im Zielgruppen-Editor wird derjenige Gruppeneintrag unterkringelt.

DCOM-Fehler im Windows Eventlog und wie man sie wegbekommt

Seit kurzem benutze ich ein anderes Image, welches aber von jemand anderem aufgesetzt wurde, in meinem Hyper-V, da es das 64-Bit-Image irgendwie zerstört hat. Macht aber nichts, da es sowieso ein Graus war, darauf zu arbeiten.

Scheinbar wurde da beim Einrichten von SharePoint irgendeine Einstellung vergessen oder übersehen denn ich konnte mit meinem Benutzer zwar SiteCollections anlegen aber dann keine Subwebs - im Eventlog erschien dann u.a. folgende Fehlermeldung:



Anscheinend fehlen den Benutzern spbdeveloper, spwepappdeveloper und spfarmwa Berechtigungen auf eine Applikation zuzugreifen. Eine Suche nach der CLSID {61738644-F196-11D0-9953-00C04FD919C1} brachte mich auf diese Website, die den entscheidenden Hinweis lieferte: *click*

Für den Komponentendienst IIS WAMREG admin Service müssen die drei SharePoint-Benutzer lokale Zugriffsrechte haben, der folgende Screenshot zeigt den Klickweg dazu:



Der Komponentendienst in der Systemsteuerung unter Verwaltung -> Komponentendienste zu finden.

Wurden die Berechtigungen gesetzt, muss der IIS neugestartet werden.

Dienstag, 26. August 2008

...wie sich manche Meinungen gleichen...

Vgl: Consultants Digest

…ich habe mir gerade einmal Twitter Stream Graphs zu verschiedenen BI Schlagworten angeschaut. Ist schon interessant, wie sich einige Dinge gleichen (siehe Text am unteren Ende der Bilder). Die Art der Visualisierung finde ich nebenbei bemerkt auch sehr gelungen.

Erster Versuch - PerformancePoint

Performance Point

Performance Point

Zweiter Versuch - SharePoint

SharePoint

SharePoint

Dritter Versuch - SSrS (SQL Server Reporting Services)

SQL Server Reporting Services

SQL Server Reporting Services

Donnerstag, 7. August 2008

ISPA update

…ich habe gestern mit Michael Greth dem Regional Evangelist der ISPA telefoniert, um die Möglichkeit des Aufbaus einer Regionalen SharePoint Gruppe im Rahmen der ISPA im Großraum Nürnberg zu besprechen. Es war ein sehr interessantes Gespräch, welches mir auch einen guten Einblick in die deutsche Community gegeben hat. Wir wollen uns in den nächsten zwei Wochen noch einmal zusammentelefonieren, um das weitere Vorgehen zu besprechen.

Im Rahmen des Gespräches hat mich Michael auch auf die folgende Veranstaltung ” SharePoint Community Campaufmerksam gemacht, die sich wunderbar in den folgenden Post einfügen läst. *Cklick* Ich denke, das ich auf jeden Fall dort sein werde, um mir die neuen Trends anzusehen, weil ich denke, dass Web 2.0 Features im Zusammenhang mit Business Intelligence gerade im Bezug auf Search and Findability große Vorteile bringen können…

Dienstag, 5. August 2008

SharePoint & Web 2.0 Mash up

vgl. Consultants Digest

…ich habe gerade einen interessanten Webcast zum Thema Web 2.0 und Collaboration in Sharepoint gefunden. *Click* Die Firma Newsgator fährt hier mit dem Produkt News Gator Social Sites einen interessanten Ansatz der Stark an Facebook, MeinVZ und Xing erinnert…

Dienstag, 29. Juli 2008

… mit kleinen Nadelstichen…

Vgl: Consultant's Digest

...in unserem aktuellen Projekt treffen wir auf zum Teil für mich unerklärliche Probleme. Ich möchte an dieser Stelle kurz zwei schildern, da wir uns ein wenig wie die Soldaten auf dem Bild fühlen, die mit vielen kleinen Nadelstichen versuchen das Schlachtross SharePoint zu bezwingen…

Bild

1. Problem: wir haben eine Dokumentenbibliothek in der ein EXCEL File liegt. In den Metadaten des Dokumentes gibt es ein Personenauswahlfeld mit eine Mehrfachauswahlmöglichkeit, welches mandatory ist. Versucht man nun die Datei zu speichern, erhält man dass übliche Pop Up in dem SharePoint die Metadaten abfragt. Aber OHNE das Personenfeld. Schließt man die Datein nun bekommt man die folgende Dialog:

natürlich möchte man als User die Datei hier nun einchecken, weil man die Bearbeitung ja abgeschlossen hat. nachdem man den Versionskommentar eingegeben hat kommt aber nun folgende Fehlermeldung:

Sehr verwirrend, warum ist meine datei gelöscht worden? Ist sie auch gar nicht. sie kann nur nicht eingecheckt werden, weil ja nicht alle Mandatory Felder ausgefüllt sind.

Lösungen:

  • keine Mehrfachauswahl: keine Lösung weil mehrerer Personen benötigt werden
  • kein Madatory Feld: keine Lösung weil für die Prozesse wichtig ist, das dort mindestens eine MA drin steht, dies ist nur durch Mandatory Felder lösbar
  • Nutzung von Excel 2007: keine Lösung weil der Kunde kein Excel 2007 im EInsatzt hat.

Folge: keine Lösung bisher

2. Problem: Anbindung von einer Oracle Datenbank in SharePoint über Business Data Catalog Felder. Sollte der Theorie nach problemlos funktionieren.

Nach einigem hin und Her wegen den SQL Statements ergibt sich aber das folgende Problem. Die reinen SQL Statements liefern innerhalb von kürzester Zeit, irgendwo im Millisekundenbereich Ergebnisse auf Suchanfragen zurück. Die BDC Felder brauchen teilweise eine Minute für die gleiche Suche.

Wir haben hier derzeit keine Lösung und auch keinen Ansatz…

ANYBODY HAS??

Link Empfehlung

Vgl. Consultants Digest

… ich habe schon im letzten Post vom Blog von Natalya Voskresenskaya gesprochen und habe mich jetzt noch ein wenig mehr auf dem Blog rumgetrieben und finde ihn sehr empfehlenswert. Ich nehme ihn deshalb in meine Blogroll auf. Der Blog ist auch hier zu finden. Einfach mal vorbeischauen, lohnt sich!

Montag, 28. Juli 2008

SharePoint implementation best practices

ich habe gerade einen sehr guten Artikel zum Thema "SharePoint implementation best practices" auf TechTarget gelesen, in dem Natalya Voskresenskaya vom Sharepoint for Squirrel Blog einige sehr richtige Aussagen über die Implememtierung von Sharepoint in den meisten Firmen macht.
Besonders den Punkt mit der IT Abteilung und dem Business und User Fokus finde ich treffend. Was sind Ihrer Ansicht nach die Dinge, die man vor der Implementierung herausfinden muss? Folgende, die ich alle nur zu 100% unterstützen kann:
  • How groups collaborate with one another.
  • What applications they are using in their daily routine. This will help you determine information sources, legacy systems and line-of-business applications.
  • The intended audience of the information that is produced.
  • Where internal activities overlap between groups.
  • Everyday challenges. (By determining this, you will identify your customer's pain points.)
  • Auditing requirements.

Alles in allem ein sehr gelungener Artikel.

International SharePoint Professionals Association

Vor kurzem ist die International SharePoint Professionals Association online gegangen. Ich habe mich heute mal auf ihrer Seite *click* umgesehen. Interessant finde ich den Ansatz mit den regionalen Evangelisten (lustiger Begriff). Für Deutschland ist wie zu erwarten war Michale Greth *click* ins Rennen gegangen. Ich werde die Seite in Zukunft häufiger besuchen und bin gespannt, wie sich dieser Ansatz weiter entwickeln wird. Vielleicht schließe ich mich auch einer SharePoint Gruppe an.

Mittwoch, 23. Juli 2008

...Merkwürdigkeiten...

...obwohl wir an dem System in den relvanten Teilen nichts geändert haben, haben heute morgen einige der Nintex Workflow nicht mehr funktioniert. Nach dem ich mir die Workflows im Detail angeschaut habe und alle Einzelheiten geprüft habe, aber keinen Fehler gefunden habe, habe ich sie einfach noch ein mal neu publiziert. Und siehe da, es funktioniert...

Das scheint eine dieser SharePoint Besonderheiten zu sein...

Dienstag, 15. Juli 2008

10 Dinge, die Sie uns hätten sagen sollen (1. Teil)

Ich habe gerade einen sehr guten Artikel gefunden, den ich hier auch verlinken möchte. Klick

Titel: 10 Things You Wish they Told You-Part 1

Thema: welche Eigenheiten hat Microsoft SharePoint 2007 und was wird dem geneigten User in der Produktbeschreibung NICHT gesagt?

Montag, 14. Juli 2008

Probleme beim Updaten von SPFieldLookup-Objekten

Ein Lookup-Feld programmatisch auf eine Liste verlinken ist ein Kinderspiel: einfach die Attribute LookupList mit der GUID der auswählbaren Liste und LookupWebId mit der jeweiligen WebID belegen. Fertig!...

Von wegen! Das ganze funktioniert nämlich nur, solange der aktuelle Benutzer Site Collection Administrator ist.

Wird das von einem User, der nicht Site Collection Administrator ist, angestoßen, kracht es und der Aufruf
spFieldLookup.LookupWebId = spRootWeb.ID;

wirft eine System.UnauthorizedAccessException: Access is denied, bzw. Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)

Eine Lösung für das Problem bietet das SDK durch den Einsatz der Methode SPSecurity.RunWithElevatedPrivileges, der ein delegate übergeben werden kann in dem dann der jeweilige Code ausgeführt wird.

Laut SDK wird die spezifizierte Methode mit FULL CONTROL-Rechten ausgeführt, egal, ob der User diese Rechte besitzt oder nicht.

Ein Beispiel dafür findet sich in der MSDN: *click*

Bei uns sieht das dann in etwa so aus (ich habe ein paar Code-Zeilen der Übersichtlichkeit halber ausgelassen):

SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPWeb site = (SPWeb)properties.Feature.Parent;
SPSite siteColl = site.Site;

// get current site
using (SPSite elevatedSiteColl = new SPSite(siteColl.ID))
{
// get current web
using (SPWeb spCurrentWeb = elevatedSiteColl.OpenWeb(site.ID))
{
// get rootweb from this web's parent site
using (SPWeb spRootWeb = (SPWeb)spCurrentWeb.Site.RootWeb)
{
...anderer code, der z.b. die liste, auf die das lookup-feld referenzieren soll, einlist...

SPFieldLookup spFieldLookup = (SPFieldLookup)spList.Fields.GetFieldByInternalName(lookupInfo.FieldInternalName);
spFieldLookup.LookupWebId = spRootWeb.ID;
spFieldLookup.LookupList = listGuid.ToString();
spFieldLookup.Update();
}
}
}
}
});

Ganz wichtig ist, dass die aktuelle SiteCollection, neu instanziiert wird. Ansonsten wird das SPSite-Objekt des aktuellen Users benutzt was ja ausserhalb des SPSecurity.RunWithElevatedPrivileges-Kontexted generiert wurde und daher keine Berechtigung hat, das Lookup-Feld zu verändern.

Meiner Meinung nach sollte diese Methode wirklich nur an Stellen benutzt werden, an denen es keine Alternative gibt, da sie das Sicherheitskonzept völlig aushebelt und dem Code, der vom aktuellen Benutzer ausgeführt wird, viele Rechte gewährt...

Site Provisioning Reihenfolge

Eine schnelle Suche nach einer Auflistung, in welcher Reihenfolge Einträge der onet.xml abgearbeitet werden, brachte mich auf folgenden Blog-Eintrag der MSDN: *click*

Ich habe den Eintrag mal ins Deutsche übersetzt:

SharePoint stellt in dieser Reihenfolge bereit:
  1. die globale onet.xml
  2. in der onet.xml definierte SiteScope-Features in der Reihenfolge, wie sie angegeben sind
  3. Stapled Features auf SiteScope-Ebene in "zufälliger" Reihenfolge
  4. in der onet.xml definierte WebScope-Features in der Reihenfolge, wie sie angegeben sind
  5. Stapled Features auf WebScope-Ebene in "zufälliger" Reihenfolge
  6. in der onet.xml definierte List Instanzen
  7. in der onet.xml definierte Modules
Das bedeutet:
  1. SiteFeatures sollten niemals von etwas abhängig sein, was durch ein WebFeature bereitgestellt wurde. Da WebFeatures immer nach SiteFeatures ausgewertet werden, kann ein SiteFeature nicht auf eine Resource angewiesen sein, die in einem WebFeature bereitgestellt wird.
  2. Features können nicht von Listen oder Dateien abhängig sein, die über die onet.xml bereitgestellt werden. Features werden vor den Dateien und Modulen, die in der onet.xml enthalten sind, verarbeitet. Trotzdem können List Instanzen und Dateien, die in der onet.xml definiert sind, Abhängigkeiten auf sich in Features befindenden List Definitionen oder List Instanzen enthalten.
  3. In der onet.xml oder in WebFeatures, die sich innerhalb des -Tags befinden, definierte List Instanzen und Module sollten niemals Abhängigkeiten auf "Stapled Features" enthalten. "Stapled Features" sind flüchtig und es kann sein, dass sie nicht im Stapel abgearbeitet werden wenn der Administrator die Konfiguration so einstellt.

Freitag, 11. Juli 2008

Fehler bei Benutzer-Auswahlfeldern, die keine sind

Höchst erfreulich ist es, wenn man zum Feierabend am Freitag noch seltsame "Fehler" gelöst bekommt und dabei sogar noch etwas lernt:

Einer Liste haben wir über unsere Solution ein UserField hinzugefügt welches wir per FeatureReceiver auf eine - vorher in einem anderen FeatureReceiver generierte - Benutzergruppe zeigen lassen um die Suche im Katalog auf diese Gruppe einzuschränken.

Das hat auch wunderbar funktioniert... Wenn ich als SiteCollection-Administrator ein neues Element innerhalb dieser Liste erstellen möchte, sieht das Formular aus, wie erwartet. Als anderer User, egal, welche Rolle (ausser dem SiteCollection-Administrator) er innehat, erscheint die "Fehlermeldung": "Das Steuerelement ist nicht verfügbar, da Sie nicht über die erforderlichen Berechtigungen verfügen."

Googeln hat leider nichts ergeben, auch das Herumspielen mit den Berechtigungen des Users oder der Gruppe, in der er Mitglied ist, blieb erfolglos.

Dann aber fiel der Groschen, als ich mich an ein früheres SharePoint-Projekt von uns erinnerte. Düster erinnerte ich mich, dort mal eine Einstellung gesehen zu haben, die schaltet, wer Mitgliedschaften einer Gruppe anzeigen darf. Und siehe da, nachdem ich über die Oberfläche die Einstellung "Jeder" vornahm, hat es plötzlich funktioniert.

Rot umrandet im unteren Bild: die "Fehlermeldung"
Grün umrandet im unteren Bild: der Soll-Zustand des Auswahlfeldes, nachdem "Jeder" gewählt wurde




Das nächste Bild zeigt die Einstellung in den Gruppeneinstellungen:



Nun galt es noch, das ganze programmatisch umzusetzen, was in drei Zeilen erledigt war:

SPGroup spGroup = siteGroups[groupTitle];
spGroup.OnlyAllowMembersViewMembership = false;
spGroup.Update();
spGroup.OnlyAllowMembersViewMembership = true; würde bewirken, dass die Einstellung "Gruppenmitglieder" gewählt wird.

Fazit: Manchmal sind Fehler gar keine Fehler im herkömmlichen Sinne. Hier muss ich wohl noch etwas mehr in die SharePoint-Denke hineinkommen. ;-)

Beschreibungen der Attribute der Solution-Bestandteile

Der Blog von André Vala bietet sehr sehr nützliche Informationen zu den einzelnen Teilen einer Solution, z.B. alles über ListInstanzen, ListTemplate-Features, ContentType-Features, SiteColumn-Features inklusive einer Beschreibung der wichtigen XML-Tag-Attribute.

List Instance Features
List Template Features
Site Content Type Features
Site Column Features

SharePoint Bekanntheit

Ich bin die letzten zwei Tage auf einer Messe für Medizintechnik gewesen und habe mich dort mit einigen Leuten aus diese Branche unterhalten.

Interessant ist, dass das Thema Microsoft SharePoint dort scheinbar noch gar nicht angekommen ist, aber einige Gesprächspartner Anforderungen und Szenarien beschrieben haben, die in meinen Augen förmlich nach einer SharePointlösung geschrien haben. Wobei man hier natürlich noch weiter ins Detail hätte gehen müssen.

Anforderungen die genannt worden sind:

  • Templatemanagement
  • Dokumenten Versionierung
  • Workflowunterstützung
  • Erzwungene Vergabe von Metadaten
  • Abkehr von Ordnerstrukturen

Ich denke, dass in diesem Bereich noch die Chance besteht auch mit einfachen Lösungen den Arbeitsablauf von vielen Mitarbeitern zu verbessern: Ich bin gespannt, ob sich dort bald konkretere Ansatzpunkte auftun…

Donnerstag, 10. Juli 2008

Best Practices: Using Disposable Windows SharePoint Services Objects

Neugierig geworden ob eines Artikels, der im WSS SDK öfter mal erwähnt wird, stieß ich eine Google-Suche an, die mir als ersten Eintrag folgenden interessanten Link zum Thema Good Coding Practice in der MSDN lieferte: *click*

Nachtrag: Ich habe den Link nun auch zu den 'wichtigen Links' in der Navigation hinzugefügt.

ItemUpdating und Afterproperties!!

Gegeben sei ein Eventhandler, welcher die Veränderung eines bestimmten Feldwertes erkennt und darauf reagieren kann.

Den alten Wert bekommt man mit properties.ListItem["FieldName"]

Den neuen Wert bekommt man theoretisch mit properties.AfterProperties["FieldName"]

Praktisch liefert das aber immer null für den neuen Wert. Man kommt aber trotzdem an den neunen Wert, indem man mit dem internen Namen des Feldes arbeitet:

properties.AfterProperties[spcurrentitem.Fields["Projektnummer"].InternalName]

Warum das so ist, erschließt sich mir leider nicht.....

Mittwoch, 9. Juli 2008

Den Defaultvalue von DateTime-Feldern ändern

Prinzipiell ist es relativ einfach den Defaultvalue von SPField-Objekten zu setzen. Wunderlich wird es allerdings, wenn z.B. der Wert "07.07.2008" aus einem DateTime-Feld in ein anderes kopiert werden soll, als neuer DefaultWert aber stattdessen dann "07.07.1907" auftaucht.

Nach etwas Herumsucherei bin ich auf diesen Blogeintrag gestoßen *click* der uns verrät, dass SharePoint das "Coordinated Universal Time"-Format (UTC) bevorzugt, also Datumswerte in der Form 'yyyy-mm-ddThh:mm:ssZ'.

Das kann ganz einfach durch die Methode .ToString("u") erzielt werden, welches ein Datum in das kulturunabhängige UTC-Format umwandelt.

Der Code des konkreten Falls sieht demnach so aus:

SPFieldDateTime abgabeDatum = (SPFieldDateTime)positionList.Fields["Abgabedatum"];
abgabeDatum.DefaultValue = ((DateTime)properties.ListItem["Abgabedatum"]).ToString("u");
abgabeDatum.Update();

Freitag, 4. Juli 2008

Navigationselemente (QuickLaunch etc.) über die onet.xml bearbeiten

In unserem aktuellen Projekt sollen in einer SiteCollection sehr viele Subwebsites angelegt werden können. Nun erscheinen diese alle als Link im Quicklaunchmenü im Rootweb. Nach einiger vergeblicher Recherche im SDK bin ich auf dieses Blogpost gestossen: *click*

Genau das hatte ich gesucht! Meiner Meinung nach konnte es nicht angehen, dass Einstellungen an der Navigation, die über die Oberfläche vorgenommen werden können, nur über programmatische Lösung via ObjektModell realisiert werden können, wie mir das in div. SharePoint-Büchern vorgeschlagen wird und dieser Blogpost beschreibt genau die Parameter, die es gibt um über die onet.xml die Navigation zu manipulieren.

Um jetzt also zu verhindern, dass Subwebsites im Quicklaunch angezeigt werden, muss folgender XML-Code im -Block der onet.xml für das Rootweb eingetragen werden:


<Feature ID="541F5F57-C847-4e16-B59A-B31E90E6F9EA">
<properties xmlns="http://schemas.microsoft.com/sharepoint/">
<property key="InheritGlobalNavigation" value="false">
<property key="ShowSiblings" value="false">
<property key="IncludeSubSites" value="false">
</properties>
</Feature>


IncludeSubSites : (false/true) Hiermit wird de/aktiviert, ob Subwebsites im Quicklaunch des Rootwebs angezeigt werden sollen.
InheritGlobalNavigation: (false/true) De/aktiviert, ob die Navigation des Rootwebs auf die Subwebsite vererbt werden soll.
ShowSiblings: (false/true) Was man jetzt genau hier de/aktivieren kann, habe ich noch nicht so direkt herausgefunden. Ich nehme an, dass es sich hierbei um Websites auf der gleichen Ebene handelt, die über einen Navigationslink erreichbar sind. Wer hierzu etwas sagen kann, möge das bitte als Kommentar schreiben :-)

Webparts mit Flash/Silverlight

Hier mal ein interessanter Link, wie man Flash bzw. Silverligt Inhalte in ein Webpart bekommt. Da würden mir einige coole Sachen einfallen, um der etwas lahmen Sharepoint-Oberfläche die nötige Dynamik zuverpassen.

http://ktskumar.wordpress.com/2008/03/01/silverlight-webpart-for-sharepoint/

Donnerstag, 3. Juli 2008

Visuelle Workflow Unterstützung

In einem aktuellen Projekt arbieten wir für die schon erwähnte Workflowunterstützung mit einem Tool einer australischen Firma Namens Nintex. Deren Website findet man hier.
Das Tool mit dem Namen Nintex Workflow 2007 bieten eine visuelle Oberfläche, mit der man in der Lage ist, relativ schnell auch komplexere Workflow abzubilden, in dem man vorgefertigte Actions per Drag and Drop an die entsprechende Stelle zieht.

Probleme treten dabei meist auf, wenn man tiefer in die Details der einzelnen Workflowschritte geht (dazu im Detail mehr an anderer Stelle), beispielsweise, wenn man:
  • Werte aus einem anderen Subweb braucht
  • Auf eine Änderung einer Entität in einer anderen Liste warten möchte
  • Workflows mit einer Solution deployen möchte
  • ...

Was aber sehr gut funktioniert ist der Support von Seiten Nintex, sie antworten sehr schnell und effektiv auf E-Mail Anfragen und sind auch in Telefonkonferenzen konstruktiv und sehr stark lösungsorientiert.

Trotz mancher Stolpersteine denke ich das es eine gute Wahl ist, mit NintexWorkflow 2007 zu arbeiten.

Copy & Paste zwischen Hyper-V-Images

Ich arbeite auf meinem Rechner neben SharePoint noch an anderen Projekten (z.B. Java Web, .net usw), die alle in eigenen technologieunabhängigen Images laufen. Ab und zu ist es nötig, Texte von einem Image zu einem anderen zu kopieren, z.B. lange URLs oder Logauszüge aus einem Image ins ICQ auf dem Hostrechner. Da ist es schon sehr ärgerlich, wenn das nicht funktioniert, weil Hyper-V es anscheinend nicht unterstützt.

Abhilfe schafft das klein Tool "BeyondCopy", welches man hier (http://beyondcopy.sourceforge.net/) herunterladen kann und einfach auf den beiden (oder mehreren) Rechnern installiert, auf denen man kopieren und einfügen möchte. Dann müssen dort noch die anderen Rechnernamen eingetragen werden, auf die man kopieren möchte und fertig ist die Laube.

SharePoint Einführung

Für alle, die schon immer einen schnellen Überblick über Kernfunktionalitäten von SharePoint haben wollten, kann ich das folgende Video empfehlen:



Leider ist die Qualität nicht so überzeugend, aber die Sprecherin stellt die Vorteile einzelener SharePoint Features sehr schön heraus.

Mittwoch, 2. Juli 2008

BDC-Felder und die Fehlermeldung HRESULT 0x80040e14

Eine Anforderung in unserem aktuellen Projekt ist es, in einer von uns erstellten Benutzerdefinierten Liste (Custom List) Business Data Catalog-Felder (BDC-Felder) anzubieten. Um sie in unsere Solution zu integrieren, sind wir bisher so vorgegangen:

  1. BDC-Feld der Liste manuell hinzufügen
  2. Liste mit Hilfe des Solution Generators extrahieren
  3. Felddefinition aus der extrahierten schema.xml übernehmen und in unsere vorhandenen .xml-Files einbinden:
  • eine s2sfields.xml, die sämtliche unserer verwendeten Website-Columns beinhaltet
  • eine s2stypes.xml, die unsere verwendeten ContentTypes beinhaltet und
  • die schema.xml, die unser Listentemplate beschreibt
Nachdem wir die Solution dann installiert hatten und einen Eintrag in der Liste vornehmen wollten, kam, nachdem wir das Formular abschickten, diese Fehlermeldung:

HRESULT: 0x80040e14

Nach einiger Verzweiflung und rumgegoogle haben wir uns dann das SharePoint-Log noch einmal genauer angesehen und sind dann auf diese Fehlermeldung gestoßen, die uns tatsächlich einmal weiter geholfen hat:

Unexpected query execution failure, error code 8143. Additional error information from SQL Server is included below. "Der '@nvarchar3'-Parameter wurde mehrmals bereitgestellt." Query text (if available): "SET NOCOUNT ON; DECLARE @ItemId int,@@iRet int,@ExtraItemSize int,@DN nvarchar(256),@LN nvarchar(128),@@S uniqueidentifier,@@DocUIVersion int,@@Level tinyint;SET @@S='91713DD8-88FA-448A-8596-67313E781F4F';SET @@Level=1;SET @@DocUIVersion = 512;BEGIN TRAN;SET @ItemId=NULL;SET @DN=N'websites/speed2sales/as1/Lists/BasicList';SET @LN=NULL;SELECT @ExtraItemSize = 0 EXEC @@iRet = proc_AddListItem @SiteId = '91713DD8-88FA-448A-8596-67313E781F4F',@WebId='0770642C-837D-4897-AF07-1B28D3F0C212',@ListID = 'F9870FF9-DA52-40F3-A77A-80D98A7F461B',@RowOrdinal = 0,@ItemDocType = 0,@ItemId = @ItemId OUTPU...
Unexpected ...T,@ItemDirName=@DN OUTPUT,@ItemLeafName=@LN OUTPUT,@UserID = 1,@TimeNow = '20080702 13:40:20',@ServerTemplate = 100,@Basetype= 0,@Level= 1,@tp_GUID ='03863A1B-2194-41FC-911F-D85A480DC4B8',@AddNamespace=1,@CheckDiskQuota=1, @tp_ContentTypeId = ?, @nvarchar29 = ?, @nvarchar32 = ?, @nvarchar33 = ?, @nvarchar34 = ?, @int1 = ?, @nvarchar2 = ?, @nvarchar28 = ?, @nvarchar3 = ?, @nvarchar4 = ?, @nvarchar5 = ?, @nvarchar6 = ?, @nvarchar3 = ?, @nvarchar4 = ?, @nvarchar5 = ?, @nvarchar6 = ?, @nvarchar7 = ?, @nvarchar8 = ?, @nvarchar9 = ?, @nvarchar10 = ?, @nvarchar11 = ?, @nvarchar12 = ?, @nvarchar13 = ?, @nvarchar14 = ?, @nvarchar15 = ?, @nvarchar16 = ?, @nvarchar17 = ?, @nvarchar18 = ?, @int2 = ?, @nvarchar35 = ?, @datetime1 = ?, @datetime2 = ?, @datetime3 = ?, @datetime4 = ?, @datetime5 = ?, @date...
Unexpected ...time6 = ?, @datetime7 = ?, @datetime8 = ?, @float1 = ?, @nvarchar36 = ?, @int3 = ?, @ntext2 = ?, @int4 = ?, @int5 = ?, @int6 = ?, @int7 = ?, @int8 = ?, @int9 = ?, @int10 = ?, @ntext3 = ?, @nvarchar37 = ?, @tp_ID = ?, @tp_ContentType = ?, @tp_Modified = ?, @tp_Created = ?, @tp_ModerationStatus = ?, @Size = 266, @ExtraItemSize = @ExtraItemSize ,@ItemName=N'UKSH',@acl=0xF3FE000001000000000000000C00000001000000001001083000000002000000FFFFFFFFFFFFFF7F0300000041104308B000000004000000FFFFFFFFFFFFFF7F0500000061104308B000000006000000EF12433CB001000007000000001001083000000008000000FF1B5F3CB001000009000000EF1BE77EF00100400A000000FF13433CB00100000B00000021100308300000000C0000000010010830000000; IF @@iRet <> 0 BEGIN ROLLBACK TRAN; GOTO DONE; END SELECT @ExtraItemSize = 0 EXEC @@iRet = proc_AddListItem...
Unexpected ... @SiteId = '91713DD8-88FA-448A-8596-67313E781F4F',@WebId='0770642C-837D-4897-AF07-1B28D3F0C212',@ListID = 'F9870FF9-DA52-40F3-A77A-80D98A7F461B',@RowOrdinal = 1,@ItemDocType = 0,@ItemId = @ItemId OUTPUT,@ItemDirName=@DN OUTPUT,@ItemLeafName=@LN OUTPUT,@UserID = 1,@TimeNow = '20080702 13:40:20',@ServerTemplate = 100,@Basetype= 0,@Level= 1,@tp_GUID ='03863A1B-2194-41FC-911F-D85A480DC4B8',@AddNamespace=1,@CheckDiskQuota=1, @datetime1 = ?, @Size = 0, @ExtraItemSize = @ExtraItemSize ,@ItemName=N'UKSH',@acl=0xF3FE000001000000000000000C00000001000000001001083000000002000000FFFFFFFFFFFFFF7F0300000041104308B000000004000000FFFFFFFFFFFFFF7F0500000061104308B000000006000000EF12433CB001000007000000001001083000000008000000FF1B5F3CB001000009000000EF1BE77EF00100400A000000FF13433CB00100000B00000021100308300...
Unexpected ...000000C0000000010010830000000; IF @@iRet <> 0 BEGIN ROLLBACK TRAN; GOTO DONE; END EXEC proc_ClearLinks @@S,@DN,@LN,@@Level,'6BA51930-9043-4ACC-8783-27C3FE29B6C8'; EXEC proc_ClearLinks @@S,@DN,@LN,@@Level,'15877298-3228-4D5B-A5A5-E45D53BCBC67';COMMIT TRAN; DONE: SELECT @@iRet, @ItemId "
Medium Unknown SPRequest error occurred. More information: 0x80040e14
An "nvarchar3" konnte ich mich erinnern, das taucht als Wert beim Attribut ColName in der extrahierten Felddefinition für das BDC-Feld auf:

Und da ging mir dann das Licht auf: wir hatten im Laufe der letzten Wochen öfter einige Änderungen an den BDC-Feldern vorgenommen, bzw. neue hinzugefügt, alte gelöscht usw.
Und natürlich nicht jedes mal alle Feld neu extrahiert sondern immer nur die veränderten.

Dadurch existierten dann im Code tatsächlich mehrere Definitionen unterschiedlicher BDC-Felder mit den Attributen ColName="nvarchar3".

Daraufhin änderten wir alle nvarcharXX-Einträge so ab, dass von oben nach unten nun die Zahlen in aufsteigender Reihenfolge vergeben wurden, also nvarchar1, nvarchar2, etc.

Et vóila: der Fehler war beseitigt! :-)

Darauf müssen wir aufpassen, wenn wir bei späteren Change Requests weitere BDC-Felder hinzufügen, verändern oder was auch immer.

Nachtrag: Wer lesen kann, ist klar im Vorteil: das WSS-SDK sagt zu ColName folgendes:

"Optional Text. An internal attribute that defines the mapping of the field to the physical storage name for this field. This must be a valid name in the underlying database and must be identical to the name used in the database table. If not specified, the server generates a column name that does not collide with any existing column names and that contains only characters that are allowed by Microsoft SQL Server."

Wenn wir dieses Attribut also komplett aus sämtlichen unserer Felddefinitionen entfernen, sollten wir weder jetzt noch bei zukünftigen Updates Probleme damit bekommen.

Workflowunterstützung Anspruch und Wirklichkeit

In vielen Projekten und gerade im SharePoint Umfeld trifft man auf die Anforderung, dass die Lösung auf jeden Fall „eine Workflowunterstützung“ haben muss. Das scheint bei Kunden dann das Gefühl auszulösen, dass damit alle Probleme, die Sie mit internen Prozessen haben gelöst würden. Dies ist auf Grund verschiedener betrieblicher Aspekte meist nicht der Fall.

  • Prozesse sind nicht genau definiert
  • Zeitdruck führt zu einer Abkehr von den normalen Abläufen
  • Verschiedene Mitarbeiter bearbeiten Prozessschritte in unterschiedlichen Reihenfolgen
  • Eine einheitliche Prozessdefinition ist nicht zu erreichen
  • Regelmäßige Änderungen an Prozessen
  • Verschiedene Produkte oder Aufgaben erfordern verschiedene Abläufe


All diese Aspekte führen dazu, dass eine optimale Workflowunterstützung für bestehende Prozesse beim Kunden schwierig ist.


SharePoint und verschiedene Drittanbieter bieten zwar mehr oder weniger elegante Lösungen zur Modellierung von Workflows (hierzu an andere Stelle mehr), allerdings erweist es sich meist, dass die Probleme nicht bei der technischen Modellierung sondern bei der Erarbeitung der Arbeitsabläufe und deren Implementierung auftreten.


Es kommt dann sehr schnell zu Problemen, falls Mitarbeiter ihre Arbeitsweise ändern müssen, oder bestehende Arbeitsweisen auf eine neue „SharePoint Denke“ umgestellt werden müssen. Dies erfordert von Seiten der Beratung und des Projektmanagement (sowohl auf Dienstleister- als auch auf Kundenseite) Fähigkeiten im Bereich Change Management, um Projekte nicht schon bei der Einführung an Widerständen bei den Nutzern scheitern zu lassen.

Montag, 30. Juni 2008

"How to build a SharePoint development machine"

Den Artikel hätten wir auch mal früher lesen können: *click*

Hier wird beschrieben, welche Voraussetzungen und Werkzeuge man benötigt, um SharePoint-Projekte umzusetzen, sowohl für Clients als auch für Server.

Probleme mit Entwicklung auf 64-Bit-Systemen

Obwohl Microsoft die Verbreitung ihrer 64-Bit-Betriebssysteme vorantreibt, mangelt es seitens der SharePoint-Werkzeuge an fehlender Unterstützung dafür.
Ich habe einen neuen Rechner vorgesetzt bekommen, auf dem ein Windows Server 2008 Enterprise läuft. Auf dem Gastsystem zur Entwicklung läuft eine Windows Server 2003 Enterprise x64-Version.
Zu früh gefreut ob der guten Ausnutzung meiner Hardware (Quadcore, 6 GB RAM, Hyper-V etc.): bereits beim Versuch, die "Windows SharePoint Services 3.0 Tools: Visual Studio 2005 Extensions" zu installieren, kam eine Fehlermeldung, dass keine 64-Bit-Betriebssysteme unterstützt werden. Mit ein wenig Hackerei der .msi-Datei (eine genaue Anleitung dazu steht hier in den Userkommentaren) gelang es mir dann doch, das Setup auszuführen.

Immerhin kann ich jetzt auf die erweiterten Projekttemplates im Visual Studio zugreifen.
Aber leider stürzt der Solution Generator bereits beim Start ab.

Ich denke, ich werde mir demnächst etwas Zeit verschaffen und auf einem weiteren Image ein 32-Bit-Windows installieren, damit ich alle Tools problemlos nutzen kann.

Nachtrag: Auch bei anderen - nicht SharePoint-bezogenen - Projekten macht sich bemerkbar, wieviele Anwendungen Probleme mit x64 haben, auch für diese Projekte bin ich zurück auf ein Image mit 32-Bit-Windows XP gegangen.