SharePoint Überwachung elegant gelöst – Sponsored Post

Die Firma AvePoint hat freundlicherweise unser Jubiläumsevent in Düsseldorf gesponsert. Dafür möchten wir uns mit einem „Sponsored Post“ bedanken. Alex Katzdobler schreibt zum Thema SharePoint Governance. Vielen Dank an Alex für den sehr interessanten Artikel.

Der Weg hin zu einer strukturierten und logischen Gliederung in SharePoint, also von der Web Applikation bis hin zu jeder einzelnen Seite oder Bibliothek, ist oft von anfänglichen Schwierigkeiten geprägt und erst nach langer Zeit sinnvoll realisiert. In diesem Stadium angekommen, würde sich so mancher SharePoint-Administrator wohl wünschen, dass fortan keine Änderungen mehr gemacht werden und die Umgebung so bleibt wie sie ist. Die Realität sieht aber leider anders aus. SharePoint ist eine lebendige Plattform und zeichnet sich dadurch aus, dass Endbenutzer in die Rolle des Administrators schlüpfen und somit für Veränderungen im Aussehen von SharePoint sorgen können. Sowohl der Site Collection Administrator als auch der Site Owner tragen durch die weitreichenden Berechtigungen auf ihren Seiten mit die Verantwortung, was dort passiert und wie sich diese Bereiche entwickeln. Doch hier liegt bereits die erste Schwierigkeit. Continue reading

Herzliche Glückwünsche an den SharePoint PodCast

Lieber Michael,

am Wochenende hat der erste deutsche (und sehr langlebige) SharePoint PodCast seinen zehnten Geburtstag gefeiert. Du hast 317 Ausgaben veröffentlicht, 150 Gesprächen und Interviews haben wir gespannt gelauscht. 6 Tage 8 Stunden 25 Minuten haben wir im Auto, im Zug, auf dem Sofa, in der Badewanne, im Flugzeug oder auch mal im Wartezimmer gelauscht. Dabei hast Du unsere mit 7,7 GB Informationen, Tipps, Tricks und jeder Menge Spaß versorgt. Mir fallen wirklich nur sehr wenige PodCasts oder Blogs ein, die so konstant und lange hochwertigen Content geliefert haben. Chapeau!

An dieser Stelle mal ein ganz dickes Dankeschön von uns an Dich! Ohne die SharePoint Community, gäbe es unsere UserGroups und ganz besonders unseren PodCast nicht (Du hast ja lange dafür gegraben… ;))

Wir freuen uns schon auf die nächsten 10 Jahre Rundum Versorgung.

Herzliche Grüße,

Andrej und das SharePoint Rhein-Ruhr Team

Umstellung des Podcasts

Im Rahmen der Aufräumaktion auf unserer Site haben wir auch das Backend für die Bereitstellung der Podcasts erneuert. Gestern haben wir das Backend von Blubbry auf den Podlove Publisher umgestellt und die Folgen migriert.

Im Zuge dieser Umstellung kann es durchaus für ein paar Tage noch zu Rucklern und Knarzern kommen, die sich im Podcast Feed oder durch „Fehlposts“ bemerkbar machen. Bis zum Wochenende sollten alle Fehler raus sein und die Feeds wieder einwandfrei laufen.

Der iTunes Feed ist noch nicht aktualisiert, wir arbeiten daran. Bis dahin verweise ich gerne auf den direkten Feed unter:

http://www.sharepoint-rhein-ruhr.de/feed/podcast

Gewinnen werden wir durch die Umstellung einen deutlich komfortableren Webplayer und Kapitelmarken, die die Navigation in den Podcasts vereinfachen werden.

Vielen Dank für Euer Verständnis.

SharePoint PeoplePicker mit mehreren Domänen

Hier ein Update zu meinem Post, in dem ich schon mal beschrieben habe, wie man von einem SharePoint System eine andere Domäne mit durchsucht. Ich kannte bis dato nur den Weg über das gute alte STSADM; aber natürlich geht es auch mit PowerShell!

Und sogar noch viel besser. Mit der PowerShell kann ich in SharePoint mehr als eine Domäne durchsuchen. Und so geht es:

$wa = Get-SPWebApplication http://sp2013.dev-acme.local 

$adsearchobj = New-Object Microsoft.SharePoint.Administration.SPPeoplePickerSearchActiveDirectoryDomain
$userpassword = ConvertTo-SecureString "MeinPasswort" -AsPlainText – -Force
$adsearchobj.DomainName = "acme.local"
$adsearchobj.ShortDomainName = "ACME Corporation"
$adsearchobj.IsForest = $false #$true for Forest, $false for Domain
$adsearchobj.LoginName = "devlookup"
$adsearchobj.SetPassword($userpassword)

$wa.PeoplePickerSettings.SearchActiveDirectoryDomains.Add($adsearchobj)
$wa.Update()

Das ist zwar insgesamt etwas länger, aber deutlich verständlicher als die Zeile

STSADM.exe -o setproperty -pn peoplepicker-searchadforests -pv "domain:acme.local,acme\devlookup,MeinPasswort" -url http://sp2013.dev-acme.local

13. Treffen der SharePoint UserGroup Köln – Workflow Special!

Hallo Liebe Mitglieder und Interessierte,

ich möchte Sie heute herzlich zum 13. Treffen der SharePoint UserGroup Köln einladen. Die Winterpause ist vorbei, der Weihnachtsspeck muss weg, jetzt geht es endlich mit der SPUG Köln weiter. Wir treffen uns am 3. Februaur im Rheinauhafen in Köln.

Unser Programm:

„Das große Workflow Special“

Vier unerschrockene Experten haben sich zusammengefunden, um in unserer Arena mal ordentlich die Workflow-Muskel spielen zu lassen. Wir vergleichen 3 Technologien und beobachten die Experten bei der Lösung eines Businessproblems live on Screen.

In der Arena treten an:

K2 blackpearl – Christian Kaiser, ConVista Consulting AG

Nintex Workflow – Henning Eiben, busitec GmbH

Microsoft Workflow – Denis Buco, COMPAREX AG und Karsten Pohnke, arvato Systems perdata GmbH

Am Beispiel eines Onboarding Prozesses werden wir die drei Lösungsansätze im Praxistest vergleichen, d.h. die Experten haben ein Zeitlimit unter dem die einzelnen Bausteine umgesetzt werden müssen. Dadurch bekommt man einen sehr umfassenden und praxisnahen Überblick über die Usability und Leistungsfähigkeit der Plattformen.

Denis Buco ist SharePoint Consultant bei der COMPAREX AG aus Leipzig in der Niederlassung Köln. Dort beschäftigt er sich hauptsächlich mit den Schwerpunkten SharePoint Infrastruktur, Office 365 und Prozessabbildung.

Henning Eiben ist als Teamleiter der Software-Entwicklung und Geschäftsführer für die busitec GmbH tätig. Seit über 10 Jahren entwickelt er Web-basierte Anwendungen im Microsoft Technologie-Umfeld (von classic ASP mit VBScript, über ASP.Net 1.1, bis hin zu ASP.Net MVC 4 mit Azure). Seit 2007 ist er als Berater und Entwickler im SharePoint Bereich tätig. Er bloggt sowohl im Firmenblog (blog.busitec.de) als auch bei der Usergroup Rhein-Ruhr (www.sharepoint-rhein-ruhr.de).

Christian Kaiser hat uns als Mitglied der UserGroup schon mit tollen Vorträgen zu Search Themen begeistert, ist Author und Sprecher der ersten Stunde auf SharePoint Rhein Ruhr. Er ist seit vielen Jahren als Senior Consultant für SharePoint sowie Prozesslösungen tätig und hat insbesondere mit K2 blackpearl und K2 connect in großen Kundenumgebungen einen riesigen Erfahrungsschatz gesammelt.

Karsten Pohnke ist als erfahrener Microsoft SharePoint Consultant bei der arvato Systems perdata GmbH tätig. Seine Aufgaben sind Beratung, Konzeption und Entwicklung von Business Solutions im SharePoint und .Net Umfeld bei mittleren und großen Unternehmen. Neben seiner beruflichen Tätigkeit veröffentlicht er immer wieder Tipps und Tricks im Netz. Sie erreichen ihn über seinen Blog (www.ilikesharepoint.de) oder via Twitter (@kpohnke).

Über Ihre Teilnahme und interessante Diskussionen würde ich mich sehr freuen.

Hier noch einmal die Daten:

SharePoint UserGroup Köln

Termin: Dienstag, 03.02.2015 – 18.00 Uhr

Ort: ConVista Consulting AG, Im Zollhafen 15/17, 50678 Köln

Parken: Parkplätze stehen in der Tiefgarage im Rheinauhafen zur Verfügung, bitte in der Nähe des Aufgangs 3.04 parken.

Öffentliche Verkehrsmittel:
– U-Bahn Linie 16 ab Dom-Hbf bis Haltestelle Ubierring (ca. 15 Min.), Fußweg vom Ubierring bis zu ConVista ca. 10 Minuten
– U-Bahn Linie 15 ab Rudolfplatz bis Haltestelle Ubierring (ca. 11 Min.), Fußweg vom Ubierring bis zu ConVista ca. 10 Minuten
– Bus Linie 106 ab Heumarkt bis Haltestelle Rheinauhafen (ca. 7 Min), Fußweg vom Rheinauhafen bis zu ConVista ca. 2 Minuten

Anmeldung:
Um Anmeldung für diese Veranstaltung wird bis zum 30.01.2015 gebeten.
Bitte melden Sie sich zum Treffen der SharePoint UserGroup nur an, wenn Sie auch wirklich teilnehmen möchten.

Die Anmeldung kann erfolgen über:
eMail: info@sharepoint-rhein-ruhr.de oder ug-koeln@mysharepoint.de

XING: https://www.xing.com/net/prib6b3dax/spugcgn

Ansprechpartner:
Andrej Doms (ConVista Consulting)
Tel. 0178 888 6018

Neben den Vorträgen gibt es bei einem Snack hoffentlich reichlich Gelegenheit für Sie, mit den anwesenden Experten ins Gespräch zu kommen.
Ich freue mich, Sie alle am 03. Februar begrüßen zu dürfen.

Mit freundlichen Grüßen

Andrej Doms

Debuggen von SharePoint-Apps

Vor einiger Zeit wurde ich gefragt: “Wie kann ich eigentlich eine SharePoint(-Hosted) App debuggen?”.

Die erste Antwort ist natürlich: Developer Tools! Alle Browser verfügen heute über Developer-Tools, die das Debugging von JavaScript Anwendungen erlauben.

imageimage

Wenn ich die Anwendung im Browser ausführe kann ich in den Quellcode springen und dort – wie in Visual Studio – Breakpoints setzen. Anschließend muss ich die Seite ggf. noch einmal laden, damit der JavaScript-Code noch einmal ausgeführt wird und mein Breakpoint erreicht wird.

Anschließend kann ich den Wert von Variablen ansehen oder den Call-Stack betrachten und natürlich kann ich durch meinen Code-Steppen und genau die Ausführung meines Codes untersuchen.

image

Es gibt aber auch noch einen andere Weg: Visual Studio!

Wenn ich den IE als Browser für meine Anwendung verwende, dann kann ich meine Breakpoints auch direkt in Visual Studio in meinem JavaScript Code setzen. (Wenn man mehrere Browser installiert hat, habe ich in einem früheren Beitrag beschrieben, wie ich in einem SharePoint-App-Projekt den zu verwendenden Browser festlegen kann).

Anschließend kann ich meine Anwendung direkt in Visual Studio starten und sobald ich meinen Breakpoint erreiche kann ich meinen JavaScript Code in Visual Studio debuggen – mit alle Debugging-Funktionen die ich in Visual Studio zur Verfügung habe.

image

Ein Vorteil bei der Verwendung von Visual Studio ist, dass ich nicht zunächst die JavaScript Datei einmal im Browser geladen haben muss um den Breakpoint zu setzten.

Browser für SharePoint-Apps festlegen

Als Web-Entwickler bin ich es inzwischen gewohnt, dass ich in Visual Studio beim Starten meiner Web-Anwendung auswählen welcher Browser für die Anzeige verwendet werden soll.

image

Leider sieht das Start-Button bei einem SharePoint-Projekt ein wenig anders aus.

image

Es wird immer der Browser verwendet, den ich als Default-Browser in Windows eingestellt habe. Schade wenn ich die Anwendung mal mit einem anderen Browser testen will – dann muss ich den Browser manuell starten und die URL per Copy & Paste dort einfügen; insbesondere weil die URL bei SharePoint-Hosted Apps ja nun auch nicht gerade intuitiv ist.

Aber es gibt eine Lösung. Wenn ich die Projekteigenschaften anzeige, dann kann ich bei SharePoint-Projekten auswählen welcher Browser beim Starten verwendet werden soll.

image

Super!!

Dokumentsets im Eigenbau

Dokumentsets sind ein sehr schicke Funktion von SharePoint Server. Leider gibt es die nur in der Server-Version – also nicht wenn man nur Foundation einsetzt.

Was also tun, wenn der Kunde nur eine Foundation hat, aber Anforderungen hat, die nach den Eigenschaften eines Document-Sets schreien?

Die Anforderungen

Vielleicht zunächst zu den Anforderungen des Kunden. Die Anforderung war, dass es ein Dokument gibt, zu welchem Anlagen existieren. Also eine Klassischer Master-Detail Beziehung zwischen den Dokumenten.

SharePoint kennt ja durchaus Anlagen – aber nur für Listenelemente, nicht bei Dokumenten. und Anlagen habe den Nachteil, dass es keine Versionierung und eigene Meta-Daten gibt. Das ist irgendwie doof. Schöner wäre es, wenn man also zu einem Dokument beliebig viele Anlagen anfügen könnte.

Natürlich hat mir diese Frage keine Ruhe gelassen und ich habe mir gedacht, dass sich das doch recht einfach lösen lassen muss.

Ein Lösungspfad

Fangen wir einmal ganz einfach an. Zuerst einmal brauchen wir zwei Dokument-Bibliotheken, eine für die Dokumente und eine für die Anlagen. In der Bibliothek der Anlagen wird dann eine Nachschlage-Spalte hinzugefügt, die auf die Dokumente verweist. Somit kann man also Anlagen hochladen und die mit einem Dokument verknüpfen.

doc_set_diy_01

Als nächstes sollten die Anlage immer beim jeweiligen Dokument mit angezeigt werden. Dazu wir die Standard-Ansicht des Dokuments bearbeitet und ein App-WebPart für die Anlagen Hinzugefügt.

doc_set_diy_02

Nun muss an das WebPart noch ein Filter übergeben werden. Dazu wird die ID des aktuellen Dokuments übergeben und in der Liste der Anlage in der Spalte QM-Dokumente gefiltert.

doc_set_diy_03

Wenn man nun also ein Dokument öffnet, sieht man nur die Anlage, die mit diesem Dokument verbunden sind.

Allerdings hat diese Lösung noch einen Haken: sie ist unhandlich in der Pflege. Wenn man eine neue Anlage zu eine Dokument hinzufügen will, dann muss man die Anlage in die Liste der Anlagen hochladen und in den Meta-Daten auf das Dokument verweisen. Das ist irgendwie doof. Besser wäre es ja, wenn man z.B. in der Detail-Ansicht des Dokuments sagen könnte “bitte eine neue Anlage für dieses Dokument hochladen”.

Das Customizing

Mit ein wenig JavaScript kann man das Handling der Lösung vereinfachen. Zunächst wird jQuery, ein File-Input Element und ein Button gebraucht.

<script type="text/javascript" src="https://mytenant.sharepoint.com/qm/scripts/jquery-1.8.2.min.js"></script>
<input type="file" id="fileSelectorInput">
<input type="button" onClick="javascript: DoUpload();" value="Go!">

Nun folgt also die Magie. Die liegt hier natürlich in der Funktion DoUpload. Hier wird zunächst die Datei aus dem Dateisystem gelesen und dann als ByteCharacter-Array an eine weiter Funktion übergeben.

function DoUpload() {
    var fileInput = jQuery('#fileSelectorInput');

    var file = fileInput[0].files[0];
    var reader = new FileReader();
    reader.onload = function (result) {
         var fileName = '',
         libraryName = '',
         fileData = '';
 
        var byteArray = new Uint8Array(result.target.result)
        for (var i = 0; i < byteArray.byteLength; i++) {
            fileData += String.fromCharCode(byteArray[i])
        }
        
        DoUploadInternal(file.name, fileData);
    };
    reader.readAsArrayBuffer(file);
}

Soweit ist ja noch alles ganz Simple. Als nächstes wird die Datei mittels JSOM in den SharePoint geladen, um direkt auch die Meta-Daten setzen zu können.

Zunächst wird die ID des aktuellen Dokuments aus der URL gelesen und der Wert des Feldes QMName aus dem Anzeigeformular. Denn wir wollen der Anlage nicht nur einen Verweis auf das aktuelle Dokument geben, sondern auch die Meta-Daten aus dem Feld QMName mit an die Anlage übergeben.

JSRequest.EnsureSetup();
var qmName = jQuery('h3:contains("QM Name")').closest('td').next('td').text();
var qmDokumentId = JSRequest.QueryString["ID"];

Nun brauchen wir einen ClientContext, damit wir eine neue Datei für SharePoint anlegen können. Dort fügen wir dann das Character-Array unserer Datei als Content an.

clientContext = new SP.ClientContext.get_current();
var oWebsite = clientContext.get_web();
var oList = oWebsite.get_lists().getByTitle("QM-Anlage");

var fileCreateInfo = new SP.FileCreationInformation();
fileCreateInfo.set_url(fileName);
fileCreateInfo.set_content(new SP.Base64EncodedByteArray());

for (var i = 0; i < fileContent.length; i++) {
    fileCreateInfo.get_content().append(fileContent.charCodeAt(i));
}

newFile = oList.get_rootFolder().get_files().add(fileCreateInfo);
clientContext.load(newFile);

Nun müssen wir noch die Meta-Daten setzen. Dazu holen wir zunächst alle Feld-Informationen und setzen dann den Wert für QMName und erstellen einen Lookup auf das aktuelle Dokument.

item = newFile.get_listItemAllFields();
clientContext.load(item);

item.set_item("QMName", qmName);
var object = new SP.FieldLookupValue();
object.set_lookupId(qmDokumentId);
item.set_item("QMDokument", object);
item.update();

clientContext.executeQueryAsync(successHandler, errorHandler);

Am Schluss wird das Ganze dann als asynchrone Query an den Server gesendet. Im successHandler wird dann noch die aktuelle Seite aktualisiert, damit das neu hinzufügte Dokument auch in der Liste erscheint.

SP.UI.ModalDialog.RefreshPage(SP.UI.DialogResult.OK); 

Fazit

Mit ein bisschen Creativität und ein wenig JavaScript Anpassungen kann man schon ganz ordentlich etwas aus SharePoint heraus kitzeln.

doc_set_diy_04

SharePoint UserGroup OWL

Die SharePoint UserGroup OWL trifft sich am 9.12. in Gütersloh. Hier der Hinweis für alle SharePointer aus der Region. Es lohnt sich auf jeden Fall hinzugehen, da Ingo Zimmermann und René Hézser ein wirklich interessantes Programm zusammengestellt haben.

Wann: 9.12.2014 ab 18 Uhr

Wo: An der Autobahn 200, 33333 Gütersloh
https://www.google.de/maps/dir//51.8841959,8.4429219/@51.8834721,8.4421559,17z?hl=de

Themen:

  • SharePoint Hosting – Ist die Cloud schon geeignet dafür? von Daniel Lindemann (ITaCS GmbH)
  • Das Spannungsfeld Development-Operation im Umfeld von SharePoint Hosting von Andre Tomasiewicz (arvato Systems)

Da der Raum sich auf dem Firmengelände befindet, ist eine namentliche Voranmeldung erforderlich.

Anmeldungen und Details unter XING: https://www.xing.com/events/sharepoint-usergroup-owl-dezember-2014-1467606

Vielen Dank an Karsten Pohnke für den Hinweis, den wir natürlich gerne aufnehmen und weitergeben.

Also, nix wie hin!