Den höchsten Wert aus einer Spalte ermitteln und aus andern Listen Spalten abfragen mit SharePoint Designer 2013 Workflows

Dieser Artikel ist Teil einer Serie. Hier sind die weiteren Artikel

Workflows mit SharePoint Designer – Grundlagen
Genehmigungen mit SharePoint Designer 2013 Workflows

Dies ist der dritte Teil der Serie über Workflows in SharePoint Designer. Diesmal möchte ich den höchsten Wert einer Spalte, z.B. eine laufende Nummer, ermitteln sowie Werte aus anderen Listen abfragen. Beides werde ich in einem Workflow darstellen.

Der Gedanke hinter dem Workflow ist, das der Workflow einen Eintrag erstellt, z.B. einen neuen Eintrag in eine Projektliste und dabei eine Projektnummer vergeben wird. Diese ist ungleich der ID des Listeneintrages und setzt sich zusammen aus der ID des Eintrages und der laufenden Nummer des vorherigen Eintrages plus 25. Um dies zu ermöglichen, muss ich innerhalb meiner Liste nachschlagen. Wir werden aber sehen, dass es keinen Unterschied macht, ob ich in der Liste nachschlage wo der Eintrag erstellt wird oder in einer andern Liste. Dieser Workflow wird nur funktionieren, wenn Sie keine Einträge aus der Liste löschen. Eine kleine Beispielliste finden Sie in der Abbildung unten. Der Workflow startet in der Regel bei einer Neuanlage.

2018-02-01_16h02_13

Erstellen Sie zuerst einen 2013er SharePoint Designer Workflow, wie im ersten Artikel der Serie beschrieben. In diesem neuem Workflow erstellen Sie zuerst folgende Variablen wie in der Abbildung unten. Klicken Sie dafür in der Menüleiste ganz rechts auf Lokale Variablen. Geben Sie dann jeweils einen Namen und den Typ ein.

2018-02-01_15h28_54

Die Liste der neuen Variablen.

 

2018-03-19_08h21_07

Fügen Sie dann die Aktion Workflowvariable festlegen in Stufe 1 des Workflows ein. Klicken Sie auf Workflowvariable und wählen Sie Element-ID aus. Klicken Sie auf Wert und dann auf das kleine Formelzeichen. Lassen Sie im folgenden Fenster die Datenquelle auf Aktuelles Element und wählen Sie bei Quellfeld ID aus. Mit OK bestätigen.

2018-02-01_15h50_42

Fügen Sie dahinter die Aktion Berechnung ausführen aus den Hauptaktionen ein. Um die Aktion richtig zu konfigurieren, müssen Sie auf die Variable zugreifen, was sich aber nicht gleich erschließt. Klicken Sie auf den linken Link in der Aktion, welcher mit Wert beschriftet ist und dann auf das kleine Formelzeichen. Wählen Sie im folgenden Fenster in der Datenquelle Workflowvariable und -parameter und wählen Sie im  Quellfeld Variable: Element-ID aus. Mit OK bestätigen. Konfigurieren Sie die Aktion weiter wie in der Abbildung gezeigt.

2018-02-01_15h58_21

Fügen Sie dann eine weitere Aktion Workflowvariable festlegen ein. Wählen Sie die Variable Laufende Zahl vorheriger Eintrag aus und klicken Sie auf Wert und das Formelsymbol. Hier wird es spannend. Das folgende bezieht sich auf die Liste in der Abbildung oben, aus dem Eintrag vorher möchte ich die laufende Nummer extrahieren.

In der Datenquelle scrollen Sie nach unten und wählen Sie die aktuelle Liste  (Projektliste) aus. Natürlich können Sie auch jede andere Liste auswählen, wenn Sie aus dieser Daten möchten. Bei Quellfeld wählen Sie das Feld laufende Nummer. Dies ist das Feld, dessen Wert wir auslesen möchte. Allerdings weiß jetzt der Workflow noch nicht, aus welcher Zeile wir den Wert haben möchten. Im Fenster unten können Sie über Listenelement suchen jetzt diese Zeile angeben. Konfigurieren Sie dies so wie in der Abbildung gezeigt. Dazu wählen Sie bei Feld ID und in Wert klicken Sie auf das Formelsymbol. Dort wählen Sie wieder in Datenquelle Workflowvariable und –parameter und Variable: Element-ID vorheriger Eintrag.

2018-02-01_16h38_42

Zu der Variable laufende Nummer muss jetzt noch der Wert 25 addiert werden. Dazu verwenden wir die schon oben benutzte Aktion.

2018-02-01_16h57_00

Anschließend erzeugen wir die Projektnummer. Fügen Sie die Aktion Workflowvariable festlegen ein. Die Variable ist Projektnummer. Klicken auf Wert und diesmal auf die drei Punkte neben dem Eingabefeld. Im neuem Fenster klicken Sie auf Nachschlagevorgang hinzufügen oder ändern. Fügen Sie jetzt die Variable Variable: Element-ID, einen Bindestrich und Variable: Laufende Zahl vorheriger Eintrag ein.

2018-02-01_16h46_32

Jetzt müssen wir nur noch den Wert in den neuen Eintrag schreiben. Fügen Sie dazu die Aktion Feld im aktuellen Element festlegen ein. Bei Feld wählen Sie Projektnummer und bei Wert die Variable Projektnummer. Fügen Sie noch den Abschluss des Workflows hinzu. Der fertige Workflow sollte wie die Abbildung unten aussehen.

2018-02-01_16h57_24

Probleme? Fragen? Einfach in die Kommentare unten schreiben.

Genehmigungen mit SharePoint Designer 2013 Workflows

 

Dieser Artikel ist Teil einer Serie. Hier sind die weiteren Artikel

Workflows mit SharePoint Designer – Grundlagen

Dies ist der zweite Teil der Serie über Workflows in SharePoint Designer. Nachdem ich im ersten Teil über die Grundlagen von Workflows geschrieben und einen kleinen Beispielworkflow entwickelt habe, wird es jetzt konkreter. Dieses Beispiel zeigt, wie Sie einfache Genehmigungen mit SharePoint Designer erstellen können. Dabei können Sie zuerst nur Zustimmen oder Ablehnen. Wie Sie auch weitere Status einbauen können, erläuterte ich in einem späteren Blogbeitrag.

Damit die Genehmigungen einfach gelingen, erstellt SharePoint eine Aufgabe in einer Liste, welchen dem Workflow zugeordnet ist. Wenn keine Liste dafür vorhanden ist, wird der Workflow selber eine erstellen. Sobald die Freigabe beginnt, wird der Workflow eine Aufgabe erstellen und den darin zugewiesenen Benutzer per E-Mail informieren. Die E-Mail enthält einen Link zur Aufgabe, allerdings immer nur im Ansichts (View) Modus. Das heißt, der Benutzer muss immer noch einmal klicken um die Aufgabe abzuschließen. Dies muss in der Regel geschult werden! Nach der Auswahl der Antwort können Sie im Workflow verzweigen und entsprechend darauf reagieren.

Workflow für Genehmigungen erstellen

Erstellen Sie zuerst einen 2013er SharePoint Designer Workflow, wie im vorherigen Artikel beschrieben. Fügen Sie dem Workflow drei weitere Stufen hinzu. Klicken Sie dazu unterhalb der ersten Stufe und wählen Sie Stufe aus dem Abschnitt Einfügen im Menüband. Wenn Sie in die Überschrift einer Stufe klicken, können Sie diese auch umbenennen. Fertig sollte es dann in etwa wie in der folgenden Abbildung aussehen.

2018-02-01_13h08_56

Klicken Sie jetzt in die erste Stufe und fügen Sie dort die Aktion Aufgabe zuweisen hinzu. Klicken Sie auf dieser Benutzer um die Aufgabe zu konfigurieren. Es erscheint ein Formular, in welchen Sie verschiedene Angaben machen müssen. Dabei sind Pflichtangaben leider nicht als solche gekennzeichnet. Pflicht ist der Teilnehmer und der Titel der Aufgabe. Beachten Sie bitte, dass das Feld Beschreibung die Beschreibung der Aufgabe ist, nicht der Inhalt der E-Mail die der Benutzer erhält. Wenn Sie diese anpassen möchten, gehen Sie auf E-Mail-Optionen und klicken Sie auf E-Editor öffnen.

2018-02-01_12h39_49

Klicken Sie zum Schluß auf OK. Die Aktion hat automatisch zwei Variablen erstellt:

  • Ergebnis – Diese Variable enthält den Wert, den der Benutzer beim abschließen der Aufgabe ausgewählt hat.
  • AufgabenID – Die ID des Listenelements in der Aufgabenliste. Damit kann man z.B. Kommentare nachschlagen, welche ein Benutzer während der Freigabe gemacht hat.

Wichtig ist für uns die Variable Ergebnis. Um anhand dieser Variable zu verzweigen, klicken Sie in der Stufe Stufe 1 in Übergang in Phase und fügen Sie die Bedingung Wenn ein beliebiger Wert gleich dem Wert ist ein. Fügen Sie NICHT zuerst die Aktion Gehe zu einer Stufe ein. Wenn Sie diese Aktion schon eingefügt haben, löschen Sie diese wieder. Die Bedingung läßt sich nämlich sonst nicht einfügen.

In der Bedingung wählen Sie zuerst die Variable Ergebnis aus. Klicken Sie dazu zuerst auf den ersten Link mit der Beschriftung Wert und dann auf das Formelsymbol. Im Dropdown wählen Sie nicht aktuelles Element, sondern Workflowvariablen und- parameter aus. Im Quellfeld wählen Sie Ergebnis aus. Bestätigen Sie die Auswahl mit OK. Klicken Sie im zweiten Link auf Wert und wählen Sie Genehmigt aus. Fügen Sie jetzt zweimal die Aktion Gehe zu einer Stufe ein und konfigurieren Sie diese wie in der folgenden Abbildung gezeigt.

2018-02-01_12h58_15

Natürlich können Sie im Fall Anderfalls auch Stufe 1 auswählen. Damit nerven Sie den Freigeber so lange, bis dieser aus lauter Verzweiflung zustimmt 🙂

In den jeweiligen Stufen nach der Stufe 1 können Sie jetzt auf die jeweilige Auswahl reagieren. Was Sie darin machen, bleibt Ihnen überlassen. Da in vielen Workflows der Abschluss gleich ist, egal was in der Freigabe ausgewählt wurden, gehen beide Stufen nach deren Durchlaufen zur Stufe Workflows beenden. Dort können Sie dann noch abschließende Aktionen vornehmen und den Workflow beenden. Der fertige Workflow sollte dann in etwa wie die folgende Abbildung aussehen, auf die Aktionen und Bedingungen in den nachfolgenden Stufen habe ich verzichtet.

2018-02-01_13h07_27

Natürlich können Sie dann auch in der Stufe Freigabe erfolgt eine weitere Freigabe einbauen usw. Alles in allem ist es eine recht einfache und praktische Art und Weise um Freigaben zu gestalten.

Workflows mit SharePoint Designer

Dies ist der Start einer Serie, in welcher ich verschiedene Workflows vorstelle, welche mit SharePoint Designer 2013 erstellt werden und in Projekten immer wieder auftauchen. Zum Start der Serie gibt es zuerst eine kleine Übersicht über SharePoint Workflows und SharePoint Designer generell. Die folgenden Artikel werden dann die folgenden Workflows beschreiben:

  • Genehmigungen mit SharePoint 2013 Workflows
  • Den höchsten Wert aus einer Spalte ermitteln und aus andern Listen Spalten abfragen mit SharePoint Designer 2013 Workflows
  • Eine Unterwebsite anlegen mit SharePoint Webservices

Übersicht über SharePoint Workflows

SharePoint kommt bisher mit zwei unterschiedlichen Workflow Plattformen, den 2010 und den 2013 Workflows. Die Zahl gibt dabei an, wann diese Workflows Plattformen in SharePoint gekommen sind. Beide Workflow Plattformen können auch in SharePoint 2016 und in der aktuellen SharePoint Online Plattform verwendet werden. Ich empfehle, immer wenn möglich, mit den 2013er Workflows zu arbeiten.

Die folgende Tabelle gibt einen Überblick über die wichtigsten Unterschiede und Gemeinsamkeiten beiden Plattformen.

Thema 2010 Workflows 2013 Workflows
Verfügbarkeit Nach Installation SharePoint, keine weiteren Schritte notwendig. Nach Installation bzw. Verbindung zum Workflow Manager. Sonst nicht verfügbar.
Last der ausgeführten Workflows Liegen auf SharePoint Server Installation des Workflow Managers. Dieser kann, aber muss nicht auf einem SharePoint Server installiert werden. Wenn der Workflow Manager auf einem SharePoint Server läuft, liegt dort natürlich auch die Last.
Braucht Client auf SharePoint Server Nein Ja, auf Frontendserver sofern dort nicht der Workflow Manager installiert ist.
Schleifen im Workflow Nein, bzw. extrem aufwendig Ja
Starten eines Workflows
  • Manuell
  • Änderung
  • Neuerstellung
  • Manuell
  • Änderung
  • Neuerstellung
Startreihenfolge ändern, wenn mehrere Workflows automatisch starten Nein Nein
Startformular eines Workflows Immer Nur wenn explizit gewünscht.
Deklarativ Ja Ja
Anzahl der Workflow welche  gleichzeitig starten 6 pro Sekunde/Webserver 6 pro Sekunde/Webserver
Anzahl der Workflows welche gleichzeitig in einer Inhaltsdatenbank laufen. Kommen mehr Workflows, werden diese in eine Warteschleife gelegt.

Dabei führt ein Workflow eine Aktion aus, das Warten auf den Abschluss eine Aufgabe zählt z.B. nicht dazu, allerdings das Erstellen der Aufgabe.

15 15
Transaktionssicher Nein Nein
Kompatibel mit jeweils anderer Version Nein Nein
Kann gebunden werden an
  • Liste
  • Inhaltstyp
  • Website
  • Liste
  • Inhaltstyp
  • Website

 

Einen einfachen Workflow mit SharePoint Designer erstellen

Wenn Sie einen Workflow mit SharePoint Designer erstellen möchten, so müssen Sie diesen zuerst herunterladen von https://www.microsoft.com/de-de/download/details.aspx?id=35491. Die 2013er Version ist dabei die letzte, es gibt keinen SharePoint Designer für 2016, allerdings kann der 2013er Designer für SharePoint 2016 und SharePoint Online verwendet werden. Wenn Sie auf den Rechner, auf dem SharePoint Designer installiert werden soll, schon andere Office Programme installiert haben, so muss der Designer die gleiche Bitzahl haben. Sie können also keinen 64 Bit SharePoint Designer neben einen 32 Bit Office installieren. Idealerweise haben Sie auch die gleiche Installationssprache.

Nach der Installation öffnen Sie den SharePoint Designer und verbinden sich zu Ihrer Website. Als Beispiel werde ich einen einfachen Listen-Workflow erstellen, der eine E-Mail verschickt. Natürlich muss dafür der E-Mail Versand in der Zentraladministration (on premise) konfiguriert sein. Wenn Sie SharePoint Online verwenden geht es sofort. Die nächsten Workflows werden dann komplexer 🙂

Wenn Sie sich zur Site verbunden haben, sehen Sie links eine Navigation, welche an dritter Stelle den Punkt Workflow enthält. Klicken Sie auf diesen.

2018-01-31_12h40_32

Sie sehen dann, sofern vorhanden, die auf dieser Site vorhandenen Workflows. Dabei werden auch die SharePoint Systemeigenen Workflows aufgeführt, sofern diese vorhanden sind. Um einen neuen Listen-Workflow zu erstellen, klicken Sie oben links auf Listenworkflow und wählen Sie die Liste aus in der der Workflow erstellt werden soll.

2018-01-31_12h43_04

Wenn Sie 2013er Workflows zur Verfügung haben, wird Ihnen jetzt ein Fenster gezeigt, in welchen Sie dem neuen Workflow einen Namen und eine Beschreibung vergeben können und die 2013 Plattform schon vorausgewählt ist. Natürlich können Sie im Dropdown auch die 2010er Plattform auswählen. Beachten Sie, dass Sie den Plattformtyp nachträglich nicht ändern können.

Wenn Sie keine 2013 Plattform haben, steht eben auch nur die 2010 Plattform zur Auswahl. Ich verwende beim Namen des Workflows übrigens gern die Plattform mit, damit ich im Fall der Fälle gleich weiß wo ich bei Problemen nachschauen kann. In beiden Fällen dauert es eine Weile bis Sie beginnen könnnen den Workflow zu erstellen, SharePoint Designer muss erst noch Daten vom SharePoint Server laden.

2018-01-31_12h43_16

Beispiel Workflow mit der 2010er Plattform

Im Workflow Designer haben Sie in der Menüleiste im Abschnitt Einfügen die Punkte Bedingungen und Aktionen. Die sind die Bestandteile, aus denen ein Workflow besteht. Es sollte sich jetzt ein oranger Strich im Designer befinden. Dies ist die Stelle, wo die Bedingung oder die Aktion eingefügt wird.

Klicken Sie auf Aktionen und wählen Sie die Aktion E-Mail senden aus.

2018-01-29_08h22_11

Die meisten Aktionen müssen erst noch konfiguriert werden. Dazu klicken Sie auf den blauen Link, welcher den entsprechenden Dialog öffnet.

2018-01-31_07h54_41

In der Aktion E-Mail müssen Sie einen Empfänger und einen Betreff eingeben, der Rest ist optional. Klicken Sie zum Abschluss auf OK.

Um den Workflow zu veröffentlichen, klicken Sie oben links auf Veröffentlichen.

2018-01-31_07h58_01

Wenn Sie Fehler im Workflow haben, so wird Ihnen dies mitgeteilt. Sie müssen diese zuerst korrigieren und müssen dann noch einmal veröffentlichen.

Beispiel Workflow mit der 2013er Plattform

Das Erstellen und Einfügen der Aktionen und Bedingungen ist analog eines 2010er Workflows. Allerdings sieht hier der Editor etwas anders aus.

2018-01-31_12h43_34

Sie müssen vor dem Veröffentlichen immer noch eine Aktion in den Abschnitt Übergang in Phase einfügen. Klicken Sie dazu in den Bereich Übergang in Phase und dann auf Aktion. Dort sollte es nur eine Aktion geben: Gehe zu einer Stufe. Konfigurieren Sie diese Aktion mit einen Klick auf den Link in der Aktion und wählen Sie Ende des Workflows. Anschließend können Sie ganz normal veröffentlichen.

2018-01-31_12h43_43

Sofern Sie das manuelle Starten eines Listenworkflow konfiguriert haben, können Sie den Workflow immer aus dem Kontextmenü eines Listenelementes starten. Bei SharePoint Online müssen Sie dazu in die klassische Ansicht umschalten.

 

Modern Sites Pages in SharePoint online deaktivieren

Modern Sites Pages sind eine im Sommer 2017 eingeführte Funktion in SharePoint online um Webseiten (Site pages) zu erstellen. Dies ist jetzt die Standardfunktion, d.h. wenn ein Benutzer eine neue Webseite (Page) erstellt, erstellt er eine Modern Sites Page. Auch wenn diese Seiten sehr interessant sind und viele spannende Möglichkeiten bieten, gibt es doch einige Nutzer welche die klassischen Wikiseiten bevorzugen. Dieser Blogartikel erläutert Ihnen wie Sie die statt Modern Sites Pages wieder herkömmliche Wikiseiten erstellten können. Die folgende Abbildung zeigt eine Modern Sites Page unmittelbar nach dem Erstellen.

Sie können die Funktion im Browser nur auf Ebene des Webs deaktivieren, nicht auf Ebene der Sitecollection. Gehen Sie dafür in die Websiteeinstellungen und dort in die Websitefeatures.

Suchen Sie dort das Feature Site Pages – Allows users to add new site pages to a site oder in Deutsch Websiteseiten – Gestattet Benutzern, neue Websiteseiten zu einer Website hinzuzufügen. Deaktivieren Sie das Feature, das war es dann auch schon. Schon vorhandene Seiten bleiben natürlich erhalten.

Jahresabschluss 2017

Das Jahr neigt sich dem Ende und gibt mir damit Gelegenheit alles Lesern dieses Blogs zu danken. Wenn ich der Statistik trauen darf, waren in 2017 ca. 9000 Besucher auf diesem Blog. Es hätten viel mehr sein können, aber ich hatte dieses Jahr von https://nicothiemer.wordpress.com auf https://nicothiemer.de umgestellt, was mir Google eine ganze Weile übel genommen hat. Die Situation bessert sich aber zusehends.

Der am meisten gelesene Artikel ist der zum Verschieben von Listen, dicht gefolgt von Ampelfunktion für Aufgabenlisten. Danach folgt, und das freut mich ganz besonders, Verwalten von Vorlagen mit SharePoint und Inhaltstypen. Metadaten und Inhaltstypen sind und bleiben das Grundkonzept von SharePoint.

Ich habe einige neue Blogs in Planung; wenn jemand eine Idee hat was ich mal schreiben soll, einfach in den Kommentar zu diesem Beitrag schreiben.

Treffen Sie mich in 2018 bei verschiedenen Veranstaltungen, ich werde rechtzeitig hier darüber informieren. Bis dahin wünsche ich allen ein schönes Fest und einen guten Rutsch!

Performance Analyse SharePoint – So geht es

In Projekten stehe ich oft vor der Herausforderung die Performance einer vermeintlichen oder tatsächlich langsamen SharePoint Installation zu messen. Am besten geht dies, indem ich eine Anzahl ausgewählter Performancecounter gleichzeitig überwache. Nun sind dies eine ganze Menge und jedes Mal diese zu konfigurieren recht aufwendig. Dieser Blogartikel zeigt, wie sich diese Arbeit erleichtern lässt.

Vorbemerkung

Der Gedanke ist, ein PowerShell Script zu erstellen, welches die Counter aus eine Textdatei liest und in eine Datei schreibt, welche ich wieder in den Performancemonitor einlesen kann. Dort kann ich mir dann alle Werte anzeigen lassen oder nur einige davon. Das Script läuft dann so lange, bis ich es eben abbreche. Folgende Voraussetzungen, damit alles funktioniert, müssen unbedingt vorhanden sein:

  • Das Script muss von einem Konto gestartet werden, welches das Recht zum Ausführen von Scripten hat, in den Ordner schreiben und alle Performancecounter lesen darf. Typischerweise ist dies ein administratives Konto.
  • Diese Anleitung wird nur mit einem englischen SharePoint auf einem englischen Windowsserver funktionieren. Bei anderen Sprachen müssen die Performancecounter entsprechend übersetzt werden.
  • Es sollte die aktuellste PowerShell Version installiert sein.
  • Das Script sollte nicht in der Root ausgeführt werden, sondern in einem extra Ordner.
  • Das Script muss für jedem SharePoint Server auf dem jeweiligen Server ausgeführt werden.

Daten erfassen

Erstellen Sie zuerst eine Textdatei, in welcher Sie die folgenden Counter kopieren. Jeder Counter stellt dabei eine Zeile dar. Der Namen meiner Datei ist counter.txt

\.NET CLR Memory(*)\% Time in GC
\ASP.NET\Application Restarts
\ASP.NET\Request Execution Time
\ASP.NET\Requests Rejected
\ASP.NET\Requests Queued
\ASP.NET\Worker Process Restarts
\ASP.NET\Request Wait Time
\ASP.NET Applications(*)\Requests/Sec
\LogicalDisk(*)\% Idle Time
\Memory\Available MBytes
\Memory\% Committed Bytes In Use
\Memory\Page Faults/sec
\Memory\Pages Input/sec
\Memory\Page Reads/sec
\Memory\Pages/sec
\Memory\Pool Nonpaged Bytes
\Network Interface(*)\Bytes Total/sec
\Network Interface(*)\Packets/sec
\Paging File(*)\% Usage
\PhysicalDisk(*)\Current Disk Queue Length
\PhysicalDisk(*)\% Disk Time
\PhysicalDisk(*)\Disk Transfers/sec
\PhysicalDisk(*)\Avg. Disk sec/Transfer
\Process(*)\% Processor Time
\Process(*)\Page Faults/sec
\Process(*)\Page File Bytes Peak
\Process(*)\Page File Bytes
\Process(*)\Private Bytes
\Process(*)\Virtual Bytes Peak
\Process(*)\Virtual Bytes
\Process(*)\Working Set Peak
\Process(*)\Working Set
\Processor(*)\% Processor Time
\Processor(*)\Interrupts/sec
\Redirector\Server Sessions Hung
\Server\Work Item Shortages
\System\Context Switches/sec
\System\Processor Queue Length
\Web Service(*)\Bytes Received/sec
\Web Service(*)\Bytes Sent/sec
\Web Service(*)\Total Connection Attempts (all instances)
\Web Service(*)\Current Connections
\Web Service(*)\Get Requests/sec
\SharePoint Foundation(*)\Active Threads
\SharePoint Foundation(*)\Sql Query Executing  time
\SharePoint Foundation(*)\Executing Sql Queries
\SharePoint Foundation(*)\Responded Page Requests Rate
\SharePoint Foundation(*)\Executing Time/Page Request
\SharePoint Foundation(*)\Current Page Requests
\SharePoint Foundation(*)\Reject Page Requests Rate
\SharePoint Foundation(*)\Incoming Page Requests Rate

Erstellen Sie danach eine PowerShell Datei, welche den folgenden Code enthält. Die Counter werden aller fünf Sekunden erfasst. Bei weniger oder mehr passen Sie -sampleinterval 5 an. Die Datei, in welcher die Counter gespeichert werden heißt counter.bin.

get-counter -counter (get-content counter.txt) -MaxSamples 100 -sampleinterval 5 | export-counter counter.bin

Starten Sie das Script aus einer PowerShell Umgehung und lassen Sie es laufen solange Sie die Daten erfassen möchten.

Daten auswerten

Starten Sie den Performancemonitor perfmon.msc und klicken Sie auf Performance -> Monitoring Tools – Performance Monitor. Ziehen Sie die Datei counter.bin per D&D ins Fenster. Damit Sie die erfassten Werte sehen können, müssen Sie diese noch hinzufügen. Denn jetzt sollten eigentlich überhaupt keine Werte mehr gemessen werden. Klicken Sie auf + und fügen Sie die gewünschten Werte hinzu. Sie können in der Liste auch alle Werte markieren und mit einmal hinzufügen. Das war es dann auch schon. Inspiriert zu dem Artikel wurde ich von https://gallery.technet.microsoft.com/office/PowerShell-script-for-59cf3f70

Ressourcenverwaltung mit Kalenderüberlagerung

In vielen Projekten werde ich gefragt wie sich mit SharePoint effektiv Ressourcen verwalten lassen. In der Tat ist SharePoint dafür nicht unbedingt das ideale Mittel. Mit der Möglichkeit der Kalenderüberlagerung kann man aber sehr gut einfache Anwendungen realisieren. Im Folgenden Beitrag zeige ich wie man mit SharePoint Bordmitteln eine sehr einfache(!) Fuhrparkverwaltung realisieren kann.

In meinem Beispiel werde ich drei PKW verwalten. Dazu lege ich mir für jeden PKW einen Kalender an und einen weiteren Kalender der die vorhandenen konsolidiert.

In die Kalender für jeden PKW trage ich ein wann diese gebucht sind. Dabei erfasse ich neben den Zeitdaten einen Titel und den Ort.

Habe ich alle Daten erfasst wechsle ich den Kalender Fuhrpark. Dort klicke ich auf das Menüband Kalender und dann auf die Schaltfläche Kalenderüberlagerung.

Klicken Sie in der folgenden Seite auf die Schaltfläche Neuer Kalender.

Geben sie einen Kalendernamen ein und wählen sie eine Farbe. Bei Web-URL geben Sie den Name der Site ein von der Sie den Kalender beziehen möchten. Nach einem Klick auf Auflösen können sie ihren entsprechen Kalender im Dropdown Feld Liste auswählen. Vergessen sie nicht in Haken bei Immer anzeigen zu setzen.

Dies wiederhole ich für meine weiteren Kalender, es können dabei maximal zehn Kalender eingebunden werden. Schaue ich mir jetzt meinen Kalender Fuhrpark an, sehe ich darin die überlagerten anderen Kalender.

Geht man in die Wochenansicht, werden neben dem Titel auch die Orte der Termine angezeigt.

Thomas Maier- der SharePoint Schwabe- hat in seinem Blog noch eine andere interessante Möglichkeit der Kalenderüberlagerung beschrieben. Hierbei kommt man mit einem Kalender aus, benötigt aber ein größeres Know-How in SharePoint. https://www.sharepoint-schwabe.de/tipp-so-koennen-sie-termine-auch-im-sharepoint-kalender-farblich-markieren-2/

Probleme mit dem Health Analyzer in mehrsprachigen Umgebungen

Dieser Beitrag beschreibt einen Fehler welcher bei der Verwendung des Health Analyzer in mehrsprachigen Umgebungen auftritt. Typischerweise wurde SharePoint in einer nicht englischen Sprache installiert und danach ein englisches Sprachpaket angewendet. Dadurch erhalte ich im Health Analyzer eine interessante Mischung in meinem Fall aus Englisch und Deutsch in der Definition der Regeln. Werden jetzt Fehler erneut analysiert oder sollen diese automatisch behoben werden kommt es zu Fehlern.

Die Fehler wiederum werden ausschließlich in Englisch angezeigt.

Wenn man nun einen Fehler im Health Analyzer erneut analysieren oder aber automatisch lösen lassen möchte erhält man einen Fehler.

Dieser ist wenig aussagekräftig, die Fehler-ID verweist auf den Fehler Object reference not set to an instance of an object. Der Grund dafür ist folgender: Wenn ein Fehler erneut analysiert wird oder aber automatisch behoben werden soll, wird eine Regeldefinition gesucht welche genau den Titel des ausgewählten Fehlers entspricht. Haben nun Fehler und Regeldefinition unterschiedliche Titel, der Fehler Englisch, die Definition deutsch, tritt der oben beschriebene Fehler auf. Die Lösung besteht hier darin, die entsprechende deutsche Regeldefinition zu suchen, diese zu bearbeiten und den Titel so umzubenennen, dass er den englischsprachigen Fehler entspricht.

Regeldefinition vor dem umbenennen.

Regeldefinition nach dem umbenennen. Danach kann da Fehler problemlos erneut analysiert und gegebenenfalls automatisch behoben werden.

E-Mail Benachrichtigungen für Listen und Bibliotheken anpassen

Ein oft genutzte Funktion in SharePoint sind die E-Mail Benachrichtigungen für Listen und Bibliotheken. Sie sind ja auch praktisch, bei jeder Änderung kann ich automatisch informiert werden und muss nicht mehr selber nachschauen. Obwohl man in den Benachrichtigungen eine Menge einstellen kann ist es nicht möglich sich nur informieren zu lassen wenn sich ein bestimmtes Metadatum ändert. Dies ist zum Beispiel dann wichtig, wenn ich mit SharePoint Qualitätsmanagement (QM) Dokumente verwalte. So könnte ich meinen Benutzern anbieten, dass diese nur informiert werden, wenn es eine inhaltliche Änderung gibt. Eine Benachrichtigung bei redaktionellen Änderungen, z.B. der Korrektur von Rechtschreibfehlern erfolgt nicht. Leider ist diese Anpassung nur für SharePoint onPremise möglich. Dieser Artikel erläutert, wie Sie dabei vorgehen.

Die folgende Abbildung zeigt die Bedingungen für das setzen der Benachrichtigungen. Dieser Bereich muss entsprechend ergänzt werden.

Achtung, wir bearbeiten hier Dateien aus dem Dateisystem eines SharePoint Servers. Bearbeiten Sie NIEMALS die Originaldateien, sondern immer nur Kopien.

Filter hinzufügen

Die Datei, welche die Benachrichtigungen definiert, befindet sich bei SharePoint 2013 im 15er Ordner, in SharePoint 2010 entsprechend im 14er Ordner. Dieser Ordner finden Sie bei SharePoint 2013 in %CommonProgramFiles%\Microsoft Shared\Web Server Extensions\15. Gehen Sie dort in das Unterverzeichnis \TEMPLATE\XML und suchen Sie die Datei alerttemplates.xml. Kopieren Sie die Datei und benennen Sie diese um z.B. in alerttemplates_contoso.xml. Öffnen Sie diese Datei in einem XML Editor Ihrer Wahl. Wenn Sie die Datei untersuchen, werden Sie sehen, dass hier Benachrichtigungen für verschiedene Listen- und Bibliothektypen definiert sind. Wir möchten gern das Template für Dokumentenbibliotheken anpassen.


Die Struktur innerhalb einer Liste/Dokumentenbibliothek ist immer gleich.

Um einen neuen Filter zu setzen, müssen wir also den Abschnitt Filter ergänzen. In diesem gibt es schon drei Dokumentenbibliotheken spezifische Filter. Der erste Filter ist generisch (Benachrichtigung bei alle Änderungen) und hier nicht aufgeführt. Jeder Filter besteht dabei aus einem Namen für die Ansicht, einem kurzen Namen und Filterregeln. Beachten Sie dabei, dass Sie Umlaute im Namen HTML kodieren müssen.

Während der Name recht einfach ist, sind die Regeln komplexer. Sie finden diese im Abschnitt Query und werden dort in CAML notiert. Allerdings sind nicht alle CAML Ausdrücke erlaubt, im Zweifelfall hilft es sich anzuschauen, wie die schon vorhandenen Regeln aufgebaut sind.

In meinem Fall habe ich in einer Dokumentenbibliothek ein neues Feld angelegt, welches vom Typ Auswahl ist und die Werte

  • Inhaltlich
  • Redaktionell

hat. Bei einer Änderung muss das Feld entsprechend gesetzt werden. Wurde es auf Inhaltlich gesetzt, soll eine Benachrichtigung erfolgen. Das Feld hat den Namen TypAenderung.

Ich habe mir einen vorhandenen Filter kopiert und diesen angepasst. Es sind jetzt also vier Filter vorhanden. Die neue Abfrage für den neuen Filter würde dann wie unten aussehen.

Filter veröffentlichen

Um die Änderung zu veröffentlichen müssen Sie die neue XML Datei importieren. Anpassungen der Benachrichtigungen können Sie entweder für die ganze Farm, pro Sitecollection oder für eine spezielle Liste veröffentlichen. Ich habe mich für die Anpassung per Sitecollection entschieden. Zum Import nutze ich stsadm.exe. Sie finden dies im 14er/15er Ordner im Unterverzeichnis Bin. Da ich die Sitecollection http://sharePoint.contoso.com/sites/QM
anpassen möchte, sieht der Befehl bei mir so aus:
stsadm -o updatealerttemplates -filename „C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\TEMPLATE\XML\alerttemplates_contoso.xml“ -url http://sharePoint.contoso.com/sites/QM

Nach dem Import muss der SharePoint Timer Dienst neu gestartet werden. Dafür gibt es mehrere Möglichkeiten, eine ist das Services Snap-In.

Und schon kann der Benutzer die neue Bedingung setzen.

Achtung: Die Validierung der Regel erfolgt erst wenn die Regel gesetzt wird! Testen Sie also vorher!

Schon gesetzte Benachrichtigungen werden nicht geändert. Wenn dies gewünscht ist hilft die PowerShell weiter oder der Benutzer löscht seine Benachrichtigungen und erstellt diese neu.

HTML E-Mail Quelltext in SharePoint Designer 2013 bearbeiten

Wer mit SharePoint Designer schon einmal einen Workflow erstellt hat, welcher eine E-Mail verschickt, kennt sicher das Problem. Es ist zwar möglich die E-Mail im Editor zu formatieren, aber nicht ohne weiteres den eigentlichen HTML Quelltext. Dabei ist dies oft wichtig, z.B. wenn ich einen Link zur einer CSS Datei einfügen möchte. Mit einem kleinen Trick kommen Sie aber doch an Quelltext.

Im folgenden Beispiel werde ich einen Link einfügen, welcher als Beschriftung eine Referenz hat. Ich gehe dabei davon aus, dass der Workflow schon erstellt ist. Es spielt keine Rolle, ob es sich dabei um einen SharePoint 2010 oder 2013 Workflow handelt, das Problem ist in beiden Fällen identisch. Die Abbildung unten zeigt einen einfachen SharePoint 2013 Workflow, welcher nur eine E-Mail verschicken soll.

Diese E-Mail ist dabei wiefolgt konfiguriert.

Um an den Quelltext zu kommen, schließen wir die Aktion und wählen deren Eigenschaften.

Im neuem Fenster sehen wir alle Eigenschaften der E-Mail, auch den Body, welcher ja den Text der E-Mail enthält. Wenn Sie in die Zeile klicken, können Sie sich über … den Wert anzeigen lassen.

Sie sehen nun den HTML Text und müssen diesen noch erweitern. Dummerweise läßt sich der Text nicht kopieren und auch mit Einfügen gibt es Probleme. Deshalb muss der Text in dem Fenster bearbeitet werden. Nicht optimal, aber machbar. In meinem Beispiel gebe ich an der gewünschten Stelle wo der Link erscheinen soll

<a href=“

ein und klicke dann auch Nachschlagevorgang hinzufügen oder ändern. Dort wähle ich Aktuelles Element => Encoded Absolute URL und klicke auf OK.

Jetzt gebe ich

„>

ein und wiederhole das Einfügen für die Eigenschaft Aktuelles Element => Name. Zum Abschluss gebe ich

</a>

ein. Eingefügt habe ich also

<a href=“[%Aktuelles Element:Encoded Absolute URL%]“>[%Aktuelles Element:Name%]</a>

Die E-Mail, welche der Workflow jetzt verschickt, ist damit richtig formatiert.

Zum Schluß: Natürlich geht es bei diesem speziellen Fall auch einfacher! Im Editor kann ich einen Link anlegen, welcher auch Nachschlagen zuläßt. Das Beispiel oben ist eben nur ein Beispiel.