Größe von SharePoint Datenbanken ermitteln

Manchmal sind es die Kleinigkeiten, die man sucht … jetzt kam die Frage auf: wie groß ist eigentlich die SharePoint-Datenbank? Auch wenn es heute nicht mehr so gerne zum Einsatz kommt: PowerShell (auf dem Server) ist dafür einfach am schnellsten:

Get-SPContentDatabase | % {
    [PSCustomObject]@{
        Name=$_.Name
        WebApp=$_.WebApplication
        Size_GB='{0,7:n2}' -f ($_.DiskSizeRequired / 1GB)
    }
} | ft

Die Ausgabe kann dann in etwa so aussehen:

Name                                           WebApp                                         Size_GB
----                                           ------                                         -------
WSS_Content_a18f327c335d4bd0b49a446d6c20076b   SPWebApplication Name=ADFS Web App                0,04
VPC312_Content_MySites                         SPWebApplication Name=MySite Host                 0,05
VPC312_Content_Portal                          SPWebApplication Name=Portal                     18,55

UserGroup On Tour in Münster – Infrastructure as Code

Hallo Liebe Mitglieder,

wir möchten Sie heute herzlich zum 1. SharePoint UserGroup On Tour einladen. Wir reisen am 29. Oktober ins schöne Münster und schauen uns weihen die Konferenzräume der busitec GmbH ein.

Unser Programm dreht sich dieses Mal vollständig um das Thema Infrastructure as Code, wie man z.B. RollOuts oder Farmsetups effizient und flexibel gestalten kann und mittels Anlehnung an agile Methoden und Erfahrungen aus der Entwicklerwelt eine umfassende DevOps Kultur in der IT fördert.

Unsere Sprecher sind:

Denis Buco, Microsoft Deutschland GmbH

Henning Eiben, busitec GmbH

Andrej Doms, novaCapta Software & Consulting

Über Ihre Teilnahme und interessante Diskussionen würden wir uns sehr freuen.

Hier noch einmal die Daten:

SharePoint UserGroup On Tour „Münster“

Termin: Montag, 29.10.2018 – 18.00 Uhr

Ort: busitec GmbH, Martin-Luther-King-Weg 8, 48155 Münster

Parken: Parkplätze sind mit „busitec“ gekennzeichnet – ansonsten sollten am Straßenrand auch genügend Möglichkeiten vorhanden sein.

Xing: https://www.xing.com/events/sharepoint-usergroup-on-tour-munster-1998774

Meetup: https://www.meetup.com/de-DE/SharePoint-Office-365-Rhein-Ruhr/events/255483810/

Ansprechpartner:

Andrej Doms
Tel. 0151 58 22 72 38
Henning Eiben
Tel. 0173 27 67 812

Neben den Vorträgen gibt es bei einem Snack hoffentlich reichlich Gelegenheit für Sie, mit den anwesenden Experten ins Gespräch zu kommen.
Wir freuen uns, Sie alle am 29. Oktober begrüßen zu dürfen.

Mit freundlichen Grüßen

Andrej und Henning

18. Treffen in Köln mit Hans Brender – OneDrive Deep Dive

Hallo liebe Interessenten,

ich möchte Sie heute herzlich zum 18. Treffen der SharePoint UserGroup Köln einladen. Wir treffen uns am 12. November bei der novaCapta Software & Consulting in Köln im Mediapark.

Unser Programm dreht sich dieses Mal vollständig um das Thema OneDrive, wie setzt man OneDrive richtig ein, wie schützt man es, welche Tücken hat der Client und wie kann man sicher Dateien teilen. Die Session gibt einen ausführlichen 360° Blick auf OneDrive for Business.

Unser Sprecher ist diesmal:

Hans Brender – Hans ist langjähriger MVP zu den Themen Next Generation Sync Client, OneDrive for Business, OneDrive und allen vorhergehenden Produkten. Microsoft hat ihn seit 2013 regelmäßig als MVP ausgezeichnet. Auf seinem Blog teilt er seine Erfahrungen und wichtige Tipps und ab Dezember wird er europaweit mit der Microsoft Ignite – The Tour mit vielen weiteren MVPs unterwegs sein.

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

Hier noch einmal die Daten:

SharePoint UserGroup Köln

Termin: Montag, 12.11.2018 – 18.00 Uhr

Ort: novaCapta Software & Consulting, Im Mediapark 5C, 50670 Köln

Parken: Parkplätze stehen in der Tiefgarage im Mediapark zur Verfügung, bitte in der Zentralgarage oder in der Garage Mediapark 5 parken.

Eine ausführliche Anfahrtsbeschreibung findet sich hier!

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

Ansprechpartner:
Andrej Doms
Tel. 0151 58 22 72 38

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 4. Dezember begrüßen zu dürfen.

Mit freundlichen Grüßen

Andrej Doms und das UserGroup Team

31. Treffen in Düsseldorf mit Hans Brender – OneDrive Deep Dive

Hallo liebe Interessenten,

ich möchte Sie heute herzlich zum 31. Treffen der SharePoint UserGroup Düsseldorf einladen. Wir treffen uns am 4. Dezember bei der ppedv in Düsseldorf.

Unser Programm dreht sich dieses Mal vollständig um das Thema OneDrive, wie setzt man OneDrive richtig ein, wie schützt man es, welche Tücken hat der Client und wie kann man sicher Dateien teilen. Die Session gibt einen ausführlichen 360° Blick auf OneDrive for Business.

Unser Sprecher ist diesmal:

Hans Brender – Hans ist langjähriger MVP zu den Themen Next Generation Sync ClientOneDrive for BusinessOneDrive und allen vorhergehenden Produkten. Microsoft hat ihn seit 2013 regelmäßig als MVP ausgezeichnet. Auf seinem Blog teilt er seine Erfahrungen und wichtige Tipps und ab Dezember wird er europaweit mit der Microsoft Ignite – The Tour mit vielen weiteren MVPs unterwegs sein.

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

Hier noch einmal die Daten:

SharePoint UserGroup Düsseldorf

Termin: Dienstag, 4.12.2018 – 18.00 Uhr

Ort: ppedv AG, Graf-Adolf-Straße 63, 40210 Düsseldorf

Parken: Das Parkhaus Contipark befindet sich in der Grupellostraße 34, in Düsseldorf und kostet 1,60 € pro Stunde. Es ist 24h geöffnet und ca. 300 m von unserem Veranstaltungsort entfernt.

Öffentliche Verkehrsmittel:

Nehmen Sie eine Straßenbahn der Linie 709, 704 oder 715. Die 715 fährt z.Z., aufgrund von Bauarbeiten, nur zeitweise über den Stresemannplatz. Verlassen Sie die Straßenbahn an der Station Stresemannplatz. Der Stesemannplatz ist die nächste Haltstelle vom Hauptbahnhof (Luftlinie max. 500 m). Von dort sind es noch 2 Minuten Fußweg.

Anschlussmöglichkeiten zum Veranstaltungsort:
– Mit der 709 Richtung Neuss Theodor-Heuss-Platz
– Mit der 704 Richtung D-Südfriedhof
– Mit der 715 Richtung D-Spichernplatz

XING: https://www.xing.com/communities/groups/sharepoint-usergroup-duesseldorf-06a1-1060251

Ansprechpartner:
Andrej Doms
Tel. 0151 58 22 72 38

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 4. Dezember begrüßen zu dürfen.

Mit freundlichen Grüßen

Andrej Doms und das UserGroup Team



Sei unser Patreon

Beim letzten Treffen in Düsseldorf kam von den Teilnehmern der Vorschlag, die Treffen der UserGroup auch aus der Community zu unterstützen. Das könnt ihr jetzt via Patreon tun und dafür sorgen, dass wir auch unabhängig von Sponsoren die Treffen und die Sprecher weiter finanzieren können.

Wie kam es dazu? 

In Düsseldorf z.B. haben wir keinen festen Raum, bzw. die Räume, die wir kostenlos bekommen können, sind nicht immer frei oder bieten genügend Raum. In diesem Fall müssen wir wie beim 29. Treffen auf bezahlte Locations zurückgreifen und auch das Catering aus eigener Tasche stemmen.

Von Euch kam der Vorschlag, doch einfach über Patreon oder PayPal eine Spendenbox aufzumachen, damit sich alle Besucher beteiligen können, ohne das wir eine Teilnahmegebühr oder ähnliches einnehmen müssen.

Das haben wir hiermit getan.

Become a Patron!

30. Treffen der SharePoint UserGroup Düsseldorf mit Nicki Borell

Hallo liebe Interessenten,

ich möchte Sie heute herzlich zum 30. Treffen der SharePoint UserGroup Düsseldorf einladen. Wir treffen uns am 11. Oktober bei der ppedv in Düsseldorf.

Unser Programm dreht sich dieses Mal vollständig um das Thema Azure Information Protection, wie man E-Mails, Dokumente und vertrauliche Daten steuern und sichern kann, die außerhalb Ihres Unternehmens freigegeben sind. Von der einfachen Klassifizierung bis hin zu integrierten Bezeichnungen und Berechtigungen erweitert Azure Information Protection den Datenschutz zu jeder Zeit – unabhängig davon, wo die Daten gespeichert sind und für wen sie freigegeben werden.

Unser Sprecher ist diesmal:

Nicki Borell – Sprecher auf über 100 Konferenzen, Author, MVP, Microsoft Productivity Experte, Mitgründer von Experts Inside, Gründer des Labels Xperts at Work und Partner der atwork GmbH. Im Team setzt er erfolgreich IT- und Strategieprojekte im gehobenen Mittelstand und Großkundensegment um. 

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

Hier noch einmal die Daten:

SharePoint UserGroup Düsseldorf

Termin: Donnerstag, 11.10.2018 – 18.00 Uhr

Ort: ppedv AG, Graf-Adolf-Straße 63, 40210 Düsseldorf

Parken: Das Parkhaus Contipark befindet sich in der Grupellostraße 34, in Düsseldorf und kostet 1,60 € pro Stunde. Es ist 24h geöffnet und ca. 300 m von unserem Veranstaltungsort entfernt.

Öffentliche Verkehrsmittel:

Nehmen Sie eine Straßenbahn der Linie 709, 704 oder 715. Die 715 fährt z.Z., aufgrund von Bauarbeiten, nur zeitweise über den Stresemannplatz. Verlassen Sie die Straßenbahn an der Station Stresemannplatz. Der Stesemannplatz ist die nächste Haltstelle vom Hauptbahnhof (Luftlinie max. 500 m). Von dort sind es noch 2 Minuten Fußweg.

Anschlussmöglichkeiten zum Veranstaltungsort:
– Mit der 709 Richtung Neuss Theodor-Heuss-Platz
– Mit der 704 Richtung D-Südfriedhof
– Mit der 715 Richtung D-Spichernplatz

XING: https://www.xing.com/communities/groups/sharepoint-usergroup-duesseldorf-06a1-1060251

Ansprechpartner:
Andrej Doms
Tel. 0151 58 22 72 38

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 11. Oktober begrüßen zu dürfen.

Mit freundlichen Grüßen

Andrej Doms und das UserGroup Team

17. Treffen der SharePoint UserGroup Köln – Nicki Borell – Azure Information Protection

Hallo liebe Interessenten,

ich möchte Sie heute herzlich zum 17. Treffen der SharePoint UserGroup Köln einladen. Wir treffen uns am 13. September im Mediapark in Köln.

Unser Programm dreht sich dieses Mal vollständig um das Thema Azure Information Protection, wie man E-Mails, Dokumente und vertrauliche Daten steuern und sichern kann, die außerhalb Ihres Unternehmens freigegeben sind. Von der einfachen Klassifizierung bis hin zu integrierten Bezeichnungen und Berechtigungen erweitert Azure Information Protection den Datenschutz zu jeder Zeit – unabhängig davon, wo die Daten gespeichert sind und für wen sie freigegeben werden.

Unser Sprecher ist diesmal:

Nicki Borell – Sprecher auf über 100 Konferenzen, Author, MVP, Microsoft Productivity Experte, Mitgründer von Experts Inside, Gründer des Labels Xperts at Work und Partner der atwork GmbH. Im Team setzt er erfolgreich IT- und Strategieprojekte im gehobenen Mittelstand und Großkundensegment um.

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

Hier noch einmal die Daten:

SharePoint UserGroup Köln

Termin: Donnerstag, 13.09.2018 – 18.00 Uhr

Ort: novaCapta Software & Consulting, Im Mediapark 5C, 50670 Köln

Parken: Parkplätze stehen in der Tiefgarage im Mediapark zur Verfügung, bitte in der Zentralgarage oder in der Garage Mediapark 5 parken.

Eine ausführliche Anfahrtsbeschreibung findet sich hier!

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

Ansprechpartner:
Andrej Doms
Tel. 0151 58 22 72 38

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 12. November begrüßen zu dürfen.

Mit freundlichen Grüßen

Andrej Doms und das UserGroup Team

16. Treffen der UserGroup Köln

Hallo Liebe Teilnehmer,

ich möchte Sie heute herzlich zum 16. Treffen der SharePoint UserGroup Köln einladen. Nach einer projektbedingten Pause geht es endlich mit der SPUG Köln weiter. Wir treffen uns am 8. Mai im Mediapark in Köln.

Unser Programm dreht sich dieses Mal vollständig um das Thema Infrastructure as Code, wie man z.B. RollOuts oder Farmsetups effizient und flexibel gestalten kann und mittels Anlehnung an agile Methoden und Erfahrungen aus der Entwicklerwelt eine umfassende DevOps Kultur in der IT fördert. Unsere Sprecher sind diesmal:

Denis Buco, Microsoft Deutschland GmbH

Henning Eiben, busitec GmbH

Andrej Doms, novaCapta Software & Consulting

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

Hier noch einmal die Daten:

SharePoint UserGroup Köln

Termin: Dienstag, 08.05.2018 – 18.00 Uhr

Ort: novaCapta Software & Consulting, Im Mediapark 5C, 50670 Köln

Parken: Parkplätze stehen in der Tiefgarage im Mediapark zur Verfügung, bitte in der Zentralgarage oder in der Garage Mediapark 5 parken.

Eine ausführliche Anfahrtsbeschreibung findet sich hier!

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

Ansprechpartner:
Andrej Doms
Tel. 0151 58 22 72 38

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 8. Mai begrüßen zu dürfen.

Mit freundlichen Grüßen

Andrej Doms und das UserGroup Team

SharePoint, JavaScript und Promises

Für alle, die noch für On-Premises SharePoint Umgebung Lösungen auf Basis von JavaScript erstellen ist die JSOM (JavaScript Object Model) Bibliothek von SharePoint ein sehr guter Weg um mit SharePoint zu kommunizieren. Auch wenn viele Dinge auch per REST Interface zugreifbar sind, so sind die Möglichkeiten über JSOM doch deutlich umfangreicher.

Da die Kommunikation bei JSOM grundsätzlich asynchron abläuft, muss man an dieser Stelle immer sehr viel mit Callbacks arbeiten. Ein typischer Code um z.B. eine neue Liste anzulegen sieht dann etwa so aus:

var ctx = new SP.ClientContext();
var web = ctx.get_web();
var listCI = new SP.ListCreationInformation();
listCI.set_title("Meine Neue Liste");
list = web.get_lists().add(listCI);
ctx.load(list);
ctx.executeQuery(successCreatedList, errorCreatedList);

function successCreatedList(sender, eventArgs) { }
function errorCreatedList(sender, eventArgs) { }

Wenn nun nach dem erstellen der List in dieser List gleich Elemente erstellt werden müssen/sollen, dann muss diese Logik in der Funktion successCreatedList implementiert werden. Das sähe dann wie folgt aus:

function successCreatedList(sender, eventArgs) {
    var listItemCI = new SP.ListItemCreationInformation();
    var listItem = list.addItem(listItemCI);
    listItem.set_item("Title", "Mein neues Listenelement");
    listItem.Update();
    ctx.load(listItem);
    ctx.executeQuery(successCreatedItem, errorCreatedItem);
}

Man sieht also schon, dass hier schon wieder zwei Funktionen als Callback angegeben werden (müssen). Natürlich kann man die Funktionen auch inline definieren – das macht es aber nicht viel übersichtlicher. Dieses Beispiel komplett sieht dann so aus:

var ctx = new SP.ClientContext();
var web = ctx.get_web();
var listCI = new SP.ListCreationInformation();
listCI.set_title("Meine Neue Liste");
list = web.get_lists().add(listCI);
ctx.load(list);
ctx.executeQuery(
    function (sender, eventArgs) {
        var listItemCI = new SP.ListItemCreationInformation();
        var listItem = list.addItem(listItemCI);
        listItem.set_item("Title", "Mein neues Listenelement");
        listItem.Update();
        ctx.load(listItem);
        ctx.executeQuery(
            function (sender, eventArgs) {
                // do something after the item is created
            }
            , function (sender, eventArgs) {
                // error handling
            });
    }
    , function (sender, eventArgs) {
        // error handling
    });

Wie wäre es, wenn nun executeQuery ein Promise zurückliefern würde, anstatt dass man Callbacks angeben muss?

var ctx = new SP.ClientContext();
var web = ctx.get_web();
var listCI = new SP.ListCreationInformation();
listCI.set_title("Meine Neue Liste");
list = web.get_lists().add(listCI);
ctx.load(list);
ctx.executeQueryDeferred()
    .then(function (eventArgs) {
        var listItemCI = new SP.ListItemCreationInformation();
        var listItem = list.addItem(listItemCI);
        listItem.set_item("Title", "Mein neues Listenelement");
        listItem.Update();
        ctx.load(listItem);
        return ctx.executeQueryDeferred();
    })
    .then(function (eventArgs) {
        // do something after the item is created
    })
    .fail(function (eventArgs) {
        // catch any errors along the way
    });

Das sieht schon deutlich übersichtlicher aus, da sich die einzelnen Promises auch hintereinander hängen lassen.

Um dem SharePoint ClientContext Promises beizubringen ist einfach nur eine kleine Erweiterung notwendig:

SP.ClientContext.prototype.executeQueryDeferred = function () {
    var deferred = Q.defer();
    this.executeQueryAsync(
        function (sender, args) { deferred.resolve(args); }
        , function (sender, args) { deferred.reject(args); });
    return deferred.promise;
}; 

In diesem Fall benutze ich die JavaScript Bibliothek Q für die Bereitstellung von Promises, hier wäre aber auch anderen Promises-Implementierungen denkbar.

Damit das ganze auch in TypeScript nutzbar ist, hier einmal die Erweiterung in TypeScript:

export interface ClientContext {
    executeQueryDeferred(): Q.Promise<SP.ClientRequestSucceededEventArgs>
}

SP.SOD.executeOrDelayUntilScriptLoaded(function () {
    SP.ClientContext.prototype.executeQueryDeferred = function (): Q.Promise<SP.ClientRequestSucceededEventArgs> {
        let deferred = Q.defer<SP.ClientRequestEventArgs>();
        this.executeQueryAsync(
            function (sender: any, args: SP.ClientRequestSucceededEventArgs) { deferred.resolve(args); },
            function (sender: any, args: SP.ClientRequestFailedEventArgs) { deferred.reject(args) }
        );
        return deferred.promise;
    }
}, "sp.js");

Zudem ist die Erweiterung noch in einen Script-OnDemand-Block eingebettet, um Sicherzustellen, dass es das Objekt ClientContext auch bereits gibt.