Quantcast
Channel: Jan von Reith – HanseVision Blog
Viewing all 24 articles
Browse latest View live

Aus der Praxis – Keine Icons in den Suchergebnissen

$
0
0

Bei den Suchergebnissen eines Kunden fiel auf, dass keine entsprechenden Icons zu den einzelnen Suchergebnissen sichtbar waren, z.B. erschien statt des erwarteten Word-Icon einfach nur eine kleine leere Box.

In diesem Fall war das Problem ein doppelt vorhandenes Mapping in der DocIcon.xml (%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\XML), genauer gesagt gab es zwei Einträge für das gleiche PDF-Icon.

2012-10-12 12-08-16_DesktopExt-Prv - Citrix Online Plug-in

Die Lösung war entsprechend die Löschung des einen Eintrags und die anschließende Durchführung eines IIS Reset.

Weitere Informationen diesbezüglich sind in folgendem KB Artikel zu finden: http://support.microsoft.com/kb/2646696


Aus der Praxis – Probleme bei der Indizierung von Gantt-View Elementen

$
0
0

Bei der Durchsicht des Crawl Logs bei einem Kunden fiel auf, dass während des Crawls immer wieder Fehler mit der Meldung „The SharePoint item being crawled returned an error when attempting to download the item“ auftraten. Diese Fehler traten nur bei Elementen auf, bei denen ein Gantt-View in Verwendung war. Neben der Fehlermeldung sind diese Elemente natürlich auch nicht im Index vorhanden und entsprechend auch nicht über die Suche auffindbar.

Die Ursache dieses Problems ist, dass der Crawler im Kontext des IE 4.01 auf die Elemente zugreift, dieser aber nicht in der Lage ist, die Elemente mit einem Gantt-View herunterzuladen.

Die Lösung ist die Anpassung der Werte des User Agents, den der Crawler verwendet. Diese sind zu finden in dem Registry Eintrag „UserAgent“ in dem Ordner HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\14.0\Search\Global\Gathering Manager auf dem Server, auf welchem die Search Service Application ausgeführt wird. Dort muss der Wert „MSIE 4.01“ mit dem Wert „MSIE 7.0“ ersetzt werden.
Danach sind noch ein Neustart des entsprechenden Servers und ein Full Crawl notwendig, bei welchem der Crawler jetzt im Kontext des IE 7.0 auf die Elemente zugreift. Das Resultat ist eine erfolgreiche Indizierung der Gantt-View Elemente, ohne Fehlermeldungen im Crawl Log.

Nachträgliche Ergänzung: Alternativ lässt sich dieses Problem auch über die Bereitstellung des Kumulativen Updates August 2012 lösen (http://support.microsoft.com/kb/2687339).

Anpassung der Suchergebnisseite

$
0
0

Einer unserer Kunden hatte die Anforderung, die Suchergebnisseite dahingehend anzupassen, dass für jedes Element ein zusätzlicher Link angezeigt wird, hinter dem sich der Ablageort des entsprechendes Elementes verbirgt.

Bei einem Dokument mit dem Namen Dokument5.docx, welches über die URL http://contoso.intranet.com/Freigegebene Dokumente/Dokument5.docx erreichbar ist, wird also lediglich der Teilabschnitt ohne den Namen des Dokumentes benötigt. In diesem Beispiel http://contoso.intranet.com/Freigegebene Dokumente.

Um zu überprüfen, ob diese Information eventuell bereits vorliegt, kann man sich über das  Kernergebnisse der Suche Webpart die reinen XML-Daten anzeigen lassen.

Dies lässt sich über folgenden Weg realisieren:

1.) Aufrufen der Results.aspx des Suchcenters und Wechsel in den Bearbeitungsmodus der Seite

2.) Wechsel in den Bearbeitungsmodus des Webparts Kernergebnisse der Suche

3.) Dort im Bereich Eigenschaften anzeigen den Haken bei Speicherortvisualisierung verwenden entfernen

4.) Im XSL-Editor den vorhandenen Standardcode (vorher z.B. in eine Textdatei kopieren) durch folgenden ersetzen

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xmp><xsl:copy-of select="*"/></xmp>
</xsl:template>
</xsl:stylesheet>

5.) Den Bearbeitungsmodus des Webpart beenden und die Seite speichern

Die Suchergebnisseite liefert jetzt bei einer neuen Suchanfrage die reinen XML-Daten als Ergebnis zurück und tatsächlich beinhalt die Eigenschaft sitename genau die benötigten Informationen.

x01qldzp.px3

Diese Eigenschaft muss jetzt also nur noch an geeigneter Stelle im Standardcode abgefragt und der entsprechende Link erstellt werden.

Dafür müssen im zuvor herauskopierten Standardcode die folgenden Zeilen ergänzt werden:

<a>
  <xsl:attribute name="href">
  <xsl:value-of select="sitename"/>
  </xsl:attribute>
  Ort des Elementes  
</a>

In diesem Fall z.B. unter dem Template Aufruf <xsl:call-template name=”ViewInBrowser”> …</xsl:call-template>

Anschließend muss der Bearbeitungsmodus des Webparts beendet und die Seite gespeichert werden.

Bei der nächsten Suchabfrage erscheint jetzt der gewünschten Link.

1so0gafe.xiu

Sofern der Wunsch besteht, den Link nur bei bestimmten Elementen anzuzeigen, so lässt sich dies über IF-Abfragen im XSLT realisieren. Hier ein Beispiel, bei dem eine Überprüfung dafür sorgt, dass nur bei Dokumenten der Link angezeigt wird:

<xsl:if test="isdocument = 'True'">
  <a>
  <xsl:attribute name="href">
  <xsl:value-of select="sitename"/>
  </xsl:attribute>
  Ort des Elementes
  </a>
</xsl:if>

SharePoint 2013 – Quick Edit

$
0
0

In SharePoint 2010 haben wir die Möglichkeit in Bibliotheken und Listen die sogenannte Datenblattansicht zu nutzen, welche uns alle Elemente in einem Kalkulationstabellenformat anzeigt. Über diese Ansicht ist es auf einfache und vor allem schnelle Art und Weise möglich die Elementeigenschaften von Elementen anzupassen, was diese Ansicht zum Mittel der Wahl macht, wenn die Eigenschaften einer großen Anzahl an Elementen angepasst werden müssen.

image

In SharePoint 2013 steht uns diese Ansicht natürlich auch wieder zur Verfügung, dort allerdings unter dem Namen „Quick Edit“.

qvqmpoml.2wu

Am Grundprinzip hat sich nichts geändert, jedoch bietet die Ansicht uns jetzt weitere Möglichkeiten, die es in SharePoint 2010 so noch nicht gab.

In SharePoint 2010 bestand nicht die Möglichkeit die Eigenschaften einer Spalte vom Typ „Verwaltete Metadaten“ über die Datenblattansicht anzupassen, womit eine schnelle Anpassung der Eigenschaften einer großen Anzahl an Elementen nicht mehr denkbar war. In SharePoint 2013 ist dies jetzt möglich und es sind zusätzlich noch drei Konfigurationsmöglichkeiten dabei, welche die Anpassung nochmal beschleunigen.

Alle ausgewählten Werte mit diesen Begriffen ersetzen: Es können mehrere Werte ausgewählt werden, welche dann jeweils mit dem ausgewählten Begriff ersetzt werden.

Diese Begriffe allen ausgewählten Feldern hinzufügen: Es können mehrere Felder ausgewählt werden, in welchen dann jeweils der ausgewählte Begriff hinzugefügt wird.

Diese Begriffe aus allen ausgewählten Feldern entfernen: Es können mehrere Felder ausgewählt werden, aus welchen dann die jeweils ausgewählten Begriffe entfernt werden (Entfernen mehrere Begriffe nur möglich, sofern die  Mehrfachauswahl für die entsprechende Spalte aktiviert ist).

image

Ist in SharePoint 2010 die Inhaltsgenehmigung für eine Liste oder Bibliothek aktiviert, so ist es in der Datenblattansicht nicht mehr möglich die Eigenschaften einer Spalte vom Typ „Auswahl” anzupassen. Auch dies ist jetzt mit SharePoint 2013 möglich.

In SharePoint 2010 können wir nur die Eigenschaften von Elementen in der Datenblattansicht anpassen, mit der Quick Edit Ansicht in SharePoint 2013 haben wir jetzt auch die Möglichkeit Spalten zur Liste hinzuzufügen. Dazu einfach in der letzten Spalte der Quick Edit Ansicht auf das Pluszeichen klicken und anschließend besteht die Möglichkeit die Spalten „Eine Textzeile”, „Zahl”, „Datum und Uhrzeit” oder „Person oder Gruppe” direkt per Schnellzugriff in der Standardkonfiguration hinzuzufügen. Besteht der Wunsch die Spalten nicht in der Standardkonfiguration hinzuzufügen oder einen anderen Spaltentyp hinzuzufügen, einfach den Punkt „Weitere Spalten-Typen…” auswählen und es erscheint das altbekannte Formular zur Spaltenerstellung.

khsgygzw.y22

Neben der Erstellung von Spalten ist es außerdem möglich direkt in der Quick Edit Ansicht die Namen der vorhandenen Spalten über „Spalte umbenennen” anzupassen.

aaji3ibh.05n

Abschließend lässt sich sagen, dass die Quick Edit Ansicht wirklich sinnvoll erweitert wurde, so dass jetzt eine uneingeschränkte, schnelle Anpassung von Elementeigenschaften möglich ist. Die Möglichkeit zur Erstellung von zusätzlichen Spalten direkt in der Quick Edit Ansicht ist ebenfalls recht praktisch und in gewissen Situationen auch komfortabler, als einige der anderen möglichen Wege zur Erstellung von Spalten.

SharePoint 2013 – Höhergestufte Links (Promoted Links)

$
0
0

Ich möchte mit diesem Artikel kurz eine neue Liste (App) aus SharePoint 2013 vorstellen und zwar die Liste „Höhergestufte Links (Promoted Links)”. Wird eine neue Teamsite in SharePoint 2013 erstellt, so gibt es direkt auf der Startseite einen Bereich mit dem Namen „Erste Schritte mit Ihrer Website”. Dieser Bereich dient als Schnelleinstieg, um die Teamsite für andere Personen freizugeben, die Teamsite zu erweitern oder sie vom Aussehen her den entsprechenden Vorstellungen anzupassen. Die Darstellung dieser Schnelleinstiege erfolgt über Kacheln, welche weitere Informationen zu der einzelnen Kacheln anzeigen, sobald man mit der Maus über die entsprechende Kachel hovert.

wuokmcc3.bof

Die Liste „Höhergestufte Links” gibt uns die Möglichkeit genau solche Kacheln auf einfache Art und Weise unseren Wünschen entsprechend zu erstellen und dann über das dazugehörige App-Webpart auf einer Seite anzuzeigen.

Befinden wir uns in der erstellten Liste stehen uns beim Hinzufügen von neuen Elementen folgende Eigenschaftenfelder zur Verfügung:

Titel: Hier wird der Titel der Kachel definiert, der im unterem Bereich der Kachel sichtbar ist, z.B. „Arbeiten Sie auf einen Abschlusstermin hin?”.

Hintergrundbild-Speicherort: Hier wird die Webadresse für das Bild der Kachel hinterlegt, wird hier keine Webadresse hinterlegt, so erhält man eine blaue Kachel.

Beschreibung: Hier wird der Beschreibungstext hinterlegt, der erscheint, sobald man mit der Maus über die entsprechende Kachel hovert, z.B. „Organisieren Sie sich mit Vorgängern, der Zeitachse und dem Kalender.”.

Linkspeichertort: Hier wird die Webadresse hinterlegt, die beim Klick auf die Kachel aufgerufen werden soll.

Startverhalten: Hier wird definiert, wo sich die hinterlegte Webadresse beim Klick auf die Kachel öffnen soll. Es kann zwischen „In der Seitennavigation” = Webadresse wird direkt auf der aktuellen Seite geöffnet, „Dialogfeld” = Webadresse wird in einem Dialogfenster geöffnet und „Neue Registerkarte” = Webadresse wird in einem neuen Tab geöffnet gewählt werden.

Reihenfolge: Hier wird definiert, in welcher Reihenfolge die Kacheln erscheinen sollen.

52wrapsf.e0n

Die Kacheln werden über das App-Webpart generell immer in einer Zeile dargestellt. Sofern das App-Webpart nicht ausreichend Platz zur Darstellung aller Kacheln hat, so wird automatisch ein Paging ergänzt, über welches dann auch die nicht sichtbaren Kacheln ausgewählt werden können.

22q2pb21.mun

Abschließend lässt sich sagen, dass diese neue Liste (App) eine sehr gute Möglichkeit darstellt, um schnell und einfach eine Übersicht über verschiedene Links zu erstellen, welche dann über das entsprechende App-Webpart auf Seiten platziert werden kann. Die Übersicht sieht dabei sehr aufgeräumt und ansprechend aus und der Mouseover Effekt verleiht dem Ganzen noch eine gewisse Dynamik.

SharePoint 2010 – Rundschreiben (Circulations)

$
0
0

SharePoint 2010 bietet die Möglichkeit, sich automatisch über neue Informationen innerhalb einer Liste oder Bibliothek benachrichtigen zu lassen. Die Person, die neue Informationen bereitstellt, muss also andere Personen nicht mehr aktiv darüber informieren, es liegt in der Verantwortung der einzelnen Personen, sich eine entsprechende Benachrichtigung einzurichten und so immer auf dem neusten Stand zu sein.

Besteht allerdings die Anforderung, dass ein definierter Personenkreis Informationen nicht nur erhalten soll, sondern auch aktiv bestätigen soll, so kann dies mit Hilfe der Liste Rundschreiben gelöst werden. Die Liste bietet die Möglichkeit, Elemente zu erstellen und bei der Erstellung anzugeben, welche Personen, dieses entsprechende Element bestätigen müssen. Direkt am Element ist dabei einsehbar, wer es bestätigt hat und wer noch nicht.

f3iiwft1.co3

Auf einer Standard Teamwebsite steht die Liste nicht sofort zur Verfügung, vorher ist eine Aktivierung des Websitefeatures Gruppenarbeitslisten (Group Work Lists) notwendig. Mit der Aktivierung bieten sich uns noch weitere Listen und Funktionen, ich möchte in diesem Artikel aber nur auf die Liste Rundschreiben eingehen.

khcyccve.q4k

Inhaltstypen
Die Liste stellt folgende zwei Inhaltstypen mit den entsprechenden Spalten bereit:

kx1krdyh.4vi

Rundschreiben

Titel: Hier wird der Titel des Rundschreibens eingetragen.
Textkörper: Hier wird der Inhalt des Rundschreibens erfasst.
Fälligkeitsdatum: Hier wird definiert, bis wann das Rundschreiben bestätigt werden muss.
Bearbeiten zulassen: Hier wird definiert, ob eine nachträgliche Bearbeitung des Rundschreibens möglich sein soll.
Empfänger: Hier wird der Empfängerkreis definiert, der das Rundschreiben bestätigen muss.
Bestätigungen: Hier kann der aktuelle Status der Bestätigungen eingesehen werden.
Kommentare: Hier können Kommentare zum Rundschreiben hinterlegt werden, unabhängig davon um die Bearbeitung zugelassen oder nicht zugelassen ist

Offizielle Benachrichtigung

Titel: Hier wird der Titel des Rundschreibens eingetragen.
Textkörper: Hier wird der Inhalt des Rundschreibens erfasst.
Fälligkeitsdatum: Hier wird definiert, bis wann das Rundschreiben bestätigt werden muss.
Empfänger: Hier wird der Empfängerkreis definiert, der das Rundschreiben bestätigen muss.
Bestätigungen: Hier kann der aktuelle Status der Bestätigungen eingesehen werden.

Da es sich um eine offizielle Benachrichtigung handelt, besteht hier nicht mehr die Möglichkeit der nachträglichen Bearbeitung oder der Hinterlegung von Kommentaren.

Ansichten
Bei der Erstellung der Liste werden folgende vier Ansichten bereitgestellt:

nxfg50me.lgj

Eigenes nicht bestätigtes Rundschreiben: Zeigt alle Rundschreiben an, in denen man selbst als Empfänger eingetragen bin und deren Empfang man noch nicht bestätigt hat.
Alle Rundschreiben: Zeigt alle Rundschreiben an, ausgenommen die vertraulichen Rundschreiben, bei denen man selbst nicht als Empfänger eingetragen ist.
Eigenes Rundschreiben: Zeigt alle Rundschreiben an, in denen man selbst als Empfänger eingetragen ist inklusive der Rundschreiben deren Empfang man bereits bestätigt hat.
Meine Rundschreiben: Zeigt alle Rundschreiben an, die man selbst erstellt hat.

Berechtigungen
Um Rundschreiben und Offizielle Benachrichtigungen bestätigen zu können muss den Benutzern mindestens die Berechtigungsstufe Mitwirken zugewiesen sein. Um an dieser Stelle zu unterbinden, dass Benutzer Elemente erstellen oder löschen können, ist eine neue benutzerdefinierte Berechtigungsstufe notwendig, über welche nur die Bearbeitung von Elementen ermöglicht wird.

Workflow
Um zu gewährleisten, dass die eingetragenen Empfänger auch definitiv über neue Elemente benachrichtigt werden, empfiehlt sich die zusätzliche Implementierung eines Workflows. Dieser Workflow könnte z.B. eine E-Mail an alle eingetragenen Empfänger versenden, mit einem Link zum entsprechendem Element  und der Bitte um Bestätigung.

SharePoint 2013 – Aufgaben App (Aufgabenliste)

$
0
0

Ich möchte in diesem Artikel kurz die Möglichkeiten der Aufgaben App (Aufgabenliste) in SharePoint 2013 vorstellen, welche generell zur zentralen Verwaltung von Aufgaben jeglicher Art gedacht ist.
Auf die Bereitstellung der App (Liste) werde ich dabei nicht eingehen, sondern direkt nach der Bereitstellung starten.
Was direkt danach auffällt ist, dass neben der bereits gewohnten Listenansicht, zusätzlich eine Zeitachse zur Verfügung steht, welcher einzelne Aufgaben hinzufügt werden können, auf diese Zeitachse werde ich später aber noch im Detail eingehen.
Bei der Betrachtung der Screenshots, aber auch bei der Nutzung wird Ihnen auffallen, dass teilweise von Aufgaben und teilweise von Vorgängen gesprochen wird, ich werde in diesem Artikel immer denAusdruck Aufgaben verwenden.

image

Neue Aufgaben können direkt über einen Klick auf “Neue Aufgabe” hinzugefügt werden. Dabei stellt man fest, dass in dem Erstellungsformular nur noch die Spalten angezeigt werden, die zur initialen Erstellung einer Aufgabe unbedingt notwendig sind (Aufgabenname bzw. Vorgangsname, Anfangsdatum, Fälligkeitsdatum, Zugewiesen an). Sollen an dieser Stelle schon weitere Informationen hinterlegt werden, so lassen sich über einen Klick auf “Mehr anzeigen” alle weiteren Spalten einblenden.

image

Über einen Klick auf “Bearbeiten” wird die sogenannte “Quick Edit” Ansicht geöffnet, in welcher direkt neue Aufgaben erstellt oder bestehende Aufgaben bearbeitet/gelöscht werden können. Außerdem besteht die Möglichkeit, direkt über diese Ansicht neue Spalten zur App hinzuzufügen. Weitere Informationen zu der Quick Edit Ansicht gibt es in diesem Artikel aus dem letzten Jahr.

image

Insgesamt wird die App mit den sieben folgenden Ansichten bereitgestellt:

Alle Vorgänge – Zeigt alle Aufgaben an
Abgeschlossen – Zeigt alle abgeschlossenen Aufgaben an
Anstehend – Zeigt nur Aufgaben an, die nicht zu 100% abgeschlossen sind und deren Fälligkeitsdatum größer oder gleich dem aktuellen Datum ist
Gantt – Diagramm – Zeigt alle Aufgaben in einer Balkendiagrammansicht an
Kalender – Zeigt alle Aufgaben in einer Kalenderansicht an
Meine Aufgaben – Zeigt nur Aufgaben an, die einem persönlich zugewiesen sind
Verspätete Vorgänge – Zeigt nur Aufgaben an, die nicht zu 100 % abgeschlossen sind und deren Fälligkeitsdatum kleiner gleich dem aktuellen Datum ist

Das Fälligkeitsdatum wird in den Ansichten nicht immer im gleichen Format dargestellt, sondern in bestimmten Fällen auch nur in Textform. Ist das Fälligkeitsdatum einer Aufgabe z.B. der gestrige Tag gewesen, so wird entsprechend “Gestern” in der Spalte angezeigt. Außerdem wird das Fälligkeitsdatum immer rot dargestellt, sofern es sich um eine Aufgabe handelt, die noch nicht abgeschlossen wurde, deren Fälligkeitsdatum aber in der Vergangenheit liegt. Diese Feinheiten tragen sehr stark dazu bei, dass die betroffenen Aufgaben nicht in der Fülle an Aufgaben untergehen.

image

Das Abschließen von Aufgaben lässt sich schnell und einfach über einen Klick auf das Kästchen vor der entsprechenden Aufgabe realisieren, der “Vorgangsstatus” wird dabei auf “Abgeschlossen” gesetzt und “% abgeschlossen” auf “100%”.

image

Die Aufgaben App (Aufgabenliste) bietet ebenfalls die Möglichkeit mehrere Aufgaben zu gruppieren bzw. Teilaufgaben zu erstellen. Dies ist lässt sich u.a. über das Kontextmenü einer Aufgabe realisieren (Teilvorang erstellen) oder aber über das Menüband, wobei dafür erst die einzelnen Aufgaben erstellt werden müssen, um diese dann im Nachgang entsprechend einzuziehen (Einziehen). Das Menüband bietet an dieser Stelle weitere Möglichkeiten, u.a um die Reihenfolge der Aufgaben und Teilaufgaben auf einfache Art und Weise anzupassen.

image

image

Wie bereits erwähnt steht uns zusätzlich zur normalen Listendarstellung der Aufgaben auch noch eine Zeitachse zur Verfügung. Dieser Zeitachse können beliebige Aufgaben hinzugefügt werden, so dass man letztendlich eine sehr gelungene übersichtliche Darstellung dieser Aufgaben erhält. Aufgaben lassen sich entweder über das Kontextmenü der entsprechenden Aufgabe oder aber über das Menüband hinzufügen und letztendlich auf diesem Wege auch wieder entfernen.

image

image

Klickt man die Zeitachse an, so besteht die Möglichkeit über das Menüband die Konfiguration der Zeitachse anzupassen. Dabei kann z.B. definiert werden, ob das heutige Datum in der Zeitachse dargestellt oder ob die Anfangs- und Endtermine der einzelnen Aufgaben angezeigt werden sollen und welches Datumsformat generell in der Zeitachse verwendet werden soll. Über den Punkt “Zeitachsenbreite sperren” kann außerdem dafür gesorgt werden, dass sich die Breite der Zeitachse, unabhängig von der Größe des Fensters, nicht ändert.

image

image

Werden einzelne Aufgaben in der Zeitachse markiert, besteht über das Menüband die Möglichkeit die Formatierung (Schriftart, Schriftgröße, Schriftfarbe, Füllung) der einzelnen Aufgaben anzupassen. Außerdem lässt sich definieren, ob die Aufgabe als Balken oder aber als Beschriftung angezeigt werden soll, dies kann sehr hilfreich bei der Darstellung von gruppierten Aufgaben bzw. Teilaufgaben sein.

image

image

Zur Darstellung der Aufgaben auf Seiten, wie z.B. der Startseite einer Teamwebsite, steht neben dem entsprechenden App-Webpart zusätzlich ein Webpart mit dem Namen “Projektzusammenfassung” zur Verfügung, welches unter der Webpartkategorie “Inhaltsrollup” zu finden ist. Das Webpart kann immer nur mit einer Aufgaben App (Aufgabenliste) verknüpft werden und stellt zwei Ansichten bereit zwischen denen gewechselt werden kann. Zum einen eine Ansicht, welche die Zeitachse der entsprechenden App (Liste) sowie die nächste fällige Aufgabe darstellt und zum anderen eine Ansicht, um sich anstelle der Zeitachse die verspäteten sowie die bevorstehenden Aufgaben in einer Übersicht darstellen zu lassen.
Als nächste fällige Aufgabe werden dabei nur Aufgaben angezeigt, die sich auch in der Zeitachse befinden. Die verspäteten und bevorstehenden Aufgaben hingegen werden nur dann in der Übersicht aufgeführt, wenn diese nicht in der Zeitachse vorliegen.

image

image

SharePoint 2013 – Zentrale Verwaltung persönlicher Aufgaben mit Hilfe der My Site

$
0
0

In meinem letzten Blog Artikel SharePoint 2013 – Aufgaben App (Aufgabenliste) habe ich die Aufgaben App in SharePoint 2013 vorgestellt, welche auf einfache Art und Weise eine zentrale sowie übersichtliche Aufgabenverwaltung in SharePoint ermöglicht. Über die Zeit hinweg wird es in einer SharePoint Umgebung zahlreiche Aufgaben Apps geben und die Herausforderung eine Lösung zu schaffen, die einen zentralen Bereich bereitstellt, in dem alle persönlichen Aufgaben konsolidiert dargestellt und verwaltet werden können.

In SharePoint 2010 gibt es dafür im Standard keine Lösung, in SharePoint 2013 gibt es sie!

Die Hauptbestandteile dieser Lösung sind die My Site und die Dienstanwendung “Arbeitsverwaltungsdienst-Anwendung” (Work Management Service Application). Die My Site stellt dabei einen Bereich “Aufgaben” bereit und die Dienstanwendung sorgt dafür, dass dort alle persönlichen Aufgaben aus den einzelnen Aufgaben Apps aggregiert werden. Der Zugriff auf diesen Aufgabenbereich erfolgt ganz einfach über die linke Navigation der My Site

image

Sobald der Bereich aufgerufen wurde, findet eine Aktualisierung der Aufgaben statt und es stehen insgesamt vier verschiedene Ansichten zur Darstellung dieser Aufgaben zur Verfügung.

Die Ansicht “Wichtig und bevorstehend” zeigt automatisch alle Aufgaben in einer Zeitachse an, wobei die Aufgaben je nach Aufgaben App automatisch in unterschiedlichen Farben dargestellt werden.

Unter der Zeitachse befinden sich zwei weitere Bereiche. Im Bereich “Bevorstehend” werden alle bevorstehenden Aufgaben angezeigt, der Bereich “Wichtig” listet alle Aufgaben auf, die über einen Klick auf das Ausrufzeichen vor der jeweiligen Aufgabe, als wichtig markiert wurden. Aufgaben die als wichtig markiert wurden, erscheinen dabei nicht mehr in der Ansicht “Bevorstehend”.

image

In der Ansicht “Aktiv” werden alle persönlichen Aufgaben aus den einzelnen Aufgaben Apps gruppiert angezeigt. Die Gruppierung kann dabei nachträglich über den Reiter “Aufgaben” und den Punkt “Nach Projekt gruppieren” im Menüband deaktiviert werden.

image

Neben den Gruppen für die jeweiligen Aufgaben Apps gibt es auch eine Gruppe für private Aufgaben. Diese Aufgaben sind nur für einen selbst sichtbar, was durch ein Schlosssymbol gekennzeichnet wird.

image

Über den Punkt “Neuer Vorgang” können ganz einfach neue Aufgaben in den gewünschten Aufgaben Apps erstellt werden, diese sind allerdings vorerst immer nur für einen selbst sichtbar, was wieder durch das Schlosssymbol gekennzeichnet wird. Wird im Bearbeitungsmodus der entsprechenden Aufgabe der Haken bei “Diesen Vorgang für Projektmitglieder öffentlich machen” gesetzt, so erscheint die Aufgabe in der ausgewählten Aufgaben App in der entsprechenden Website, inklusive der dort gesetzten Berechtigungen. Eine Zuweisung zu einer anderen Aufgaben App ist danach nicht mehr möglich.

Enthalten die jeweiligen Aufgaben Apps benutzerdefinierte Spalten, so werden auch diese Spalten dargestellt und können entsprechend bearbeitet werden, sobald die Zuordnung zur App stattgefunden hat.

image

In der Ansicht “Abgeschlossen” werden wie erwartet alle abgeschlossen Aufgaben dargestellt. Die Ansicht “Zuletzt hinzugefügt” listet standardmäßig alle Aufgaben auf, die innerhalb des letzten Tages neu erstellt wurden. Egal in welcher Ansicht man sich befindet, es besteht immer die Möglichkeit einen Filter auf die Ansicht anzuwenden, so dass nur Aufgaben einer bestimmten Aufgaben App angezeigt werden.

image

Außerdem lassen sich über den Reiter “Aufgaben” und den Punkt “Einstellungen” im Menüband noch gewisse Grundeinstellungen für die Ansichten und die Zeitachse konfigurieren. Dabei kann u.a. die Farbe der einzelnen Aufgaben Apps für die Darstellung in der Zeitachse bestimmt werden oder aber auch, in welchen Zeitraum das Fälligkeitsdatum von Aufgaben fallen muss, damit diese im Bereich “Bevorstehend” der Ansicht “Wichtig und bevorstehend” erscheinen.

image

image

Sofern einem noch keine Aufgaben zugewiesen wurden oder aber die Dienstanwendung noch nicht erfolgreich bereitgestellt wurde, blickt man auf einen leeren Bereich, in dem die vorgestellten Ansichten zur Verfügung stehen und in dem neue Aufgaben hinzugefügt werden können.

image

Der Aktualisierungsstatus des Aufgabenbereiches ist ein guter Indikator um festzustellen, ob tatsächlich keine Aufgaben vorliegen oder aber die Dienstanwendung noch nicht bereitgestellt bzw. nict erfolgreich bereitgestellt wurde.

image

image

Neben der Aggregation von Aufgaben aus SharePoint Aufgaben Apps, können standardmäßig auch Aufgaben aus Exchange oder Project Server in dem Aufgabenbereich dargestellt und verwaltet werden.

Die Bereitstellung der Dienstanwendung kann entweder über die Zentraladministration oder aber natürlich per Power Shell erfolgen. Ausführliche Informationen zur Bereitstellung und auch zur Behebung von auftretenden Problemen sind unter den folgenden Links zu finden:
http://technet.microsoft.com/en-us/library/fp161255.aspx
http://social.technet.microsoft.com/wiki/contents/articles/12525.sharepoint-2013-work-management-service-application.aspx
http://blogs.myfirstsharepoint.de/technikblog/sharepoint-2013-mysite-newsfeed-kann-nicht-auf-den-distributed-cache-zugreifen-und-die-aufgaben-knnen-nicht-aggregiert-werden

Wer sich für die genaue Funktionsweise der Dienstanwendung interessiert, dem empfehle ich folgendes Video: Walkthrough SharePoint 2013 features in the work management service application

Abschließend noch ein weiteres praktisches Feature, welches mir in diesem Zusammenhang bei der Nutzung des neuen Newsfeed aufgefallen ist. Öffnet man das Kontextmenü eines Eintrags im Newsfeed, besteht dort die Möglichkeit über den Punkt “Nachverfolgung” diesen entsprechenden Eintrag als Aufgabe zu seinen privaten Aufgaben hinzuzufügen. Außerdem wird diese Aufgabe auch direkt als wichtige Aufgabe gekennzeichnet. Es ist allerdings leider nicht möglich, diese Aufgabe zu bearbeiten, um z.B. ein Fälligkeitsdatum einzutragen, bei der Bearbeitung gelangt man lediglich zum Newsfeed Eintrag selbst.

image


SharePoint 2013 Suche – Anzeige Ergebnisse pro Verfeinerung

$
0
0

In der Standardkonfiguration der SharePoint 2013 Suche, wird im Verfeinerungsbereich (Refinement Panel) nicht die Anzahl der Ergebnisse pro jeweiliger Verfeinerung angezeigt. In SharePoint 2010 lies sich dies über die Anpassung des XML in der “Filterkategoriedefinition” des Webparts ändern, in dem man dort pro entsprechender Verfeinerungskategorie den Eintrag ShowCounts=”Count” hinzufügte. In SharePoint 2013 lässt sich dies ebenfalls realisieren und zwar über die Anpassung des entsprechenden Display Templates oder aber über die Erstellung eines neuen Display Templates. Ich werde in diesem Fall einfach eine Anpassung des bestehenden Display Templates vornehmen.

Alle Display Templates befinden sich in dem Ordner Display Templates im Bereich Gestaltungsvorlagen und Seitenlayouts in den Websiteeinstellungen der jeweiligen Websitesammlung.

image

Das Display Template das angepasst werden muss befindet sich wiederum im Ordner Filters.

image

Dort muss das Display Template mit dem Namen Filter_Default.html angepasst werden und zwar dahingehend, dass der Eintrag ShowCounts auf true gesetzt wird.

2013-07-27 20_14_33-_C__Users_jvreith_Desktop_Filter_Default

Das Ergebnis sieht dann folgendermaßen aus:

image

Der Verfeinerungsbereich bietet in SharePoint 2013 auch die Möglichkeit, pro jeweiliger Verfeinerungskategorie mehrere Verfeinerungen auszuwählen (Mehrwertiges Einschränkungselement). Um auch dort die Anzahl der Ergebnisse dargestellt zu bekommen, muss in dem entsprechenden Display Template Filter_MultiValue.html die gleiche Anpassung vorgenommen werden, was dann zu folgendem Ergebnis führt:

image

In SharePoint 2010 führt diese Anpassung nicht nur zu positivem Feedback, sondern teilweise auch zu einer gewissen Irritation. Den Grund dafür hat mein Kollege Jan Schumann bereits in einem seiner Blogeinträge beschrieben: SharePoint Suche Zähleranzeige bei Ergebnissen verbessern – Nutzen des Genauigkeitsindex.

In SharePoint 2013 wird es diese Irritationen nicht geben, da die angezeigten Verfeinerungsmöglichkeiten nicht mehr auf einer bestimmten Anzahl an Suchergebnissen basieren, sondern auf allen Suchergebnissen.

Tipps und Tricks – Darstellung Zahlenspalte ohne Tausendertrennzeichen

$
0
0

Bei einem unserer Kunden stand ich kürzlich vor folgender Herausforderung. In einer Liste wurde eine Spalte vom Informationstyp „Zahl“ verwendet, wobei der mögliche Zahlenkreis mit Hilfe der Definition der Minimal- und Maximalwerte sowie der Anzahl der Dezimalstellen eingeschränkt wurde. Nach der Eingabe von entsprechenden Daten in der Spalte fiel auf, dass SharePoint die Zahlen automatisch mit Tausendertrennzeichen darstellt.

image

Diese Darstellung war allerdings nicht gewünscht, sie ließ sich aber leider nicht über die Konfiguration der Spalte ändern. Eine alternative Umsetzung über eine Spalte vom Informationstyp „Eine Textzeile“ kam ebenfalls nicht in Frage, da es zwingend notwendig war, über die Definition der Minimal- und Maximalwerte und der Dezimalstellen die Eingabe auf einen bestimmten Zahlenkreis einzuschränken und außerdem der korrekte Informationstyp beibehalten werden sollte.

Meine Idee war,  eine weitere Spalte vom Typ „Berechnet“ zur Liste hinzuzufügen und über eine entsprechende Formel, die Zahl wie gewünscht anzupassen. Es fehlte nur noch die passende Formel!

Zuerst warf ich einen Blick auf die folgende MSDN Seite: http://msdn.microsoft.com/de-de/library/bb862071(v=office.14).aspx. Hier findet sich ein Überblick über viele der Formeln, die zur Verwendung in berechneten Spalten benutzt werden können. Leider war keine Formel dabei, die bei dieser Herausforderung geholfen hätte. Ein paar Minuten später fand ich jedoch genau die passende Formel.

Diese sieht folgendermaßen aus:

=FEST(Spalte;0;Wahr)

Die erste Variable „Spalte“ muss entsprechend mit der anzupassenden Spalte ersetzt werden. Die zweite Variable definiert, wie viele Dezimalstellen dargestellt werden sollen. Die dritte Variable ist in unserem Fall die entscheidende, hier wird mit Hilfe von „Wahr“ und „Falsch“ definiert, ob Tausendertrennzeichen verwendet werden sollen oder nicht (Wahr = Keine Tausendertrennzeichen, Falsch = Tausendertrennzeichen).

Auf mein Beispiel in den Screenshots bezogen, sieht die Formel also folgendermaßen aus: =FEST(Zahl;0;Wahr)

Die Darstellung in der Listenansicht erfolgt jetzt wie gewünscht ohne Tausendertrennzeichen.
image

Die Verwendung der Formel ist in SharePoint 2010 und SharePoint 2013 möglich.

Office 365/SharePoint Online – Aufgaben mit Outlook synchronisieren

$
0
0

Im letzten Jahr hatte ich in dem Blog Artikel SharePoint 2013 – Zentrale Verwaltung persönlicher Aufgaben mit Hilfe der My Site die Dienstanwendung Arbeitsverwaltungsdienst-Anwendung (Work Management Service Application) vorgestellt, welche dafür sorgt, dass alle einem Benutzer zugewiesenen Aufgaben konsolidiert in dem Bereich Aufgaben im Newsfeed/in der My Site des jeweiligen Benutzers dargestellt werden.

In diesem Artikel erwähnte ich ebenfalls, dass mit Hilfe dieser Dienstanwendung auch Outlook (Exchange) Aufgaben aggregiert werden können, wobei dafür in einer On-Premise-Umgebung noch weitere Konfigurationsschritte notwendig sind (http://technet.microsoft.com/en-us/library/jj554516%28v=office.15%29.aspx).

In diesem Artikel möchte ich kurz beschreiben wie in Office 365/SharePoint Online dafür gesorgt werden kann, dass neben SharePoint Aufgaben auch Outlook (Exchange) Aufgaben in dem Aufgaben Bereich aggregiert werden. Um dies zu realisieren ist keine weitere Konfiguration notwendig, jeder Benutzer kann diese Synchronisierung jederzeit einrichten, allerdings ist dies vielen nicht bekannt, was auch der Anlass für diesen Blog Artikel ist.

Im ersten Schritt muss eine beliebige Aufgabenliste aufgerufen werden, dort befindet sich dann in dem Reiter Liste der Button Mit Outlook synchronisieren.

image

Nach dem Klick auf diesen Button erscheint folgender Dialog, welcher mit OK bestätigt werden muss.

image

Ab dem Zeitpunkt der Bestätigung findet eine Synchronisation aller SharePoint Aufgabenlisten mit Outlook statt. Bekommt ein Benutzer also eine neue Aufgabe in einer beliebigen SharePoint Aufgabenliste zugewiesen, so erscheint diese Aufgabe automatisch im Bereich Aufgaben in Outlook.

image

Außerdem werden Aufgaben, die direkt in Outlook erstellt wurden automatisch im Bereich Aufgaben im Newsfeed/in der My Site des jeweiligen Benutzers dargestellt.

image

Letztendlich gibt es nach der Aktivierung der Synchronisation mit Outlook also zwei Orte, an denen alle einem zugewiesenen Aufgaben konsolidiert dargestellt werden, den Bereich Aufgaben in Outlook und den Bereich Aufgaben im Newsfeed/in der My Site. In beiden Orten ist natürlich auch eine Bearbeitung der Aufgaben möglich.

Eine Aktivierung der Synchronisation für alle Benutzer ist nicht möglich, die Entscheidung darüber liegt ganz allein beim Benutzer.

Office 365 – Freigabe Bereich zur Verwaltung der Interaktion mit externen Benutzern

$
0
0

Ich möchte in diesem Blog Artikel den seit kurzem verfügbaren Bereich Freigabe im Office 365 Portal vorstellen, welcher die Möglichkeit bietet, die Interaktion mit externen Benutzern der einzelnen Office 365 Services zu verwalten. Mein Fokus liegt dabei auf SharePoint Online, daher hier noch einmal die beiden zur Verfügung stehenden Freigabevarianten zur Freigabe von privaten Websitesammlungen für externe Benutzer (Benutzer die keine lizenzierten Benutzer Ihres Office 365 Abonnement darstellen).

Keine Links zu anonymen Gästen. Freigabe nur für authentifizierte Benutzer zulassen.

Sofern diese Option aktiviert ist, können Sie externe Benutzer auf beliebige Bereiche in einer Websitesammlung berechtigen. Diese Benutzer müssen sich dann mit Hilfe eines Microsoft-Kontos oder mit einer Office 365-Benutzer-ID anmelden.

Die Freigabe über Links zu anonymen Gästen für Ihre Websites und Dokumente zulassen

Sofern diese Option aktiviert ist, können Sie zusätzlich einzelne Dokumente mit einem sogenannten Gastlink versehen, der es Personen mit diesem Link erlaubt sich das Dokument anzeigen zu lassen oder aber das Dokument sogar zu bearbeiten.

Genauere Informationen zu diesem Thema finden Sie unter den folgenden Links : Freigeben von Websites oder Dokumenten für Personen außerhalb Ihrer Organisation, Verwalten der Freigabe für externe Benutzer, Verwalten externer Freigaben für Ihre SharePoint Online-Umgebung

Freigabe

Sobald externen Benutzern Zugriff gewährt wird ist es enorm wichtig, nachvollziehen zu können, um welche Benutzer es sich handelt und vor allem auf welche Inhalte diese Benutzer Zugriff haben. Genau an diesem Punkt kommt der Freigabe Bereich ins Spiel, welcher Ihnen, insbesondere in Bezug auf SharePoint Online, an einer zentralen Stelle einen Überblick über alle externen Benutzer gibt. Sie finden den Bereich in Ihrem Office 365 Portal in der linken Navigation unter dem Punkt Freigabe.

Direkt auf der Einstiegsseite dieses Bereiches haben Sie bereits die Möglichkeit die allgemeinen Freigabeeinstellungen für Websites, Kalender und Lync anzupassen. Über den Punkt Websites lässt sich konfigurieren, ob es grundsätzlich möglich sein soll externe Benutzer auf Websites (Websitesammlungen) zu berechtigen. Über den Punkt Kalender lässt sich definieren, ob es grundsätzlich möglich sein soll Kalender über eine öffentliche URL freizugeben und über den Punkt Lync lässt sich konfigurieren, ob es grundsätzlich möglich sein soll, per Lync Personen aus anderen Unternehmen zu kontaktieren. 

Sofern auf dieser Einstiegsseite alle drei Freigabeeinstellungen deaktiviert sind, ist im gesamten Office 365 Portal keine Interaktion mit externen Benutzern möglich!

 

image

Neben der Einstiegsseite gibt es in dem Bereich noch folgende weitere Seiten:

Externe Benutzer

Auf dieser Seite bekommen Sie eine Auflistung aller Benutzer, die eine Einladung für den Zugriff auf eine Website (Websitesammlung) erhalten haben, wobei auch Benutzer aufgelistet werden die z.B. lediglich auf eine Bibliothek, Liste oder ein einzelnes Element berechtigt wurden. Dabei sieht man zum einen über welche E-Mail Adresse die Person eingeladen wurde, das Datum der Einladung, den Namen und das Anmeldekonto, mit welchem letztendlich die Anmeldung erfolgte.

image

Websites (Websitesammlungen)

Im oberen Bereich der Seite haben Sie die Möglichkeit zwischen den bereits erwähnten Freigabevarianten zu wählen.

image

Im unteren Bereich der Seite erhalten Sie eine Auflistung aller Websites inklusive der aktuellen Freigabeeinstellungen der Website. Wählt man eine Website aus, so wird einem im rechten Bereich angezeigt, wie viele externe Benutzer auf diese Website berechtigt sind.

image

Über einen Klick auf Externe Benutzer für diese Website verwalten gelangt man auf eine Seite auf welcher alle externen Benutzer für die jeweilige Website verwaltet werden können. Neben dem Namen des externen Benutzers und seinem Anmeldekonto kann der Übersicht auch entnommen werden, durch welchen internen Benutzer die Einladung erfolgte. Auf dieser Seite besteht außerdem die Möglichkeit, den externen Benutzer zu löschen und ihm damit die Berechtigung auf die entsprechende Website zu entziehen.

image

Über einen Klick auf die Website-URL werden die Freigabeeinstellungen der jeweiligen Website geöffnet und können dort entsprechend angepasst werden.

image 

Kalender

Auf dieser Seite können Sie definieren, ob Kalender mit Hilfe einer öffentlichen URL für anonyme Benutzer freigegeben werden können, wobei über die drei zur Verfügung stehenden Varianten bestimmt werden kann, welche Informationen des Kalenders sichtbar sein sollen.

image

Lync

Auf dieser Seite lässt sich definieren, ob die Möglichkeit gegeben sein soll, per Lync auch mit anderen Unternehmen kommunizieren zu können. Sofern dies der Fall sein soll, kann zwischen einer sogenannten Whitelist (Weiße Liste – Positivliste), bei welcher nur die Domänen gelistet werden, mit denen eine Kommunikation möglich sein soll oder einer Blacklist (Schwarze Liste  – Negativliste), bei welcher grundsätzlich die Kommunikation mit allen Domänen erlaubt ist, außer den in der Liste aufgeführten.

image

Außerdem lässt sich konfigurieren, ob eine Verbindung mit öffentlichen Chats möglich sein soll, also ob z.B. eine Kommunikation mit Skype-Benutzern zugelassen werden soll.

Freitextsuche für benutzerdefinierte Benutzereigenschaften (Free text query for custom user properties)

$
0
0

Allgemein

In vielen Szenarien ist es sinnvoll, die Benutzerprofile in SharePoint um weitere Eigenschaften zu erweitern, z.B. um eine Eigenschaft “Produktkenntnisse“, damit jede Person dort die Produkte aufführen kann, mit denen sie sich auskennt und andere Personen die Möglichkeit haben, diese Personen über die Personensuche zu finden, wenn sie Fragen zu einem bestimmten Produkt haben.

Voraussetzung für das Finden von den benötigten Personen ist es natürlich, dass bei der Suche nach einem bestimmten Begriff, in diesem Fall einem Produkt, auch alle Personen aufgelistet werden, bei denen der Begriff bzw. das Produkt in den jeweiligen Eigenschaften hinterlegt ist.

Die Suchabfrage soll dabei möglichst einfach sein, damit auch Personen ohne tiefe SharePoint Kenntnisse schnell und erfolgreich die benötigten Personen finden, dementsprechend sollten diese Personen bereits mit einer Freitextsuche auffindbar sein.

Um das erfolgreiche Auffinden von Personen mit Hilfe einer Freitextsuchabfrage geht es in diesem Blogbeitrag, denn es gibt eine entscheidende Konfiguration bei der Einrichtung zusätzlicher Benutzereigenschaften bzw. der dazugehörigen verwalteten Eigenschaften (Managed Properties), welche unbedingt vorgenommen werden muss, um dies zu ermöglichen.

Erstellung und Konfiguration benutzerdefinierter Benutzereigenschaft sowie notwendiger verwalteter Eigenschaft

Da der Fokus diese Blogbeitrags auf der soeben angesprochenen Konfiguration liegt, werde ich die notwendigen Schritte bis zu dieser Konfiguration nur oberflächlich erklären.

Um eine zusätzliche Eigenschaft zum Benutzerprofil hinzuzufügen, ist es notwendig diese Eigenschaft zuerst in der Benutzerprofildienstanwendung (User Profile Service) zu den Benutzereigenschaften (User Properties) hinzuzufügen und diese dann in dem gewünschten Bereich an der gewünschten Position zu platzieren.

Im nächsten Schritt muss dann eine neue verwaltete Eigenschaft (Managed Property) erstellt werden, in diesem Fall “HVProduktkenntnisse”, welche mit der durchforsteten Eigenschaft (Crawled Property) gemappt wird, bei der durchforsteten Eigenschaft handelt es sich um die hinzugefügte Benutzereigenschaft, in diesem Fall “Produktkenntnisse”.

Diese verwaltete Eigenschaft muss durchsuchbar (searchable), abfragbar (queryable) und abrufbar (retrievable) sein. Sofern Sie auch in den Verfeinerungsbereich (Refinement Panel) der Suchergebnisseite der Personensuche aufgenommen werden soll, muss sie zusätzlich einschränkbar (refinable) sein. Die Tokennormalisierung (Token Normalization) sollte ebenfalls aktiviert sein.

Sofern man die Konfiguration an dieser Stelle abschließt und anschließend ein vollständige Durchforstung (Full Crawl) der Personen Inhaltsquelle (Content Source) durchgeführt ist eine Freitextsuche nach Informationen in der Benutzereigenschaft bzw. der verwalteten Eigenschaft nicht möglich, es können lediglich Ergebnisse unter Verwendung der verwalteten Eigenschaft in der Suchabfrage gefunden werden.

Beispiel

Wenn ich in meinem Profil in der Benutzereigenschaft „Produktkenntnisse“ z.B. “SharePoint” hinterlege und dann eine Personensuche nach „SharePoint“ ausführe, taucht mein Profil nicht in den Suchergebnissen auf. Suche ich allerdings nach „HVProduktkenntnisse:SharePoint“ so wird mein Profil als Ergebnis angezeigt.

Um auch bei einer einfachen Personensuche nach „SharePoint“ mein Profil als Ergebnis zurückgeliefert zu bekommen, ist folgenden zusätzliche Anpassung der verwalteten Eigenschaft notwendig.

Standardmäßig wird eine neu erstellte verwaltete Eigenschaft dem „Standard Volltextindex“ hinzugefügt, allerdings muss sie in diesem Fall dem „Personen Volltextindex“ hinzugefügt werden.

Dafür müssen die erweiterten durchsuchbaren Einstellungen (Advanced Searchable Settings) der verwalteten Eigenschaft angepasst werden.

clip_image001

Und zwar dahingehend, dass der Volltextindex von „Standard“ auf „PeopleIdx“ gesetzt wird.

image

Abschließend muss die Konfiguration der verwalteten Eigenschaft gespeichert und erneut eine vollständige Durchforstung der Personen Inhaltsquelle durchgeführt werden.

Führen ich dann im Anschluss erneut eine Personensuche nach „SharePoint“ durch, wird mein Profil als Ergebnis zurückgeliefert, ohne das ich explizit die verwaltete Eigenschaft in der Suchabfrage verwende.

SharePoint 2013 August 2015 CU – Problem mit Anhängen an Listenelementen

$
0
0

Mit dem SharePoint 2013 August 2015 CU gibt es eine Änderung an der form.js Datei, welche leider dazu führt, dass keine Anhänge mehr zu Listenelementen hinzugefügt werden können. Durch die Änderung wird aktuell der gesamte Dateipfad der hochgeladenen Datei überprüft und nicht nur der Dateiname.

Wird versucht ein Anhang zu einem Listenelement hochzuladen, so erscheint die Fehlermeldung File names can’t contain the following characters: & “ ? < > # { } % ~ / \. bzw. Dateinamen dürfen folgenden Zeichen nicht enthalten: & “ ? < > # { } % ~ / \., da der Dateipfad immer mindestens einen Backslash enthält.

image

Das Problem ist bei Microsoft offensichtlich schon bekannt und es wird hoffentlich bereits an einer entsprechenden Lösung gearbeitet.

Nintex for Office 365 – Document generation with repeating section

$
0
0

At the end of the last year Nintex released a new workflow action for Office 365 called “Document Generation”. This action offers the opportunity to create documents based on a definable template with all the information that is gathered while the workflow is running (If you’re interested in the announcement you can find it here).

After the release I’ve asked myself whether it is the possible to get the information of a repeating section (created with Nintex Forms for Office 365) into a document via the “Document generation” action. The answer is yes and in this blog post I’m going to show you how this can be achieved.

The focus of this blog post will be the workflow including the „Document Generation“ action, but for a better understanding I will also describe the other aspects of my scenario. There’s a custom SharePoint list with a Nintex form which offers the opportunity to order products in the desired quantity. Afterwards a workflow will automatically create a PDF document with all relevant information concerning the specific order. The PDF document is created based on a predefined Word template.

SharePoint List and Nintex Form

First, I create a custom SharePoint list called „Orders“ with a choice column „Product“ that includes different products and a multiple text column called „OrderedProductsandQuantity“. I modify the form of this list via Nintex Forms and add a repeating section that includes the „Product“ column as well as a new single line textbox control called „Quantity“. The information of the repeating section (the XML) will be stored in the column „OrderedProductsandQuantity“.

image

This is the XML that is stored in the column „OrderedProductsandQuantity” for the example shown in the previous screenshot:

<?xml version=“1.0″ encoding=“utf-8″?><RepeaterData><Version /><Items><Item><Product type=“System.String“>SharePoint 2013</Product><_x0037_9a74352-f26f-4f5e-a1d7-32c39f64ddfa type=“System.Int32″>2</_x0037_9a74352-f26f-4f5e-a1d7-32c39f64ddfa></Item><Item><Product type=“System.String“>Nintex Workflow 2013</Product><_x0037_9a74352-f26f-4f5e-a1d7-32c39f64ddfa type=“System.Int32″>1</_x0037_9a74352-f26f-4f5e-a1d7-32c39f64ddfa></Item><Item><Product type=“System.String“>Nintex Forms 2013</Product><_x0037_9a74352-f26f-4f5e-a1d7-32c39f64ddfa type=“System.Int32″>1</_x0037_9a74352-f26f-4f5e-a1d7-32c39f64ddfa></Item></Items></RepeaterData>

Document template

Before I start with the creation of the workflow, I create a word document named “Order template” in a document library called “Documents”. This document will serve as my template for the “Document Generation” action later on.  

image

Nintex Workflow

As I’ve already mentioned the workflow creates a PDF document with all relevant information concerning the specific order based on the Word template I just described. Every information that is supposed to appear in the document needs to be saved in a variable, so the workflow consists of more than one action.

imageimage

First of all I use two “Query XML” actions to get the information about the particular order positions out of the XML in the column „OrderedProductsandQuantity”. The products are stored in a collection variable called “ProductsCollection” and the quantities are stored in a collection variable called “ProductsQuantityCollection”. This is how the configuration of the action looks like for the gathering of the quantities.

image

Then I create three variables: OrderNumber (Current Item:ID), Requester (Current Item:Created By) and OrderDate (Current Item:Created). Afterwards I use a “For Each” action to iterate through all elements in the collections variables.

 

image

With the help of the “For each” action I get all the products of the order. As I also need the corresponding quantity for the particular product I use the “Get Item from Collection” action.

image

So for each loop I get two values, the product and the corresponding quantity. These two values will temporarily be stored in a dictionary variable called “ProductQuantityDictionary” that I create via the “Create Dictionary” action. The dictionary variable has two keys, “Product” and “Quantity” both text by type.

image

The values in the dictionary are added to a new collection variable called “AllProductsQuantityCollection”. Therefore I use the “Add Item To Collection” action.

image

After the last loop I have a collection variable with complex values that includes all products with the corresponding quantity. The content of the collection variable looks like this:

image

After all the desired information has been stored into variables, I start to configure the “Document Generation” action, which in the end looks like this:

image

In the “Template document library” column I define the document library where the template for the generated documents is saved, in my case “Documents”.

In the “Template” column I select the already existing template called “Order template”. You also have the choice to create a new template if you like to, whereby you can choose between an Excel, a PowerPoint and a Word template.

Then I edit the template by clicking on “Edit in Word”. When the template is opened for the initial creation or for changes, the so called “Nintex Document Generation Tagger” panel can be found on the right side.

image

This panel is used to insert the desired variables into the document template. Therefore the cursor has to be placed where the value of the variable should appear, then the desired variable must be selected and added by clicking in “Insert Tag”.

image

For my variable “OrderNumber” the result looks like this:

image

To display the information of a repeating section in the document I have to create a table. In my case I create a table with two columns and two rows. I use the first row as a header and the second row for the necessary tags.

When I then use the “Nintex Document Generation Tagger” again and chose a collection variable, there’s one additional column, a column named “Tag type” with three different parameters (“Start collection table”, “Key” and “Simple”).

In the first step I place the collection variable with the tag type “Start collection table” in the first column of the table. In the same column I place the collection variable with the tag type “Key” and enter “Product” as the key. In the second column I place the collection variable with the tag type “Key” and enter “Quantity” as the key.

imageimage

The result looks like this:

image

The tag type “Start collection table” specifies the start of a collection variable table, a column will be created for each entry in the collection. This is how my final template with all desired variables looks like:

image

As I like to have the order as a PDF document I select “PDF” in the “Output file type” column. Furthermore I have to define, where the generated documents will be stored. In my case they’ll be stored in the document library “Documents”, which I define  in the column “Output document library”.

In the last step I define the “Output file name”, which in my case consists of “Order –“ as the prefix and the ID of the list element as the suffix.

I configure the workflow to start when a new element has been created and this is how the PDF looks like after the workflow has finished successfully.

image

More information about the “Document Generation” capabilities can be found in the official Nintex Help!

If you have any questions please feel free to ask!


Company name extraction and custom entity extraction with SharePoint search

$
0
0

Introduction

In this blog post I would like to talk about two important SharePoint search features that can greatly increase the findability of documents in SharePoint. When it comes to findability in SharePoint, metadata plays a very important role. Unfortunately, in a lot of scenarios there aren’t any content types or custom columns, where additional metadata for documents gets stored. At first glance, this may be a problem, but actually most of the times the needed metadata can be found in the document itself.

SharePoint Search offers two features called “Company name extraction” and “Custom entity extraction” that help you to get the needed metadata out of the document to use it in search queries or to refine search results. The features are extracting the metadata out of the information that can be found in managed properties, so both features have to be activated in the desired managed properties.

Please be aware that these two features are only available in the SharePoint Enterprise edition!

Company name extraction

Company name extraction offers the possibility to extract desired company names from content, for example the body or title of documents.

Before you start using this features you should think about the company names that you like to extract and also about the company names that you don’t like to extract. The name of your company is a good example for a company name that should be excluded, because it will appear in nearly every document and therefore it’s not very helpful when it comes to refining search results or building search queries.

SharePoint already has a prepopulated dictionary for company names that includes a large number of companies (like Microsoft and SAP for example), but you have the chance to include additional company names or to exclude specific company names with the help of two term sets. You can find them in the term group „Search Dictionaries“.

If you want to include a company name just create a new term with the desired company name in the term set „Company Inclusions“. In my case I like to include our demo company name “HanseSystems” and our company name “HanseVision”.

If you want to exclude a company name just create a new term with the desired company name in the term set „Company Exclusions“. In my case I like to exclude the company name “SAP”.

image

After you defined the company inclusions and the exclusions, you have to decide out of which managed properties you like to extract the company names. In my scenario I wanted to extract the company names out of the managed property “Body”. Therefore, I edited the managed property settings and enabled „Company Extraction“ in the area „Company name extraction“.

image

After the configuration of the managed property it’s necessary to run a full crawl.

The extracted company names are copied to the managed property “companies”, this managed property can now be used for the refinement of search results. To add the managed property to the search refinement panel on a search results page you have to switch to the edit mode of the page and go into the settings of the refinement panel webpart. There you have to add „companies“ to the „Selected refiners“ section and move it to the position where you like it to appear.

image

Afterwards you can define the display name for the presentation in the refinement panel as well as the display template and some other settings like the sorting.

image

After saving and publishing the results page, it’s possible to refine the results based on the company names in the body of the documents.

image

Of course it’s also possible to configure search queries with the help of the managed property „companies“.

image

TechNet Article – Manage company name extraction in SharePoint Server 2013
https://technet.microsoft.com/en-us/library/jj591605.aspx

Custom entity extraction

Custom entity extraction offers the possibility to extract any desired entity from content, for example the body or the title of a document.

As you can extract any desired entity, you have to define every entity that you like to extract. These entities have to be saved in a .csv file that gets imported into SharePoint later on. The .csv needs the columns “Key” and “Display form”. In the “Key” column you have to define the entity that you want to extract, the “Display form” column is optional, there you can define how the entity will be displayed in the refiner. When you want to extract “SharePoint 2013” for example, but want to display “SharePoint” in the refinement, the .csv needs to look like this:

Key,Display form
SharePoint 2013,SharePoint

I want to extract the internal names of some of our products, so my .csv looks like this:

Key,Display form
SmartFind,SmartFind
SmartMeeting,SmartMeeting
SmartNavigation,SmartNavigation

Please make sure that there are no leading or trailing spaces around the terms.

After finishing the .csv file, you have to decide which custom entity extraction dictionary you want to use. The type of extraction dictionary defines how entries are matched with content in the search index and which managed property will contain the extracted entities. An overview about the different types with all needed information can be found in this TechNet article: https://technet.microsoft.com/en-us/library/jj219480.aspx

Now the .csv file needs to be imported into the SharePoint Search Service Application. This can be done with the help of the SharePoint Management Shell and the following command:

$searchApp = Get-SPEnterpriseSearchServiceApplication
Import-SPEnterpriseSearchCustomExtractionDictionary –SearchApplication $searchApp –Filename \\JVRC-SP2013\Installation\CEEDictionary.csv –DictionaryName Microsoft.UserDictionaries.EntityExtraction.Custom.Word.1

With the help of the parameter “-DictionaryName” the type and the number of the dictionary gets defined. In my case I’m using a “Word Extraction” dictionary, as it’s my first dictionary the parameter includes “1” at the end. The “Word Extraction” is case-insensitive and only matches content with the exact entity. The entry „anchor“ matches „anchor“ and „Anchor,“ but not „anchorage“.

After you imported the .csv file and thereby defined the entity extraction dictionary, you have to decide out of which managed properties you like to extract the defined entities.

In my scenario I wanted to extract the entities out of the managed property “Body”. Therefore, I edited the managed property settings and enabled „Word Extraction – Custom 1“ in the area „Custom entity extraction“.

Please be aware that you have to enable the entity extractors based on the type of dictionary and the number of the dictionary you created.

image

After the configuration of the managed property it’s necessary to run a full crawl.

The extracted entities are copied to the managed property “WordCustomRefiner1”, this managed property can now be used for the refinement of search results. To add the managed property to the search refinement panel on a search results page you have to switch to the edit mode of the page and go into the settings of the refinement panel webpart. There you have to add “ WordCustomRefiner1″ to the „Selected refiners“ section and move it to the position where you like it to appear.

image

Afterwards you can define the display name for the presentation in the refinement panel as well as the display template and some other settings like the sorting. As I’m extraction our internal product names the display name of the refinement should be “Product”.

image

After saving and publishing the results page, it’s possible to refine the results based on the desired entities in the body of the documents, in my case our internal product names.

image

Of course it’s also possible to configure search queries with the help of the managed property „WordCustomRefiner1“.

image

TechNet Article – Create and deploy custom entity extractors in SharePoint Server 2013
https://technet.microsoft.com/en-us/library/jj219480.aspx

How to improve the SharePoint search center with some easy and fast tricks

$
0
0

In this blog post I’d like to talk about some easy tricks to improve the SharePoint search center, that can be implemented very quickly.

Enable filtering of search results

By default, search results are sorted by relevance and there’s no possibility for end users to sort the results based on other properties, like the creation date for example. As this can be very helpful sometimes, activating the filtering definitely makes sense!

It can be activated by editing the settings of the “Search results” webpart. In the “Settings” section the option “Show sort dropdown” needs to be enabled.

image

After the activation of the sort dropdown, it can be found at the top of the search results.

image

Overall there are five different sorting options. The first three options should be self-explaining. By sorting the results by “Lifetime Views” they’re sorted in descending order based on all clicks on the element. By sorting the results by “Recent Views” they’re sorted in descending order based on the clicks on the element in the last 14 days.

To add additional filter options, the JSON needs to be extended. It can be found beneath the “Show sort dropdown” option in the “Settings” section of the “Search results” webpart.

In this example I’ve extended the JSON to provide the possibility to sort by the managed property “Title”.

{„name“:“Title“,“sorts“:[{„p“:“Title“,“d“:0}]}

At this point it’s important to make sure, that the managed property that should be used, is configured to be “Sortable (Yes – active)”.

image

Add additional search results pages

By default, there are four different search result pages: “Everything”, “People”, “Conversations” and “Videos” (only in SharePoint Enterprise).

The “Everything” results page shows every kind of content that is stored in the SharePoint environment. The “People” results page only shows user profiles, the “Conversations” results page only shows Newsfeed entries and the “Videos” results page only shows videos.

Most of the time end users are searching for documents, so the most important result page is missing and this is why it should be created.

First a new search result page with the “Search results” page layout needs to be created in the page library of the search center site collection.

image

Afterwards this page has to be added to the “Search navigation”, which can be found in the “Search Settings” area of the “Site settings”

image

The most important step is the configuration of the search query of the “Search Results” webpart on the page. This can be done by editing the settings of the “Search results” webpart. In the webpart settings in the “Search Criteria” section the “Change query” section needs to be opened.

image

There, the “Query text” needs to be extended, for example in the way that can be seen in the following screenshot. By using this query, only Word, Excel, PowerPoint and PDF documents will be returned by the search.

image

This is how the search navigation looks at the end of the described steps. Of course there are multiple other use cases for additional search result pages, for example a result page only for wiki pages, a result page only for list items or a result page for results that are stored in a specific area of the SharePoint portal.

image

Disable “Remove duplicates” on result pages or enable “Show View Duplicates link”

By default, duplicates are removed from the search results on the search result page. This is done by the so called “Remove Duplicates” feature of the SharePoint search. The problem with this feature is, that it not only removes results that are completely identical but sometimes also results that only differ slightly from other results (near-duplicates). Because of this, end users sometimes cannot find the results they’re looking for, because they were falsely removed from the result set.

There are two options to deal with that problem.

The first option is, to just deactivate the “Remove Duplicates” feature, so that duplicates don’t get removed. This can be done by editing the settings of the “Search results” webpart. In the webpart settings in the “Search Criteria” section the “Change query” section needs to be opened. There’s a tab called “Settings” in which the “Don’t remove duplicates” feature can be disabled. After saving the changes the duplicates won’t be removed anymore.

image

The second option is, to activate the “Show View Duplicates link”. This can be done by editing the settings of the “Search results” webpart. In the webpart settings in the “Settings” section the “Show View Duplicates link” needs to be enabled.

image

In this case, the duplicates aren’t removed completely from the search result, but they’re not shown in the first moment. Instead, if SharePoint finds a duplicate or multiple duplicates for a specific result, a link shows up in the hover panel and by clicking the link the user gets to a search results page, where all results including duplicates can be found.

image

Disable unnecessary controls

Disable “Show language dropdown”

By default, there’s the possibility to choose a preference for the language of the results, even if the SharePoint environment is monolingual.

image

In a monolingual environment the content in the environment will mostly be present in one language, therefore this control will rather be confusing for end users than helpful. This is why it might be a good idea to just disable this control.

This can be done by editing the settings of the “Search results” webpart. In the webpart settings in the “Settings” section the “Show language dropdown” needs to be disabled.

image

Disable “Show preferences link”

By default, there’s the possibility for the end users to configure personal search preferences like search alerts, search language, search history or search suggestions. If the end users are not trained on how to use the search preferences it’s probably a good option to disable this area, as wrong configurations of the end user might lead to bad search results.

image

This can be done by editing the settings of the “Search results” webpart. In the webpart settings in the in the “Settings” section the “Show preferences link” needs to be disabled.

image

Enable result count in refinement panel

The refinement panel offers the possibility to drill down the search results and make it easier for the end users to find the desired information. By default, the refinement panel only displays different filters based on the current search results, but not the amount of search results regarding a specific filter.

image

This can be realized with a little change of the display template of the refinement panel. Therefore, you have to download the “Filter_Default.html” (Master Page Gallery – Display Templates – Filters) and set the “ShowCount” parameter to true instead of false.

imageimage

Afterwards you have to upload the file again und publish it as a major version. The result of this configuration looks like this.

image

Detailed information about this configuration can be found in the following Microsoft blog post: Getting Refiner Counts Back in SharePoint 2013 Search

SharePoint Output Cache – Some important points

$
0
0

The output cache stores the rendered output of a page and therefore leads to faster page loads and a better end user experience. At this point It’s important to mention, that it can only be used in site collections, in which the publishing infrastructure has been enabled.

There’s a lot of documentation out there about the enabling and the configuration of the output cache, so I won’t talk about this in detail. In this blog post I only want to talk about the following points:

  • Configuration of the output cache for specific page layouts
  • Verification whether the output cache is working or not
  • The “Allow writers to view cached content” setting that can be found in the configuration of the output cache profiles

Configuration of the output cache for specific page layouts

When you read the documentation or are already configuring the output cache you’ll observe that there’s an area called “Page Output Cache Profile” in the “Output Cache” settings of the site collection. One of the configuration options that can be found there is called “Page layouts can use a different page output cache profile”.

image

By activating this option, you get the chance to assign different output cache profiles to different page layouts, which makes sense for search result page layouts for example.

The important point that is sometimes misunderstood is, that this option is not mandatory. When you only want one output cache profile for every page layout in the site collection it’s enough to just enable the output cache and choose the desired output cache profile in the “Authenticated Cache Profile” section.

image

Verification whether the output cache is working

If you ever configured the output cache, you’ll probably agree with me, that it’s pretty straight forward. The harder part is, to verify if the output cache is working like desired.

I stumbled across a very good article called “Measuring the Output Cache on SharePoint 2010”, in which the author describes how to verify this with the help of the output cache performance counters.

I don’t want to repeat everything that can be found in that article, I just want to describe how the single performance counters behave with the output cache disabled/enabled.

The performance counters I like to focus on are Output cache entries, Output cache hit ratio, Output cache hits and Output cache misses

For all performance counters I changed the scale from 0.1 to 1.0 to analyse the values easier.

image

With the output cache disabled (or not working), the following values can be found for the single counters after the first load of a page (only applies if there’s no other user or service hitting the cache):

Output cache entries = 0
Output cache hit ratio = 0
Output cache hits = 0
Output cache misses = 1

After the second load of the page the values for the single counters look like this:

Output cache entries = 0
Output cache hit ratio = 0
Output cache hits = 0
Output cache misses = 2

So the only counter that increases is the “Output cache misses” counter. This totally makes sense as nothing gets cached and therefore there can’t be any cache entries, cache hits as well as a cache hit ratio.

With the output cache enabled and working, the following values can be found for the single counters after the first load of a page:

Output cache entries = 1
Output cache hit ratio = 0
Output cache hits = 0
Output cache misses = 0

The only counter that increases is the “Output cache entries” counter. As this counter shows how many entries are stored in the output cache this also makes sense. There cannot be any “Output cache hits” because there’s nothing in the cache.

After the second load of the page the values for the performance counters look like this

Output cache entries = 1
Output cache hit ratio = 50
Output cache hits = 1
Output cache misses = 0

With the second load of the page, the “Output cache entries” counter doesn’t increase, because the objects are already cached. At this point you can witness, that the “Output cache hits” counter increases, because cached objects have been loaded.

Allow writers to view cached content

When you configured the output cache correctly, but the performance counters indicate, that the output cache is not working, this might not mean that there’s a real problem. When I configured the output cache for the first time and tested it afterwards, nothing has been cached.

I enabled the “Debug Cache Information” option as well as verbose logging for the “Publishing” and the “Publishing Cache”.

image

In the ULS logs I found the following message “User can view an unpublished version of the current page”. After some research I realized that there’s no problem with the output cache in general, but a problem with my scenario.

Nothing was cached for the user with which I was testing the functionality, because of a setting that can be found in the output cache profiles. This setting is called “Allow writers to view cached content” and is disabled by default in all profiles.

image

From the description of the setting you can gather the information, that pages are not cached for users that have edit permissions. As my user had full control permissions on all site collections nothing was cached. After I enabled the setting the output cached worked as desired!

Here’s another great resource concerning the troubleshooting of the output cache, that helped me a lot: When cache output caching does not output

Let’s start to (Microsoft) Flow!

$
0
0

Microsoft Flow is general available since October 31, 2016 (https://flow.microsoft.com/en-us/blog/announcing-ga/). So, it’s time for a blog post about it. In this post I want to show you how you can automate simple business processes with the help of Microsoft Flow. I will do this by creating a pretty basic vacation request flow. As I’m a SharePoint Consultant I’ll do this with the help of SharePoint Online.

As there are already a lot of articles about what Microsoft Flow is, I won’t go into detail about this. You can find a very good description in this article: The ultimate introduction to Microsoft Flow and PowerApps!

Microsoft Flow does the same job as something like Zapier or IFTTT. It allows you to react to an event in one service (such as SharePoint online) and do something with the data from that event in another (such as Twitter). E.g. If someone adds a new document to a SharePoint library then send a message to a Slack channel. All this can be done easily with zero coding skills needed.

Setup

For my scenario, I’ve created a new site collection called “Vacation requests” based on a team website template. In this site collection, I created a custom list called “Vacation requests” and added the following columns:

image

As I don’t need the “Title” and the “Approval status” in the request form I decided to hide both columns and to fill them later in the flow. Actually, I wanted to work with a choice column for “Approval status” but the “Update item” action in flow doesn’t support choice columns (Person or Group columns are also not supported in this action).

Creation of the flow

To start with the creation of my flow I only must open the “Vacation request” list and click on “Flow – Create a flow”. The creation of flows is completely integrated into the new modern list design. If you do not already use the modern list design, you can go to https://flow.microsoft.com and start with the creation of the flow there.

image

By clicking on “Create a flow” a new area appears on the right side of the screen, which offers of a lot of already existing flow templates so it’s no necessary to start completely from scratch.

image

The trigger for my workflow should be the creation of a new SharePoint list item (a vacation request) and one of the steps in my workflow should be the approval of the vacation request by another person. So instead of creating a completely new flow I’ll start with the second template that is offered to me.

In the first step after clicking on the template I need to sign in to SharePoint Online and Exchange Online.

image

The result looks like this:

image

After clicking on “Continue” I’m forwarded to the “Flow Designer”. As I started with a predefined template the designer is already filled with some actions.

image

In the first step, I want to upgrade the title, so I need an add an action that lets me update a SharePoint item. This can be done by clicking on “Add step”. I can decide whether I want to just add an action or if I want to add a condition, add an apply to each action, add a do until action or if I want to add a scope (to group actions like in Nintex).

image

By clicking “Add action” I can search the whole flow catalogue for my desired action. The easiest way to do this is by just using the search box. If I type in “SharePoint” I’ll get all SharePoint actions, which are 22 now including triggers.

I’m looking for the “Update item” action so I choose this one:

image

First I move the action to the top of my flow at the second position, so this is the first action that is processed after the flow has been started.

image

Afterwards I rename the action so I still understand my flow when I look at it some weeks later (Best practice for Workflow design). I will also do this for other action but won’t describe this every time I do it.

image

Then I start to configure the action. In the first step, I need to identify the item that should be updated. Therefore, I must enter the “Site url”, the “List name” and the “ID” of the current list item (vacation request).

I enter the “Site url” manually and then chose the “List name” out of a dropdown that shows all lists of the site. In every action, I have the possibility to use variables that have been used or created in other actions by using the “Add dynamic content” section.

So, in the “ID” column I choose the “ID” variable of the “When a new item is created” action, which includes the ID of the current element.

image

In this case the “Add dynamic content” section is nearly empty. Later, this section includes a lot of variables so it makes sense to use the search box that is offered at the top.

After defining the element I can configure the columns I’d like to update. The title column in my case should have the vacation type as a prefix followed by the ID of the element.

image

I must “update” mandatory columns that I don’t want to update too at this point, which is annoying and should be changed! For these columns, I just update the columns with the old values, so nothing gets changed.

image

In the next step, I must configure the “Send approval email” action. In the “To” section I enter the variable “Approver Email” from the “When a new item is created” action.

image

Furthermore, I also change some other parameters of the email, like the subject and the body, to directly provide more information about the request to the approver.

image

In the “Send emailScope” action I only change the name, the condition is already configured correct.

image

In the next steps, I will define what will happen if the vacation request is approved and what will happen if the vacation request is rejected. In both cases, I’d like to send an email to the person that created the vacation request and I want to update the approval status of the vacation request.

For the approved request my email configuration looks like this:

image

Then I must add a new “Update item” action which I configure like this:

image

Afterwards I’m doing the same for the case if the request gets rejected, but of course change the email and the approval status to “Rejected”. This is how this part looks after I’m finished.

image

And this is how my complete flow looks like:

image

At the end, I change the name of my flow and click on “Update (“Create flow”, if it has not been saved before).

image

If this has been successful I get the following message:

image

Demo of the flow

To start the flow, I fill out my vacation request form:

image

Some seconds after the start the flow sets the title of the element and my desired approval status:

image

Some more seconds later the person in the approver column gets an email with the possibility to approve or reject the vacation request:

image

After clicking on Approve the approver directly gets a feedback in the email:

image

The approval status of the vacation request is now changed to “Approved”:

image

To keep track of my flows and to change my flow I can go to the “My flows” area by clicking on “See your flows”.

image

There I get an overview of all my flows, I can turn them on/off, I can delete them and I can change them. Furthermore I can have a look on all running flows and workflows that are already finished. This can be done by clicking on the little information icon.

image

This page lists all flows including start time, status and duration. Furthermore I also have the chance to filter the flows regarding the status.

image

By clicking on one of the flows I get a visualisation of the flow in which I can see the single steps of the flow including the status and the duration.

image

That’s it! I hope you enjoyed the article, feel free to contact me if you have any questions or feedback!

Nintex Workflow – Identify duplicates

$
0
0

In one of our projects, we needed to implement a solution to track the visits of sales representatives in form of a visit report. Most of the times there are multiple visit reports for one visit, because multiple representatives attend a visit.

In those visit reports the sales representatives should say if they were the driver at the visit or only a passenger. It’s of course possible that not all representatives drive with the same car, for example because of different starting points or follow-up visits. But if they have the same starting point, the same destination and overall there’s no reason why they should not drive together, it probably doesn’t make sense, that they do not drive all together in one car.

In these cases, there’s a chance for optimization and we needed a workflow that can discover these optimization possibilities. This workflow needs to be able to identify specific duplicates (visit reports) in a list.

In this blog post I’d like to show you how I set up this workflow (I simplified the implementation to focus only on the relevant parts).

For the collection of the visit reports there’s a list called “Visit reports”. The following columns can be found in the list:

Visit-ID (Number)*
Starting Point (Single line of text)*
Destination (Single line of text)*
Date (Date and Time)*
Follow-up visit (Yes/No)*
Driver (Yes/No)*

The unique ID for the visit gets stored in the column Visit-ID (ID for the whole visit, not a single visit report, multiple visit reports can exist for a one visit).

In the “Follow-up visit” column the representatives can define if they had another visit after the current visit and in the “Driver” column they can define whether they have been the driver or not. If there are two visit reports of two representatives that are completely identical except of the point that one was the driver and the other one was not, this totally makes sense and of course is the desired scenario.

image

This is how the list looks like with four visit reports for two visits:

image

The goal of the workflow is the identification of the visit with the Visit-ID 1, because the single visit reports of this visit are completely identical and in both visit reports the “Driver” column is set to “Yes”. Identical visit reports with the “Driver” column set to “No” aren’t relevant, because that’s the way it should be.

I worked out the following idea for the workflow. The workflow should process every single visit (Visit-ID) and for every single visit all single visit reports (only if “Driver” column is set to “Yes”) should be stored in a complex collection.

Then the workflow should count the entries (visit reports) in the complex collection and afterwards remove duplicates out of the complex collection. At the end, the workflow should compare the count of the entries (visit reports) before and after the removal of the duplicates. If the count is the same, everything is fine, if the count is not the same, there’s a visit (like the visit with Visit-ID 1) with multiple drivers, so there’s an optimization possibility.

So far so good, let’s start to build the workflow!

As the workflow is not related to a single element (visit report) and should run every day at a defined time, I decided to set up a site workflow.

In the first step, the workflow collects all “Visit-IDs” with a “Query list” action and stores them in a collection variable called “Collection_VisitIDs”. Afterwards the workflow removes the duplicates by using a “Collection operation” action.

image

In the next step the workflow iterates through all Visit-IDs to check the single visit reports. The Visit-ID gets stored in a variable called “Text_SingleVisit-ID”. In the first step of this action the workflow collects all necessary elements (visit reports) and corresponding properties of the single visit reports and stores them in different collections.

image

In the “Query list” action there’s a filter on the actual Visit-ID and on the “Driver” column, as only visit reports with “Driver” column set to “Yes” are relevant.

image

Now the workflow iterates through the  collected elements (visit reports) and the corresponding properties to get all the properties of the single visit reports that need to be added to the complex collection. Therefore, I added another “For each” action and three “Collection operation” actions afterwards, to get all needed properties.

image

Then the workflow uses the “Build string” action to create the single entries (visit report with needed properties) for the complex collection and afterwards uses the “Collection operation” to add the entry to the complex collection “Collection_ComplexCollection”.

image

The “Build string” action looks like this:

image

That’s it for this “For Each” action. At the end of the other “For Each” action the workflow now counts the entries (visit reports) of the complex collection. Afterwards it removes the duplicates and then counts the entries (visit reports) again.

If the number of entries isn’t the same no more it’s a visit where we have two drivers, which is probably one too much, so there’s an optimization possibility. For this blog post the workflow just logs the result into the history list.

image

This is how the workflow history looks like, after a successful run:

image

As you can see, the workflow successfully detects the visit with the Visit-ID 1!

Viewing all 24 articles
Browse latest View live