Archiv für die Kategorie ‘Wissensmanagement’

Yammer DirSync – Ihr Unternehmensnetzwerk mit Active Directory koppeln

Dienstag, 14. Oktober 2014

13410590_blogYammer ist ein für Unternehmen konzipiertes soziales Netzwerk, das seit September 2008 am Markt vertreten ist. Im Jahr 2012 wurde Yammer von Microsoft aufgekauft und stetig weiterentwickelt, um die Integration zu anderen Produkten wie SharePoint oder Office herzustellen und sukzessive zu verbessern.

Yammer ermöglicht eine sichere Kollaboration zwischen Abteilungen und verschiedenen Standorten eines Unternehmens. Damit wird eine Verbreitung von firmeninternen Wissens erleichtert und die Zusammenarbeit deutlich effizienter. Mehr Informationen über die Features und Vorteile finden Sie unter diesem Link.

Synchronisation mit Active Directory

Eine Synchronisation zwischen Yammer und dem Active Directory ist möglich, wodurch alle Mitarbeiterdaten immer aktuell auch im Yammer vorliegen. Nachfolgend soll beschrieben werden, welche Schritte durchlaufen werden müssen, um eine Synchronisation erfolgreich durchzuführen.

1. Sync-Tool installieren
Auf einem AD-Server muss das Yammer-Directory-Sync-Tool installiert werden. Die Datei zum Download finden Sie unter dem folgenden Link.

2. Firewalleinstellungen überprüfen
Nach Installation des Sync-Tools müssen Sie sicherstellen, dass der Server mit dem Internet kommunizieren kann. Um eine allumfassende Synchronisation zwischen Yammer und dem AD zu erreichen, müssen unterschiedliche Ports freigeschalten werden. Zunächst sollte Port 443 offen sein, damit ausgehender Traffic möglich ist. Zusätzlich sollte ausgehender SMTP-Traffic freigeschalten werden, dadurch kann das Sync-Tool Einladungsmails an neue AD-Nutzer verschicken. Um dies zu ermöglichen dürfen die Ports 25 oder 587 nicht geblockt werden. Für die AD-Synchronisierung wird standardmäßig Port 389 genutzt, dieser muss ebenfalls offen sein.

3. Yammer Service Account einrichten
Für die Einrichtung eines Yammer Service Accounts sind drei Schritte nötig:
1. Einen Mail-Account für den Synchronisation-Service einrichten (z.B. yammerdsync@companyname.com)
2. Mit dieser E-Mail-Adresse bei Yammer registrieren
3. Diesen Account zum Yammer-Admin machen

4. Synchronisierung eingrenzen
Es ist in der Regel so, dass neben den Benutzerkonten im AD auch die Konten für sämtliche Services und Programme angelegt werden. Um bestimmte OUs (Organizational Unit – ein Containerobjekt in einem Active Directory) von der Synchronisierung auszuschließen, müssen in der Sync-Tool Konfiguration bereits vor dem Einrichten Änderungen vorgenommen werden. Die Konfigurationsdatei finden Sie durch Rechtsklick auf das Sync-Tool-Symbol im Tray. Dort angekommen öffnen Sie über „About“ ein neues Fenster, wo Sie anschließend die „Advanced Configuration“ auswählen.

 

bild 1bild 2

 
Im Nachgang öffnet sich ein Verzeichnis mit Log-Dateien und Konfigurationen, die im JSON-Format gespeichert sind (Die Log-Dateien können bei Problemen sehr hilfreich sein).

bild4

 
Für unseren Task interessiert uns lediglich die „globalsettings.config.json“-Datei. In dieser müssen Sie den Abschnitt „Queries“ finden und dort im oberen(!) Teil folgende Zeile wie auf dem Bild einfügen:

bild5

Der untere Teil bleibt unverändert.

 
5. Sync-Tool Konfigurieren
Im nächsten Schritt gilt es, das Sync-Tool wunschgemäß zu konfigurieren. Dazu starten Sie das Tool und loggen sich mit der eingerichteten Yammer-Admin-Adresse ein.

bild6

 
Im Reiter „Directory Settings“ geben Sie den Hostnamen vom AD-Server ein und wählen anschließend aus, mit welchem Benutzernamen sich das Tool auf dem Server einloggen soll.

test

 
Nach einem Klick auf „Login“ sollte die Validierung losgehen, die im Anschluß durch einen Ergebnisbericht ausgewertet wird.

bild 7

 
Damit das Sync-Tool die Einladungsmails an die neuen AD-Nutzer versenden kann, müssen Sie die Maileinstellungen Ihres Mail-Servers eingeben.

bild 8

 
Nachdem die Mail-Einstellungen erfolgreich überprüft worden sind, kann die Synchronisation aktiviert werden und der Prozess ist hiermit erfolgreich abgeschlossen.

bild 9

In meinem nächsten Blog-Artikel wird die Einrichtung von Single Sign On mit Yammer näher erklärt. Das heißt mit dieser Anleitung lernen Sie, wie die Einmalanmeldung auch für Ihr Unternehmensnetzwerk Yammer greift.

Autor: Walter Nuss

PT_Blog_VK_WNuss_jpg

SharePoint 2013: Auslesen des WebTemplates nach Erstellung der Site

Mittwoch, 23. Juli 2014

12394062_blogSharePoint bietet diverse Vorlagen, um die verschiedensten Prozesse abzubilden. Das reicht von Inhaltstypen, über Bibliotheken und Listen bis zu Websites. Bei Websites ist die Nutzung von WebTemplates bzw. SiteTemplates zielführend. Nun möchte man mitunter wissen, auf Grundlage welcher Vorlage die aktuelle Website erstellt wurde. Hierzu existieren zwei mögliche Wege, es herauszufinden: clientseitig und serverseitig. Da sich die Varianten nur in der Schreibweise, aber nicht im Ergebnis unterscheiden, beschränke ich mich auf die serverseitige Variante.

Wir gehen davon aus, dass die individuelle Vorlage über den „Save site as template“-Link unter SiteSettings erstellt wurde. Dadurch liegt nun ein SiteTemplate im SolutionStore und wir können dieses erstellen. Wichtig ist hierbei die klare Trennung von WebTemplate und SiteTemplate. Site Template wird über den Link erstellt und ein WebTemplate kann ich über das Visual Studio erstellen. Die erste Variante ist aber vor allem für Endnutzer interessant, weshalb diese hier betrachtet wird.

Schaut man sich die MSDN-Dokumentation zur Klasse SPWeb an, findet man die ziemlich aussagekräftigen Eigenschaften WebTemplate und WebTemplateId, die das versprechen, was wir uns wünschen – sie geben uns die Vorlage zurück, mit der die Site erstellt wurde. Die Nutzung der Eigenschaften ist simpel, weshalb ich mir einen Codeausschnitt spare. Im Fall einer TeamSite erhalte ich die Zeichenkette „STS“ und „1“. Wer meine vorherigen Posts gelesen hat, vor allem den zur Erstellung einer Site auf Grundlage eines Custom WebTemplate, wird sofort erkennen, dass genau das die Zeichenkette ist, die wir zur Erstellung einer Site benötigen und die wir in Verbindung mit dem Anzeigenamen bringen können. Die Methode Add an der Eigenschaft „Webs“ am jeweiligen SPWeb ermöglicht uns die Übergabe des Template, welches zur Erstellung genutzt werden kann. Schlussendlich ist „Webs“ ja nur eine Collection. Folgender C#-Codeausschnitt kann also verwendet werden, um ein Web per Code hinzuzufügen:

Bild 1

Die Methode ist größtenteils selbsterklärend. Der für uns wichtige fünfte Parameter bestimmt die zu verwendende Vorlage. Die Zeichenkette hat dabei immer denselben Aufbau: [TEMPLATE]#[WEBTEMPLATEID]. Im Falle eines Standardtemplates wie der TeamSite kann natürlich auch die Klasse SPWebTemplate genutzt werden. Auch für CustomTemplates ist das möglich. Die SiteCollection besitzt die beiden Methoden GetWebTemplates und GetCustomWebTemplates. Zu verwenden sind diese recht einfach:

Bild 2

Über die beiden Methoden erhalte ich die installierten WebTemplates/SiteTemplates bzw. schon gleich nur die CustomTemplates. Dort kann ich dann meine entsprechende Vorlage herausfiltern und der Methode übergeben. Das ist wesentlich dynamischer als die Übergabe einer potenziell hart codierten Zeichenkette. Der Übergabeparameter für ein CustomTemplate würde am Beispiel wie folgt aussehen:

„{BB375F4C-23A1-4D53-9E31-61615FE74860}#TemplateName“

Die Erstellung einer Website auf Grundlage eines Templates ist also relativ simpel. Nun könnte man annehmen, dass die Eigenschaft WebTemplate und WebTemplateId auch relativ einfach für CustomTemplates genutzt werden können. Die Übergabe der GUID und des Namens durch ein „#“ getrennt erstellt definitiv ein entsprechendes Web. Das Auslesen der Eigenschaft am jeweiligen neu erstellten Web bringt allerdings einige Überraschungen. Es werden nicht die GUID und der Name gespeichert, sondern die Vorlage, die zur Erstellung des SiteTemplate genutzt wurde. Das heißt, wurde die TeamSite als Vorlage genutzt, steht in den Eigenschaft am neu erstellten Web „STS“ und „1“. Daher können wir im Nachhinein codetechnisch nicht mehr eindeutig erkennen, auf welcher Grundlage die Website erstellt wurde.

Das ist für unsere Anforderung katastrophal. Um diese trotzdem zu erfüllen, dient uns das PropertyBag des jeweiligen Webs. Über die Methoden GetProperty und SetProperty können wir KeyValuePairs in das PropertyBag schreiben. Dort hinein schreiben wir schlicht den entsprechenden Wert:

bild 3

Zu holen sind die Eigenschaften wie folgt:

bild 4

So ist es zumindest in der Theorie im Nachhinein möglich, genau festzustellen, auf welcher Grundlage die Website erstellt wurde. Einziges Problem an der Sache ist, dass wir auch während Erstellung einer Website nicht feststellen können, welches SiteTemplate zugrunde liegt. Feature Stapling funktioniert auf Website-Ebene nicht und die vermeintlich aussichtsreiche Variante über die Eventreceiver WebAdding und WebProvisioned die entsprechenden Daten zu ergattern, bleibt ohne Erfolg. Nirgends gibt es einen direkten Hinweis auf das SiteTemplate, welches eigentlich genutzt wird.

Wie erhalte ich nun die Information? Ich muss zugeben: Ich weiß es nicht. Die vorliegende Anforderung scheint dynamisch nicht abdeckbar zu sein. Sicherlich ist es möglich im Vorhinein festzulegen, welche Templates erstellt werden können, wodurch sich der Spielraum vehement einschränkt. Wir können auch anhand verschiedener Parameter festlegen, in welcher SiteCollection welche CustomTemplates erstellt werden können. Schlussendlich sind verschiedenste Ausprägungen möglich, in denen eruiert wird, welches Template erstellt wurde, aber am Ende existiert keine elegante dynamische Variante, mit der wir mit Sicherheit herausfinden können, welches Template genutzt wurde und die zu jeder Zeit funktioniert. Sollte ich mich an dieser Stelle irren, bitte ich um eine Information! J

Einzige ernstzunehmende Alternative ist die Erstellung einer eigenen SiteDefinition. Hier haben wir die Chance im Event „WebProvisioned“ das wirkliche Template auszulesen. Wir kommen also zu dem Schluss: In der Eigenschaft „WebTemplate“ steht der Name der SiteDefinition und nicht der des WebTemplates.

Wer bis zu diesem Absatz gekommen ist, wird sich wahrscheinlich immer noch fragen, ob es das gewesen ist, ob das echt so von Microsoft gewünscht ist. Für diese Leute habe ich ein Zitat aus der MSDN von der Eigenschaft WebTemplate (Abschnitt Remarks):

„When you create a custom site template by saving a site as a template and then create a new site from that template, the WebTemplate property contains the name of the site definition from which the custom template derives, not the name of the custom template. Thus if the site that was used to create a custom template was itself created from the standard team site definition, the WebTemplate property of all sites that are created from the new template will return “STS” (or the value of the constant SPWebTemplate.WebTemplateSTS).“

Man erkennt also: Das beschriebene Verhalten ist kein Bug.

Wichtig ist hierbei die Unterscheidung von SiteTemplate und WebTemplate. Das SiteTemplate wird über den am Anfang beschriebenen Link erstellt. Ein WebTemplate wird im Visual Studio erstellt, ist aber für den Endanwender eher unpraktisch. Einen sehr guten und ausführlichen Artikel gibt es hier.

Autor: Henrik Krumbholz

PT_XING_HKrumbholz_jpg

 

Onboarding bei der SharePoint Einführung – Integration von Systemen und Mitarbeitern

Dienstag, 06. Mai 2014

Onboarding - Frau mir PapierfliegerIn der 6. SharePoint-Sendung geht es um das Thema “Onboarding”.  Der Begriff ist Teil des Personalmanagements und bezeichnet das „An Bord nehmen“ von neuen Mitarbeitern durch ein Unternehmen und vor allem alle Maßnahmen, die die Integration fördern. Der Begriff ist im IT-Management auch bekannt und vor allem in der Einführungsphase von neuen Systemen. In der aktuellen Folge der SharePoint-Sendung wird folgende Frage beantwortet: Wie bekomme ich die Mitarbeiter dazu, dass Sie das Social Intranet, wie SharePoint, auch wirklich nutzen? Auch in diesem Fall gilt es Multiplikatoren und Mitarbeiter zeitnah in den Phasen der Einführung “an Board zu nehmen” und Maßnahmen zu schaffen, die die Akzeptanz der User für das neue System erhöhen. Oft integrieren Unternehmen die Mitarbeiter bei einer Systemeinführung viel zu spät. Doch schon in den frühen Phasen gilt es die Mitarbeiter einzufangen. Der erste Beitrag innerhalb der 6. Folge erklärt mehr dazu.

6 Phasenmodell Einfuehrung Intranet

6 Phasenmodell zur Einführung eines Intranets von perlrot (Integrieren Sie schon in diesen Phasen Ihre Mitarbeiter)

 

Eine weitere Maßnahme die User-Akzeptanz zu erhöhen ist die Abschaffung von Insellösung und das Erzeugen einer harmonischen Systemlandschaft.

Das heißt, Unternehmen sollten in den frühen Phasen bereits beleuchten, inwiefern schon eingeführte Systeme an den richtigen Stellen mit dem neuen System verbunden werden können. ProTechnology ist unter anderem im Bereich Application Integration unterwegs und schafft mit Out-of-the-box-Lösungen, wie dem CRM-SharePoint-Integrator, eine Brücke zwischen zwei Systemen, wie in diesem Fall dem Kundenmanagementsystem Dynamics CRM und dem Social Intranet SharePoint. Dokumente gehören ins SharePoint, Notizen ins OneNote, Kundendaten ins CRM, aber was ist mit Kundendokumenten und -notizen? Mit dem Produkt erzeugen Sie automatisiert SharePoint- bzw. OneNote-Funktionalität im Dynamics CRM und haben stets den Einblick auf die wichtigen Notizen und Dokumente, auch im CRM. Ein Systemwechsel wird damit unterbunden und der Nutzer muss für die Informationseinholung nicht mehrere Systeme nutzen. Im letzten Beitrag (ab 22:28min) der SharePoint-Sendung wird das Produkt CRM-SharePoint-Integrator von ProTechnology mit seinen Features vorgestellt.

Quellen: http://diesharepointsendung.de/
Autor: Melanie Wolf

SharePoint: Listeneinträge via Metadatenfeld und JavaScript ermitteln

Mittwoch, 19. März 2014

201403_BLOG_SP_ListeneintraegeMetadatenfelder im SharePoint sind eine feine Sache. Globale Erstellung und Verwendung machen einige Dinge sehr einfach. Andere Dinge wiederum werden etwas umständlicher und zum Graus, wenn man nicht mal weiß, wonach man googlen oder yahooen soll. So zum Beispiel das programmatische Auslesen eines Listeneintrags anhand eines Metadatenfeldes über JavaScript.

Die Herausforderung der Aufgabenstellung sah wie folgt aus: Es bestehen zwei Listen. In Liste A gibt es ein Metadatenfeld, welches isteneintraegemit anderer Bezeichnung und anderem Namen in Liste B vorkommt. In Liste A soll nun ein Lookup-Feld auf Liste B verweisen. In diesem Lookup-Feld steht genau der Eintrag, der durch das Metadatenfeld identifiziert wird.

Klingt relativ simpel. Wir entschieden uns über den Weg CAMLQuery. Dazu benötigten wir den Wert des Metadatenfeldes. Dies stellte sich als relativ einfach heraus, wenn man die entsprechende Stelle im HTML gefunden hat. Trotzdem befindet sich hier schon die erste Stolperfalle. Über die Developertools des IE’s erhält man als sichtbaren Teil des Feldes ein div mit dem Text des Metadatenfeldes.

SharePoint Listeneinträge via Metadatenfeld und JavaScript ermitteln_Bild1

Der von uns benötigte Wert befindet sich allerdings etwas weiter oben in der Hierarchie in einem Input-Feld, das da wie folgt aussieht:

SharePoint Listeneinträge via Metadatenfeld und JavaScript ermitteln_Bild2

  • Mk1: Name des Metadatenfeldes
  • Value: Das ist der eigentliche Wert „Wert|GUID“

SharePoint trennt praktisch Datenanzeige und Dateneingabe.

Der Wert im input-Feld wird in „Anzeigewert“ und „GUID“ per | geteilt. Die GUID ist unerlässlich für die Arbeit mit dem Termstore und ist eineindeutig. Nun liegt die Vermutung nahe anhand der GUID in die Liste B zu gehen und dort per CAMLQuery den Eintrag herauszufinden. Im Internet findet man jetzt die verschiedensten Ansätze das CAML zu nutzen – es geht über Lookups zu Integer und Textfeldern. Schlussendlich sollte aber der Typ „TaxonomyFieldTypeMulti“ gewählt werden (bzw. ohne „Multi“), um auf eine Taxonomiefeld zuzugreifen. Unsere zweite und vermeintlich letzte Hürde ist also genommen und wir erstellen folgende Query:

SharePoint Listeneinträge via Metadatenfeld und JavaScript ermitteln_Bild3

Der Wert in der Variablen „userInput“ entspricht dabei der GUID. Wider Erwarten funktioniert die Query nicht. Verschiedene Methoden führen zu keinem Ergebnis. Mit dem SPCAMLQueryHelper von codeplex war der Fehler dann relativ schnell klar. Schlussendlich ist für die Nutzung im CAML nicht die GUID von Relevanz sondern der Wert selbst. In unserem Beispiel muss also „V1“ übergeben werden, um die entsprechenden Items zu bekommen. Die Query ändert sich dabei nicht.

Mit Aufruf der getItems-Funktion der Liste B erhalten wir alle entsprechenden Einträge.

SharePoint Listeneinträge via Metadatenfeld und JavaScript ermitteln_Bild4

Zur Lösung der Aufgabenstellung muss dann nur noch das korrekte Item herausgefiltert werden. Die Voraussetzungen ermöglichten uns die Annahme, dass immer nur genau ein Item gefunden werden wird. Wir holen uns also die ID des Eintrags und schreiben diese in das Lookupfeld.

SharePoint Listeneinträge via Metadatenfeld und JavaScript ermitteln_Bild5

Obgleich wir im SharePoint ein hohes Maß an Eindeutigkeit durch IDs und GUIDs erreichen, scheint es hier nichts zu nützen. Zwar ist die GUID unerlässlich für die Arbeit im Termstore, aber scheinbar irrelevant für den vorliegenden Fall.

Als Alternative zum JavaScript bleibt dann noch die Möglichkeit des EventReceivers in einer Custom Solution. Je nach Anforderung kann das schneller und besser zum Ziel führen.

Autor: Henrik Krumbholz

PT_XING_HKrumbholz_jpg

 

SharePoint (Online) in CRM (Online) integrieren? Go for IT!

Mittwoch, 04. Dezember 2013

SharePoint-CRM-IntegrationKennen Sie das Problem, wenn Dokumente im CRM nicht auch im SharePoint sind? Oder wenn zu einem Kunden jedes mal manuell eine passende SharePoint-Seite angelegt werden muss? Wir nicht mehr, denn wir haben eine Lösung.

[Randnotiz: Das ist unser Einführungs-Blogartikel. Erfahren Sie mehr auf unserer Produktseite.]

Seit Längerem haben wir eine Lösung in Betrieb, die uns so einige Integrationsthemen abnimmt. Anfänglich noch eher spartanisch, kann diese mittlerweile mit den Eigenheiten der neuen Onlinevarianten von CRM 2013 und SharePoint 2013 umgehen. Der eine oder andere Kunde bekam diese Lösung bereits, jedoch musste diese immer aufwändig angepasst und bereitgestellt werden. Doch nun haben wir eine CRM-Lösung, die bequem importiert und konfiguriert werden kann.

Was denn nun für eine Lösung?

Wir nennen ihn liebevoll “CRM-SharePoint-Integrator“. Es ist, wie bereits erwähnt, eine CRM-Lösung (Solution) die ziemlich einfach importiert werden kann. Dazu begibt man sich im CRM in das Menu “Einstellungen” > “Lösungen”. Dort angekommen wählt man “Importieren” und klickt sich durch den sich öffnenden Assistenten.

Import-Solution1

Was kann der CRM-SharePoint-Integrator?

Vereinfacht ausgedrückt, kann er für unterschiedlichste Ereignisse im CRM (bspw. das Anlegen/Ändern einer Firma) ein/mehrere SharePoint-Objekt/e (siehe Produktmatrix hier) im SharePoint anlegen. Im Folgenden möchten wir Ihnen ein paar Antworten auf die typischen Fragen zu, die uns als Microsoft Systemhaus in Kundenprojekten immer wieder begegnen beantworten:

Wie verbinde ich Microsoft SharePoint und Dynamics CRM?

  • Wie erstelle ich automatisch eine SharePoint-Webseite pro Account, Opportunity oder Kampagne im Dynamics CRM?
  • Wie erstelle ich nach Bedarf SharePoint Bibliotheken, – Webseiten etc. für Entitäten im Dynamics CRM?
  • Wie synchronisiere ich Accountdaten aus Dynamics CRM als Listeneintrag in SharePoint?

Die Standard-Integration bietet leider nur wenig Features, um SharePoint mit Dynamics CRM zu verbinden: Dynamische URLs werden erzeugt, eine Dokumentenverwaltung steht zur Verfügung. Mehr ist es leider nicht. Aber die Lösung CRM-SharePoint-Integrator von ProTechnology bietet viele Vorteile, wie Sie anhand der Produktmatrix unten sehen. Neben Dokumenten-Bibliotheken sind auch Standardlisten, benutzerdefinierte Listen (auch nach Vorlage), Teamseiten und vieles mehr möglich automatisiert aus Entitäten (Datensatztyp) im CRM zu erzeugen. Für die Konfiguration steht eine eigene Entität zur Verfügung, in der Ihr Systemadmin schnell und einfach bestimmen kann, in welcher Entität bei einem bestimmten Ereignis eine SharePoint-Seite/-Element benötigt wird. Auch die Online-Versionen von SharePoint und Dynamics CRM werden unterstützt .

Oberflaeche_fuer_die_Konfiguration

Oberfläche für die Konfiguration

Wie kann die Standard-SharePoint-Integration in Dynamics CRM erweitert werden?

Die Standard-Integration kann um die in der hier aufgeführten Produktmatrix genannten Listen/Seiten erweitert werden oder nutzen Sie komplett die Funktionalität, die SharePoint Ihnen bietet, indem Sie sich SharePoint im IFrame in Dynamics CRM anzeigen lassen. Auf diesem Weg können Sie über ein Fenster im CRM-Datensatz in den SharePoint schauen und Features, wie Kopie herunterladen, Eigenschaften bearbeiten, SharePoint-Suche etc. nutzen.

SharePoint_Dokumentenbibliothek_pro_Account

SharePoint Dokumentenbibliothek pro Account

Projektmanagement_mit_Integration_Dynamics_CRM_und_SharePoint_verbessern

Projektmanagement mit Integration Dynamics CRM und SharePoint verbessern

Welche SharePoint Apps und Funktionen sind im Dynamics CRM integrierbar?

Unsere Produktmatrix und unsere Anwendungsfälle erläutert im Detail, welche SharePoint-Elemente, wie im Dynamics CRM konfiguriert werden können. Von Standardlisten, Dokumentenbibliotheken, benutzerdefinierten Listen/Seiten, Teamseiten, Ordnern, benutzerdefinierten Listeneinträgen mit konfigurierbarem Feld-Mapping, OneNote-Notizbücher/bzw. -Abschnitte, Taxonomie-Einträge mit Hierarchie und vieles mehr sind derzeit möglich aus dem CRM im SharePoint zu erstellen.

Wie verbinde ich OneNote mit Dynamics CRM?

Beschäftigt man sich ein wenig mit der Materie, findet man die vor kurzem noch angekündigte OneNote-API. Jedoch kann diese API im aktuellen Status nur das OneNote-Notizbuch im eigenen OneDrive bearbeiten. Eine Bearbeitung eines im SharePoint liegenden Notizbuchs ist aktuell noch nicht möglich, aber immerhin bereits auf der Wunschliste.

Da aber auch wir nicht so lange warten wollen, haben wir analysiert, welche Alternativen es gibt. Erstaunlicherweise sind es sogar recht viele, die jedoch alle der Reihe nach aus Gründen der Performance oder Kompatibilität ausscheiden. Nur eine Alternative blieb, die Anfangs regelrecht gepflastert mit Stolpersteinen schien, die sich jedoch im Laufe der Zeit eher als Steighilfen erwiesen. Im Screenshot sieht man, wie eine mögliche Konfiguration aussehen könnte. Mehr dazu gibt es auf dem folgenden Blog-Beitrag: OneNote heiratet CRM/SharePoint-Integrator

OneNote - Seite

OneNote-Abschnitt/-Seite pro Account/Verkaufschance im Dynamics CRM

Fazit

Der CRM-SharePoint-Integrator kann Ihnen viele wiederkehrende Aufgaben abnehmen und integriert zudem den SharePoint je nach Wunsch in Ihrem CRM. Kompatibel ist der CRM-SharePoint-Integrator mit dem CRM ab Version 2011 in den Varianten On-Premise und Online sowie mit dem SharePoint ab Version 2007 in den Varianten On-Premise und Online. Die Funktionalität können Sie sich auch nochmal im Webcast hier anschauen:

Erfahren Sie mehr auf unserer Produktseite. Haben Sie Fragen zum Produkt, möchten Sie eine Vorführung oder das Produkt beziehen, so sprechen Sie uns an.

Autor: Dirk Sarodnick und Melanie Wolf
Google+

Beyond Managed Properties – Die SharePoint-Website und Liste eines Dokuments an das Front-End übergeben

Donnerstag, 28. November 2013

Bruecke_Blog_28112013Bei der Verwendung von angepassten Display-Templates für suchgetriebenen Dokumentenzugriff kann man leicht an Grenzen stoßen. Dies ist der Fall, wenn man Eigenschaften des Dokuments als Filterkriterium nutzen möchte, die auf Dokumenten-Ebene nicht explizit dem Dokument zu entnehmen sind. Ein klassisches Beispiel: das Ableiten von Website-URL/Name oder Dokumentenbibliothek-URL/Name anhand eines in SharePoint durchforsteten Dokuments.

Da diese Informationen im Standard nicht auf der “Etage” eines Spaltenwertes untergebracht sind und wir auch nicht aus dem Dokumenten-URL fehleranfällige Substring-Methoden herleiten wollen, gibt es einen einfachen Kniff mit Hilfe eines Workflows, der hier zum Einsatz kommt. Der Workflow triggert automatisch, bei Erstellung/Änderung eines Dokuments (ergo stets aktuell) und schreibt die fehlenden Informationen (Listenname und Website URL) in dafür vorgesehene Textspalten, die über das Inhaltstypen-Management unsichtbar geschaltet werden, damit der Endanwender durch diese Felder nicht gestört wird. Über die Datenquelle “Workflowkontext” können wir dem Dokument tatsächlich den Namen seiner Bibliothek sowie den Website-URL entnehmen.

beyond1

Zu Testzwecken eingeblendet, finden wir in den Spalten “PT_DokLibName” und “PT_SiteName” die fehlenden Meta-Informationen. Einmal als Vorlage bereitgestellt, geschieht das gleiche Prozedere mit jedem Dokument, welches in eine entsprechend konfigurierte Bibliothek hochgeladen wird.

beyond2

Sobald der Incremental Crawl den Datenbestand durchlaufen hat, sind die dazugehörigen Crawled Properties (CP) mit dem Präfix “ows_ …” im Suchschema der Sitecollection zu finden und können einer generischen Managed Property (MP) “RefinableStringXY” zugeordnet werden.

beyond3

Als letzten Schritt nehmen wir uns das Display-Template vor, um die nun vorhandenen MP für das Front-End bereitzustellen. Da es sich um den Ergebnistyp “Word-Dokument” handelt, wurde zunächst das Display-Template für Word-Dokumente inkl. Vorschau-Template exportiert und unter anderem Namen wieder importiert. Zunächst tragen wir die für das Display-Template gewünschten MP in dem dafür vorgesehenen HTML-Tag ein (Zeile 14 bis 18). Da wir unter anderem auch den Dateinamen angezeigt bekommen möchten, fügen wir auch diese MP dem Mapping-Bereich hinzu.

beyond4

Nun fügen wir dem <body> des HTML-Codes die Zeilen 43 bis 70 hinzu. Die isEmptyString-Conditions prüfen, ob die MP auch tatsächlich einen Wert enthalten, bevor Sie dem Nutzer angezeigt werden. Der Dateiname ergibt sich aus der MP “Filename”, welche bereits im System existiert, jedoch nicht von allen Display-Templates unterstützt wird. Den Website-URL entnehmen wir der MP “RefinableString02″, den Titel der Website erhalten wir durch die vorhandene MP “SiteTitle”. Nun zur Bibliothek: die MP “RefinableString01″ liefert uns den Namen der Bibliothek, den Bibliotheks-URL wiederum erhalten wir über die bereits vorhandene MP “ParentLink”.

beyond5

Bei der Betrachtung des Endergebnisses stellen wir fest, dass sämtliche Werte korrekt übergeben werden und auch die Verlinkungen korrekt auf die Website, bzw. zur Dokumentenbibliothek führen, die das Dokument enthalten.

beyond6

Auf diese Weise kann die Ergebnisdarstellung einer suchgetriebenen Dokumentenabfrage im Hinblick auf die Nutzerfreundlichkeit noch einmal deutlich verbessert werden. Nun kann der Endanwender direkt und ohne Verrenkungen Website und Bibliothek aufrufen – letzteres nun auch, ohne über den Button “Bibliothek” des Vorschaufensters navigieren zu müssen.

Autor: Karsten Ulferts

SharePoint 2013 Website mit benutzerdefiniertem WebTemplate per Workflow erstellen

Freitag, 15. November 2013

Artistic EndeavourMein Kollege Herr Weichert erklärte in seinem letzten Blogbeitrag, wie mit einfachen Bordmitteln ein WebTemplate im SharePoint 365 per Workflow zu deployen ist. Dabei setzte das Szenario jedoch voraus, dass der Workflow an einer bestimmten Liste hängt und bei jedem neu hinzugefügten Item ausgelöst wird. Das funktioniert mit Standard-Templates, wie der Teamwebsite, sehr gut. Im Workflow wird einfach „STS#0“ als WebTemplate angegeben. Nun haben selbst angelegte WebTemplates keinen solch einfach strukturierten Template-Namen. Was muss ich also angeben, sodass anstatt der Teamsite meine eigens erstellte Vorlage genutzt wird?

Im SharePoint Designer hat man in der entsprechenden Variable „WebTemplate“ verschiedene Typen zur Auswahl:

–          Boolesch

–          Datum/Uhrzeit

–          Ganze Zahl

–          GUID

–          Wörterbuch

–          Zahl

–          Zeichenfolge

Für die Teamseite nutzten wir den Typ „Zeichenfolge“. Für unsere eigene Vorlage schien der Typ GUID vorerst prädestiniert. Spontan fiel uns die SolutionID aus der Manifest.xml ein. Wenn man diese allerdings einträgt, wird man arg enttäuscht. Es wird keine Subsite angelegt.

Die Lösung ist relativ simpel. Wenn man sich die Zeichenfolge „STS#0“ anschaut, scheint diese Struktur nicht willkürlich. Das Gros der Leser erkennt natürlich, dass das der Standardwert von Microsoft für eine Teamseite ist. Die Werte sind auch relativ schnell mit den IE Developer Tools auffindbar: in der Selektionsbox beim Erstellen der Unterseite als „value“ des entsprechenden Eintrags. Weiterhin tauchen dann in den anderen Auswahlmöglichkeiten auch Dinge auf wie „BLOG#0“ oder „COMMUNITY#0“. Einige von euch werden wissen, worauf es hinausläuft.

Scrennshot1

Im Reiter „Benutzerdefiniert“ befindet sich unsere eigene Vorlage. Mit den IE Developer Tools markiere ich den Eintrag und es wird mir eine relativ kryptische Zeichenkette angezeigt, die im Wesentlichen folgendes Format hat:

–          {GUID}#[TEMPLATENAME]

Ein Beispiel sieht wie folgt aus:

–          {71F841A7-F471-4043-8DC7-FB26D64D0F25}#MyWebTemplate

Achtung: Diese Guid entspricht nicht der SolutionID! Das ist die FeatureID, mit der die Vorlage ausgerollt wurde. Diese ID ist also auch beim Ausrollen auf einer anderen SiteCollection in jedem Fall identisch.

Scrennshot2

Wenn wir diese Zeichenkette als Wert im SharePoint Designer eintragen und den Workflow erneut starten: Voilà. Unser eigenes Template bekommt seine Oberfläche per Workflow.

screenshot4Die FeatureID kann man schlussendlich auf zwei Wege herausfinden. Zum einen ist es möglich, diese einfach im Feature abzulesen, wenn es sich um eine selbsterstellte Lösung handelt. Sollte das nicht der Fall sein, kann man einen aus SharePoint 2010 bekannten Umweg gehen, indem man auf „Deaktivieren“ des jeweiligen Features klickt. In der Adressleiste des Browsers taucht eine URL auf, die die ID des Features enthält. Der Eintrag hinter dem Doppelkreuz definiert dann nur noch das eigentliche Template.

Autor: Henrik Krumbholz

PT_XING_HKrumbholz_jpg

 

SharePoint 2013 Suche – Ergebnisse wie man sie sich wünscht.

Montag, 21. Oktober 2013

Papierrollen_Blog_21102013Bei der Entscheidung für “Search” als Datenzugriffstechnologie ist man dank schneller Aktualisierung des Suchindex in der Lage, Übersichten von Webseiten, Bibliotheken, Dokumenten oder Listenelementen sinnvoll durch Filter und Sortierung aufbereitet darzustellen – sogar über mehrere Websitesammlungen hinweg. Jedoch werden die verlinkten Ergebnistitel nicht immer automatisch so angezeigt ,wie es wünschenswert wäre. Was vor kurzem noch mühevoll mit XSLT zusammengefrickelt werden musste, lässt sich heute schnell und bequem mit HTML und JavaScript anpassen. 

Unser Anwendungsfall beinhaltet projekt-bezogene Listenelemente, die über eine Websitesammlung verteilt sind und über einen suchgetriebenen-Mechanismus zu einer Gesamtübersicht zusammengezogen werden sollen. Jeder Datensatz enhält Rich-Text-Felder zur Beschreibung von wöchentlichen Aktivitäten mit Projektbezug. Man kann also verallgemeinert von einem Reporting für projektbezogene Wochenberichte sprechen.

In diesem Beispiel haben wir es mit einem Suchergebniswebpart zu tun, der Listenelemente einer Websitesammlung anzeigt, die einem bestimmten Inhaltstypen (Statusreport) entsprechen. Randnotiz: wenn Sie den Inhaltstypen als Filterkriterium verwenden möchten, geben Sie immer den vollen Namen des Inhaltstypen an – nicht die ID. Der folgende Screenshot zeigt das unangepasste Suchergebnis. Da es sich bei den Suchergebnissen um Listenelemente handelt, werden logischerweise die Ansichtsformulare (DispForm.aspx) als verlinkter Ergebnistitel angezeigt. Da der Ergebnistitel in dieser Form keinen Informationswert besitzt, soll er so angepasst werden, dass er mittels Konkatenation aus den Metadaten des Listenelements einen sinnvollen und informativen Ergebnistitel anbietet.

problemstellung

Der nächste Screenshot zeigt das verwendete Display-Template. In dieser HTML-Datei binden wir die “Platzhalter-Managed Properties” ein, die wir zuvor mit der passenden Crawled Property (in der Regel “ows_Spaltenname”) verknüpft haben. Eine detaillierte Beschreibung zum Thema Managed/Crawled Properties finden Sie hier. Nach dem Eintragen der Managed Properties innerhalb des Tags “mso:ManagedPropertyMapping” können wir beginnen, die übergebenen Werte zur Anreicherung des Ergebnistitels zu verwenden. Dabei verbirgt sich hinter RefinableString00 die Kalenderwoche (KW), hinter RefinableString01 der Projektname und hinter RefinableString27 das Jahr.

Soll-Zustand ist die Syntax: <Projektname> – KW <Kalenderwoche> <Jahr>

Nun wenden wir uns der Zeile 27 zu. Dort weisen wir eine neue Variable mit dem Titel “ctx.CurrentItem.Title” zu. Der Übergabewert  setzt sich aus den Managed Properties in Form einer sinnvollen Verkettung (Konkatenation) zusammen. Randnotiz: obwohl das JavaScript ab Zeile 25 auskommentiert ist, so entfaltet es dennoch seine gewollte Wirkung.

displaytemplatecode

Im nächsten Schritten betrachten wir bereits das Ergebnis. Randnotiz: sollten zunächst keine Werte übergeben werden, warten Sie den nächsten Incremental Crawl ab. Dieser dauert in Office 365 ca. 10 Minuten. Besonders schön zu beobachten ist die Übereinstimmung der Daten mit dem Refinement Panel (rechts), welches die selben Managed Properties konsumiert, wie der von uns angepasste verlinkte Ergebnistitel.

statusreportsapp2

Beim Fahren mit dem Mauszeiger über eine der Ergebniszeilen (Hovering) werden dem Nutzer weitere Informationen aus dem Datensatz angezeigt, ohne den Datensatz explizit öffnen zu müssen. Mehr dazu hier. Im konkreten Fall können wir nun darauf verzichten, im wöchentlichen Turnus etwa Word-Dokumente mit den aktuellen Projektberichten im Unternehmen herumzuschicken. Stattdessen haben wir einen einfachen und automatischen Mechanismus geschaffen, um Statusreports zu Projekten projektübergreifend mit allen wichtigen Filtermöglichkeiten zur Nutzung durch den Anwender bereitzustellen.

Autor: Karsten Ulferts

SharePoint Server 2013 Lizenzierung – einfach und verständlich erklärt

Montag, 14. Oktober 2013

Blog_SharePointLizensierung_KochIn meinem heutigen Beitrag werde ich Ihnen einfach und verständlich die Lizenzierung des SharePoint Servers 2013 erklären. Wir starten mit den rechtlichen Rahmenbedingen und den Grundlagen der Lizensierung. Sie erleben anhand von einem dynamischen Beispiel die verschieden Einsatzszenarien von SharePoint Server 2013 und die Besonderheiten bei der Lizenzierung. Zum Schluss zeige ich Ihnen noch eine mögliche Alternative, den Cloud Dienste mit Office 365.

Richtige Lizenzierung ist Chefsache und eine fehlerhafte Lizenzierung ist kein Kavaliersdelikt. Eine falsche Lizenzierung kann schwerwiegende Folgen für das betreffende Unternehmen haben. Angefangen bei der kostenpflichtigen Nachlizenzierung, über den Imageverlust bei Mitarbeitern und Kunden und im schlimmsten Fall eine Gefängnisstrafe für den Verantwortlichen. Aus diesem Grund ist eine korrekte Lizenzierung sehr wichtig für den Geschäftserfolg und das positive Image des Unternehmens. Die Geschäftsführung, die letztendlich haftet, muss die Verantwortung entweder delegieren oder sich regelmäßig mit dem Thema Lizenzierung auseinandersetzten. Die verschiedenen Softwareanbieter mit ihren verschiedenen Vertragsmodellen, die regelmäßigen Vertragsänderungen und der ständige technische Wandel sind ein sehr komplexes Thema.

Grundlagen der SharePoint Lizenzierung

sharepoint2013logoMicrosoft SharePoint 2013 ist eine webbasierte Plattform für die Zusammenarbeit im Unternehmen und ein sehr umfangreiches Enterprise Dokumenten Management System mit einer tiefen Office-Integration. Mit dieser Technologie können Unternehmen individuelle Lösungen für die folgenden Einsatzszenarien abbilden:

  • SharePoint als Intranet
  • SharePoint als Extranet
  • SharePoint als Internet

Für die Nutzung des SharePoint Server 2013 werden zusätzlich zwei weitere Serverprodukte aus dem Hause von Microsoft benötigt. Als Betriebssystem dem Windows Server und als Datenbank den MS SQL Server; beide idealerweise in der aktuellen Version. Damit es nicht zu kompliziert wird, gehe ich heute nur auf die Lizenzierung des SharePoint Server 2013 ein. Zusätzlich können im SharePoint Server auch noch Web-Apps integriert werden. Diese werden zwar vom SharePoint Server bereitgestellt, aber über das Office des Nutzers lizenziert. Das bedeutet jeder Mitarbeiter, der die Web-Apps nutzen kann, benötigt eine Volumenlizenz für ein Office 2013. Die Web-Apps haben den Vorteil, dass Dokumente in jedem Browser angezeigt und bearbeitet werden können, auch zum Beispiel von einem Smartphone.

Der SharePoint Server wird nach dem Server CAL Modell lizensiert. Bei der SharePoint Lizenzierung wird zwischen Named-Usern und anonymen Zugriffen unterschieden. Das bedeutet alle Named User benötigen immer eine Zugriffslizenz eine sogenannte CAL [Client Access License] Es spielt dabei keine Rolle, ob der Zugriff von einem internen oder externen Mitarbeiter erfolgt. Für den SharePoint Server gibt es die beiden folgenden CAL´s:

  • Share Point Server 2013 Standard
  • Share Point Server 2013 Enterprise

Die Enterprise CAL ist eine Zusatzlizenz. Das bedeutet Nutzer, die Enterprise Features nutzen können, müssen die beiden CAL´s zugewiesen bekommen. Die CAL´s gibt es wiederum in zwei verschiedenen Ausführungen: einmal als User CAL und als Device CAL. Entweder wird eine Person oder ein Gerät lizenziert. Bei einem Unternehmen mit Schichtbetrieb, wo mehrere Nutzer einen Rechner nutzen, kann der Einsatz von Device CAL´s sinnvoll sein. Bei der Nutzer CAL darf der Nutzer von verschiedenen Geräten aus den SharePoint Server nutzen. Eine Mischlizenzierung von USER und Device CAL ist nicht zulässig.

Wichtig ist auch, dass die Server und die CAL Lizenz die gleiche Version entsprechen. Das bedeutet, Sie können mit einer SharePoint Server 2010 Standard CAL keinen SharePoint Server 2013 lizenzieren. Für solche Fälle ist der Abschluss einer Software Assurance sinnvoll. Das bedeutet, Sie kaufen eine Lizenz und zusätzlich für einen vertraglich vereinbarten Zeitraum ein erweitertes Nutzungsrecht. Dieses Recht beinhaltet unter anderem im Vertragszeitraum die aktuellste Software Version einzusetzen.

SharePoint Server 2013-Lizenzierung

 

Beispiel – SharePoint Lizenzierung

In der Regel wird in Unternehmen SharePoint dynamisch eingeführt. Am Anfang als Intranet und in den nächsten Schritten werden die SharePoint Anwendungen erweitert und auch für weitere Szenarien eingesetzt. Das folgende Lizenzierungsbeispiel ist genauso dynamisch aufgebaut.  Wir gehen in diesem Fall von einer On Premise Lösung aus.

1. SharePoint Server Standard für ein Intranet mit 800 Nutzern

Die Lizensierung erfolgt nach dem Server CAL Modell und wir benötigen demnach 1 Lizenz für den MS SharePoint Server 2013 und 800 mal die SharePoint Server 2013 Standard CAL. Sollten aus technischen Gründen mehrere SharePoint Server notwendig sein, so benötigen Sie für jeden Server eine SharePoint Server Lizenz.

2. Für 4 Abteilungen mit insgesamt 200 Mitarbeitern werden SharePoint Enterprise Funktionalitäten bereitgestellt

Die Anwendung ist so konfiguriert, dass nur die 200 Mitarbeiter der beiden Abteilungen die SharePoint Enterprise Funktionalitäten nutzen können. Für diesen Fall werden zusätzlich 200 mal die SharePoint Server 2013 Enterprise CAL benötigt. Wichtig ist, dass der Nutzer die SharePoint Server Enterprise Features nutzen kann, und demnach eine Standard und eine Enterprise CAL zugewiesen bekommt.

3. Erweiterung für ein Extranet mit SharePoint Server Standard 2013 mit 150 Nutzern

Es wird eine Erweiterung für 150 externe Nutzer bereitgestellt. Bei der Lizenzierung werden externe Nutzer genauso nach dem Server CAL Modell behandelt. In diesem Fall werden zusätzlich 150 Lizenzen der SharePoint Server 2013  Standard CAL benötigt.

4. Erweiterung – Internetseite mit SharePoint Server Standard 2013

Es wird zusätzlich mit dem SharePoint Server Content bereitgestellt, der öffentlich verfügbar ist. Aus Sicht der SharePoint Lizenzierung müssen keine neuen Lizenzen bereitgestellt werden. Der SharePoint Server enthält schon alle erforderlichen Nutzungsrechte. Aber nicht zu vergessen ist in diesem Fall, dass der Windows Server und der MS SQL Server für anonyme Zugriffe lizenziert werden müssen. Das bedeutet, dass die Windows Server zusätzlich mit External Connector Lizenzen lizenziert werden müssen. Der anonyme Zugriff bedeutet für den MS SQL Server, dass dieser nicht nach dem Server CAL Modell lizenziert werden darf, sondern pro Prozessorkern.

Bei der korrekten Lizenzierung “OnPremise” gilt es Einiges zu beachten und zusätzlich müssen Sie sich noch um den Betrieb und die Wartung der Systeme kümmern.

 

71Eine Alternative – SharePoint Server aus der Cloud mit Office 365

Sie nutzen den Dienst, verwalten Ihre Nutzer, und die Nutzung der Office Web Apps sind auch in fast allen Varianten von Office 365 schon enthalten. Die Anwendungen sind korrekt lizenziert und um den Betrieb müssen Sie sich auch keine Gedanken machen, denn das erledigt Microsoft zuverlässig in seinen Rechenzentren. Zudem wird der Dienst an die aktuelle Version angepasst, sodass Sie immer mit aktueller Software arbeiten können, ohne neue Lizenzen zu erwerben.

Mehr zu SharePoint Online und den Office365-Plänen erfahren Sie: www.protechnology.de/DesktopModules/PTDownloads/Handlers/Download.ashx?id=71

Expertentipp Hybridlösung: Sie können den SharePoint Server 2013 auch als Hybridlösung betreiben, und dabei die Anfangsinvestitionen sehr gering halten. Wie funktioniert dieser Ansatz? Wählen Sie anstatt der User CAL den entsprechenden Online Plan aus. SharePoint Online „Plan 1“ entspricht dem SharePoint Server Standard und „Plan 2“ entspricht SharePoint Server Enterprise. Sie können bei dieser Variante entscheiden, welche Daten Sie lokal oder in der Cloud speichern. Es ist auch möglich alle Daten lokal zu speichern und ggf. zukünftig diesen Dienst zu nutzen. Zudem haben Sie die Flexibilität, die User monatlich anpassen zu können.

Fazit: Wenn Sie sich nicht um die Lizenzierung kümmern wollen, können Sie sich auf den Online-Dienst von Microsoft verlassen. Zusätzlich haben Sie die Sicherheit, dass Sie korrekt lizenziert sind, können immer mit einer aktuellen Software arbeiten und Sie zahlen nur das, was Sie tatsächlich nutzen. Eine echte Alternative besonders auch für kleine und mittelständige Unternehmen.

Autor: Matthias Boden

PT_XING_MBoden

Office365: Subsite – Workflow – REST und die Verbindung

Mittwoch, 09. Oktober 2013

blog_102013_2Als User der OnPermise Variante respektive SharePoint Server 2013 ist man manche Features einfach gewohnt. Ein einfaches Beispiel ist das Ausrollen einer SubSite über einen Workflow, doch in SharePoint Online? Na huch? Wo ist denn die Aktion für “Create New Site”?

Im SharePoint Designer gähnende Leere und dann auch noch der Aspekt der neuen WorkFlow Engine, sprich 2013er Stages, Steps, Apps und doch gibt es schon einige Anbieter, welche Features wie Projektmanagement-Anwendungen anbieten und auch diese kochen nur mit Wasser. Also muss es einen Weg geben, auch in Office365 und nach langer Suche durch diverse Blogbeiträge hat es KLICK gemacht.

Jedoch ist einfach Abtippen natürlich eine Lösung aber keine Option, wenn man tiefer und weiter gehen will und deshalb standen Stunden voll Theorie, Kopfschmerzen und Verzweiflung auf dem Programm bis ich kapiert habe was er da eigentlich gezaubert hat. Denn mal ehrlich, wer weiß sofort was “REST” ist und wie man es sinnvoll und zielführend nutzt, geschweige denn, zu was es in Office365 fähig ist? Daher zum Anfang der Versuch eines kleinen Wissensaufbaus zum Auffrischen bzw. Heranführen an die Materie.

REST oder in ausgesprochener Form Representational State Transfer soll im Grunde als Ergebnis einen Seiteninhalt als URL auf Basis einer serverseitigen Aufgabe oder Aktion erzeugen. In meinen Worten heißt das, ich speichere Inhalte in Variablen, übergebe sie einen Algorithmus und lasse sie über eine URL bspw. eine neue SubSite erstellen. Und nun genug Vorgeplänkel und auf ins System:

Phase 1: Erstellen der Startbedingung

Als Auslöser erstellen wir “eine benutzerdefinierte Liste”, in meinem Beispiel “nature Projects” in der Website-Sammlung “Test_Project”

Liste_WF

 

In der Liste habe ich zusätzlich noch eine Spalte “Project Url” angelegt und sie als Pflichtspalte gekennzeichnet und “Description”(Beschreibung im deutschen Office365) als optionales Feld ergänzt. So ergibt sich beim Klicken auf neues Element folgendes Bild.

Eingabemaske

Ziel ist, dass bei jeder Erstellung eines neuen Eintrags in der Liste der Workflow gestartet wird und damit die neue Unterseite erstellt wird.

Danach navigieren wir in der Liste über die Ribbon Leiste über “Liste–>Workflow Einstellungen–>Erstellen eines neuen Workflows mit SharePoint Designer”

Im offenen SharePoint Designer geben wir dem Workflow einen Namen z.B. “Create Site”, tragen eine Beschreibung ein (optional) und bestätigen alles.

Phase 2: Der Workflow

Nun kommen wir zum spannenden Teil. Im Vorhinein ein Bild des kompletten Workflows den wir Stage für Stage abarbeiten werden und dabei versuche ich kurz auf die einzelnen Teile und ihre Funktionen einzugehen.

Complete WF

Stage: Creating request Header

Wir erstellen ein Wörterbuch  RequestHeader, fügen in ihm eine Variable content-type und Accept vom Typ Zeichenfolge(String) hinzu und geben ihnen den Wert application/json;odata=verbose.

 

  • Content-type – Gibt Format der Daten an, die vom Client an den Server gesendet werden
  • Accept – Gibt das Format der Daten an, die der Client vom Server erwartet
  • application/json – Objekt vom Typ JavaScript
  • odata=verbose – Open Data Protokoll vom Typ verbose –> Datenaustauschformat basierend auf Standard JavaScript, spezifiziert in der ECMA-262 

Als Bestätigungskriterium habe ich noch einen Genehmigungsworkflow eingefügt, dieser ist aber optional und kann beim Test ausgelassen werden.

Stage: Creating Request Body

Hier legen wir 3 Wörterbücher (MetaData, Request, RESTparameters) an und  geben ihnen folgende Variablen mit:

MetaData:

  • type/Zeichenfolge/SP.WebInfoCreationInformation – Spezifiziert die Meta-Informationen der Seite wie Url, Beschreibung, Vorlage, …

Request:

  • Url/Zeichenfolge/[%CurrentItem:Url%] –> mein angelegtes URL Feld aus der Liste
  • Title/Zeichenfolge/[%CurrentItem:Title%] –> Title Feld aus Liste
  • Description/Zeichenfolge/[%CurrentItem:Beschreibung%] –> Beschreibungsfeld aus der Liste
  • Language/Ganze Zahl/1033 –> Code für deutsche Spracheinstellungen
  • WebTemplate/Zeichenfolge/sts#0 –> Code für Standard Teamseiten Vorlage
  • UseUniquePermissions/Zeichenfolge/false –> keine Zuweisung von eigenen Berechtigungskonzepten (Verwendung der übergeordneten)
  • __metadata/Wörterbuch/MetaData –> Verweis auf Variable für die spezifischen Metadaten der Site

RESTparameters:

  • Parameters/Wörterbuch/Request –> erhält die Variable Request als Inhalt

Stage: Creating Site

Anlegen eines App Steps und hinzufügen einer HTTP-Webdienst Aktion vom Typ POST, wir wollen ja eine Aktion lostreten und nicht per GET etwas empfangen oder holen.

Erweiterte Einstellungen:

  • RequestHeaders: Variable: RequestHeader –> definiert die Informationsaustausch-Richtlinie (siehe Create Request Header)
  • RequestContent: Variable: RESTparameters –> holt die Informationen für die auszuführende Aktion aus Schritt Create Request Body

Zum Abschluss lass ich noch eine E-Mail an mich schicken, um zu wissen, wann und ob der Workflow abgeschlossen wurde.

Speichern und Veröffentlichen.

Wichtig ist noch, dass unter den Workfloweinstellungen die Option zum automatischen Starten aktiviert ist. Ohne Automatismus kein Workflow bei einem neuen Eintrag.

Wf_option

 

Phase 3: App Berechtigung

Nach erfolgreicher Veröffentlichung steht noch ein wichtiger Schritt aus. Der Workflow braucht Berechtigungen, da er durch den AppStep Eingriffe in der Seite vornimmt.

Unter Webseiteneinstellungen –> App Berechtigungen die Nummer des Workflows notieren. Diese befindet sich zwischen dem letzten | und dem ersten @.

WF_ID

Danach wechseln wir in den Berechtigungsbereich der Sammlung, indem wir den Link bis (in meinem Fall) …/sites/t_p/_layouts/ verkürzen und daran appinv.aspx anhängen. Damit öffnet sich die Berechtigungsseite.

Unter App Id trägt man obige Nummern ein und bestätigt das Lookup. Alle Informationen werden automatisch ergänzt und der letzte Schritt besteht darin, die App-Berechtigungen einzutragen. Quasi damit die App respektive Workflow weiß, wo er, was wie darf.

App_Perm

Im nächsten Fenster dem App-Vertrauen zustimmen und fertig.

Phase 4: Neue Seite … GoGoGo :)

Jetzt in die Liste, neues Element anlegen, Pflichtfelder ausfüllen, bestätigen und wie ich freudig im Kreis springen.

Wenn es nicht sofort funktioniert keine Panik, meist liegen die Fehler bei der Variablen-Zuordnung. Am besten im Workflow-Status prüfen, wo er aussteigt, meist findet man so schnell den Grund.

Ich hoffe das konnte Einigen helfen. Der nächste Schritt wird das Einbinden einer eigenen Vorlagenseite sein. Das wird anscheinend noch ein paar Nerven, Haare und Stunden kosten ;)

Bis dahin Stay SharePoint und viel Spaß beim probieren.

Autor: Felix Weichert

PT_XING_FWeichert