Verknüpfte Datenquellen in SharePoint 2013

Verknüpfte Datenquellen kennt man oft nur aus der Datenbankwelt. Sie können jedoch auch direkt im SharePoint Server genutzt werden. Verknüpfte Datenquellen bieten dabei einige Vorteile. So tragen sie zum Beispiel zur Übersichtlichkeit in den einzelnen SharePoint-Listen bei. Für den Anwender wird eine zusammengefasste Ansicht über alle erzeugt.

Zur Erstellung einer verknüpften Datenquelle mittels dieses Beitrags benötigt man, zusätzlich zum SharePoint inklusive administrativen Recht auf der SiteCollection, einen SharePoint Designer. Ausgangspunkt sind zwei benutzerdefinierte SharePoint-Listen, eine welche den Kundennamen und die Bestellnummer beinhalten, eine andere mit den einzelnen Positionen der Bestellung.

Dazu legt man erst eine Liste Kundenbestellungen mit den Feldern Kundenname und Bestellnummer. Zum Test sind die Datentypen dabei irrelevant.(Eine Textzeile gewählt). Die zweite Liste nennt man Bestellungen. Diese beinhaltet die Felder Bestellnummer, Position und Bezeichnung. Auch hier ist der Datentyp irrelevant. Abschließend ändert man noch die Titelspalte in nicht erforderlich und achte darauf, dass in der Liste Bestellungen die Bestellnummer nicht eindeutig sein darf.

Als nächstes öffnet man im SharePoint Designer die SiteCollection, wo diese Listen erstellt wurden und erstellt unter Data Source eine neue Linked Data Source.

Verknüpfte Datenquelle

Im sich öffnenden Fenster wählte man anschließend Configure Linked Source… und fügt die Listen Kundenbestellungen und Bestellungen zu den Selected Data Sources hinzu.

verknüpfte Datenquelle

Anschließend klickt man auf Next und wählt den Punkt „Join the contents of the data sources…

 verknüpfte Datenquelle

und bestätigt das ganze mit Finish.

Anschließend kann man hinter der jeweiligen Liste mittels Edit noch Einstellungen für die Sortierung, Filterung und Anzeige vornehmen.

verknüpfte Datenquelle

verknüpfte Datenquelle

 Damit wäre die Verknüpfung der Datenquellen abgeschlossen. Nachfolgend kann man sich um das Anzeigen kümmern. Dazu nimmt man entweder eine vorhanden Seite oder erstellt sich im SharePoint Designer eine neu. Diese öffnet man anschließend im SharePoint Designer im erweiterten Modus

verknüpfte Datenquellen

 

und setzt den Courser zwischen den <form Tag. Nun kann man unter der Registrierkarte Insert eine neue Data View für seine verknüpfte Datenquelle einfügen.

vd8

 

Anschließend markiert man den gesamten eingefügten Bereich, wählt im rechten Bereich unter Data Source Details die entsprechenden Felder der übergeordneten Liste aus und fügt diese über Insert Selected Fields as Multiple Item View ein.

vd9

 

Als hilfreich dabei erweist sich, wenn schon ein Dummy Datensatz in den Listen vorhanden ist. Außerdem ist zu beachten, dass im Designer Funktionen manchmal ausgegraut sind, wenn das Dokument noch nicht gespeichert wurde.

Damit bekommt man nun beim Aufruf der Seite eine Datenansicht der ersten Liste.

vd10

Als nächstes sucht man im Quellcode der Seite im SharePoint Designer den Tag wo die Daten des zu verknüpfenden Feldes geladen werden. In dem Fall <xsl:value-of select=“@Bestellnummer“/> . Nun setzt man dahinter den Courser, wählt diesmal die Felder der zweiten Liste aus und fügt dies mit Insert Selected Fields as Joined Subview ein.

vd11

Dabei muss nun die zu verknüpfende Spalte angegeben werden.

vd12

Nach anschließendem Speichern und aufrufen im Browser bekommt man nachfolgendes Ergebnis.

vd13

Anschließend sollte die Ansicht dann mittels CSS formatiert und Links zu den einzelnen Objekten eingefügt werden. Der Einfachheit halber wurden hier nur Rahmen hinzugefügt.

Verknüpfte Daten aus zwei SharePoint-Listen

Lizenzschlüssel in c-sharp

Immer wieder kommt die Frage auf wie man Lizenzschlüssel für das eigene Programm in c# erstellt. Auf diese Frage wird im nachfolgenden Beispielhaft eingehen.

Als erstes sollte man sich über die Anforderungen Gedanken machen.

  • Entwicklung eines Algorithmus für den Lizenzschlüssel. Das hat den Vorteil, dass jeder nach diesem erstellte Schlüssel als gültig anerkannt wird. Eine Anpassung des Programms für weitere Lizenzschlüssel entfällt.
  • Lizenzschlüssel nach immer gleichen Muster erzeugen

In diesem Fall wird der Schlüssel nach folgendem Muster generiert.

  1. erzeuge eine Zahl zwischen 1000 und 9999 per Zufall das wird der erster Block

    generierung erster Block

  2. Bilde Quersumme des ersten Blocksquersumme bilden
  3. Fülle die Quersumme mit Zufallszahlen bis 4 Stellen auf das wird der zweite Block                zweiten Block bis 4 stellen auffüllen
  4. Addiere ersten Block mit seiner Quersumme und bilde daraus die Quersumme                   ersten block mit quersumme addieren und quersumme bilden
  5. Fülle diese Quersumme mit Zufallszahlen wie in Punkt 3 bis 4 Stellen auf das wird der dritte Block

Anschließen werden alle drei Blocke mit Bindestrichen verbunden, sodass sich für den Lizenzschlüssel nachfolgendes Muster ergibt.

xxxx-xxxx-xxxx

Im eigentlichen Programm kann dann geprüft werden, ob sich aus dem ersten Block mittels des Algorithmus die Anfangszahlen der beiden anderen Blöcke erzeugen lassen. Außerdem sollte mann natürlich die Länge und das Muster des Schlüssels überprüfen.

 

Achtung!!! Bitte haltet eure Algorithmen zur Generierung geheim und bedenkt das der in diesem Block verwendete nur als Denkanstoß zu werten ist und nicht für den Praxiseinsatz taugt.

 

Program Code zur Erstellung von Schlüsseln.

Auswertung Code zur Auswertung des eingegebenen Schlüssels.

Suchhostcontroller-Dienst

Suchhostcontroller-Dienst startet nicht richtig

Oft passiert es, das der Suchhostcontroller-Dienst in der Zentraladministration dauerhaft auf „wird gestartet“ steht. Dieses Problem habe ich schon des öfteren bei SharePoint 2013 Farmen erlebt. Der Fehler im Suchhostcontroller-Dienst lässt sich auch nicht über einen Neustart des Servers beheben. Außerdem gibt es keine Möglichkeit diesen über die Zentraladministration wieder in einen definierten Zustand zu bringen. Einzig der Einsatz der PowerShell schaft hier Abhilfe.

Als erstes startet man die PowerShell als Farm-Administrator. Anschließend gibt man den Befehl

add-pssnapin microsoft.sharepoint.powershell

ein, um das PowerShell Snapin für SharePoint zu laden. Danach holt man sich den Dienst, welcher im „wird gestartet“ festhängt. Dies erfolgt mittels

$service = get-spserviceinstance | where {$_.Status -like „Provisioning“}

Nun kann der Dienst mit

$service.unprovision()

beendet und mit

$service.provision()

neu gestartet werden.

 

Eine Übersicht findet man unter Microsoft SPServiceInstance Referenz

SharePoint Webveröffentlichung mit Sophos UTM

In Zeiten wo das Microsoft Forefront Threat Management Gateway als Auslaufmodell betrachtet wird und die Preise für ein Microsoft Unified Access Gateway gegen eine SharePointveröffentlichung über dieses sprechen, ist es wichtig sich nach anderen Anbietern um zusehen. Mit der Beta 9.2 des Sophos UTM ist ein kleiner Schritt in die richtige Richtung unternommen wurden.

1. Vorraussetzungen

  • Funktionierende SharePoint Farm inklusive mindestens einer Webanwendung mit Sitecollection
  • Authentication Provider für Webanwendung steht auf NTLM und Basisauthentifizierung ist angehakt
  • Active Directory inkl. interner Domain
  • SharePoint Server ist teil der Domain
  • Installiertes und konfiguriertes Sophos UTM 9.2 mit mindestens zwei Netzkarten für das Domain-Netzwerk (bei mir 192.168.8….) und den externen Zugriff (bei mir 192.168.1….)
  • Eingerichteter Authentifizierungsserver im UTM inkl. SSO

2. Durchführung im Sophos UTM Webinterface

Als erstes erstellt man unter dem Punkt „Webserver Protection“ –> „Web Application Firewall“  –> Registerkarte „Echte Webserver“ einen neuen echten Webserver.

Echter Webserver

Dabei ist zu beachten, dass unter Host der SharePoint Server angelegt und eingetragen wird . Auch sollte man angeben über welche Schnittstelle der Host erreichbar ist. In unserem Fall ist das die interne (das Domain-Netzwerk).

SharePoint Host

 

Im zweiten Schritt legt man unter „Webserver Protection“ –> „Umkehrauthentifizierung“ –> Registerkarte  „Profile“ ein neues Authentifizierungsprofil an.

Umkehrauthentifizierung

Dabei ist zu beachten, dass unter Frontend-Bereich die externe IP bzw. die externe URL angegeben wird. Auch sollten unter Benutzer/Gruppen die Active Directory Users stehen, damit gegen das AD authentifiziert werden kann.

 Im dritten Schritt richtet man nun unter „Webserver Protection“ –> „Web Application Firewall“  –> Registerkarte „Virtuelle Webserver“ einen neuen virtuellen Webserver.

Virtueller Webserver

Dabei werden die externe IP bzw. Domain angegeben und der echte Webserver zugeordnet. Außerdem sollte man bei den Firewall-Profil aufpassen und eventuell ein neues Anlegen, da die Standardprofile von Sophos UTM mit SharePoint Probleme machen.

Im letzen Schritt ordnet man unter „Webserver Protection“ –> „Web Application Firewall“  –> Registerkarte „Site-Path-Routing“ das erstellte Umkehrauthentifizierungsprofil zu.

Umkehrauthetifizierungsprofil

 

 

 

 

 

 

 

Nun wird beim Aufruf der externen IP bzw. Domain das Loginformular des Sophos UTM angezeigt.

Login Formular

 

Damit nun auch noch der Login am SharePoint klappt müssen noch zwei weitere Schritte durchgeführt werden.

Zu ersten muss die externe Domain bzw. IP in der SharePoint Zentraladministration unter den Alternativen Zugriffspfaden für die Webanwendung eingetragen werden.

Zum zweiten muss im IIS des SharePoint WebFrontend Servers für die genutzte Webanwendung die interne Domain als default Domain in der Standartauthentifizierung hinterlegt werden.

Nun klappt der Login am SharePoint über die externe IP bzw. Domain mit dem Nutzernamen ohne Domainprefix und Passwort.

Fehlende oder falsche alternative Zugriffspfade im SharePoint

Ein Problem was immer wieder zu beobachte ist, ist das Fehlen oder falsche Eintragen von alternativen Zugriffspfaden in der SharePoint Zentraladministration. Gerade bei der Umstellung von nicht SSL auf SSL verschlüsselte Anwendungen treten mitunter seltsame Phänomene auf. So kann es zu Beispiel passieren, dass obwohl die SharePoint Webseite sich noch aufrufen lässt, Links zu Bibliotheken oder Liste nicht mehr richtig arbeiten.  Dies äußert sich durch eine Fehlermeldung, dass die Liste oder Bibliothek gelöscht wurden wäre, obwohl sie nicht gelöscht wurde.  Nach erfolgreichen Eintragen der richtigen alternativen Zugriffspfade ist das Problem aber schnell behoben.

Windows XP das Ende ist nah

Windows XP und Office 2003 das Ende kommt!

Seit einigen Jahren kocht das Thema Windows XP und Office 2003 immer wieder hoch. Nun ist es soweit, zum 8. April 2014 wird auch der Extended Support für beide Produkte eingestellt. Nutzer der Produkte sollte bis dahin auf eine aktuellere Version der Programme migrieren. Dabei sollte man jedoch die von Microsoft angestrebten Supportzeiträume beachten

  • Windows Vista bis ca. 2016
  • Windows 7 bis ca. 2020
  • Windows 8 bis ca. 2023

http://www.microsoft.com/de-de/windows/xp/default.aspx

Exchange 2013 Kalender in SharePoint 2013 anzeigen

Exchange 2013 Kalender anzeigen

Der nachfolgende Artikel beschäftigt sich mit der Erstellung eines Webparts zur Anzeige von Ressourcenkalendern aus dem Exchange 2013 auf einer SharePointwebseite.

Voraussetzung:

Funktionsumfang:

  • Anzeige von Exchange 2013 Kalender im SharePoint
  • Ansicht als Liste oder/und Kalender ist frei wählbar
  • Zugriffskonto auf den Exchange 2013 Kalender ist frei wählbar
  • Verwaltung mittels Webparteigenschaften

Screenshots:

Exchange 2013 Kalender Webparteigenschaften

Webparteigenschaften

 

Kalender - Ansicht

Kalendernsicht des Ressourcenkalender im SharePoint

Listenansicht

Listenansicht des Ressourcenkalender im SharePoint

 

Anleitung:

  1. Als ersten Schritt erstell man ein leeres SharePoint 2013 Projekt in VisualStudio. Dabei ist zu beachten, dass dieses Projekt als Farmlösung bereitgestellt wird. Außerdem muss der Link zu einer SharePoint 2013 Testumgebung angegeben werden.
  2. Diesem Projekt fügt man im zweiten Schritt ein neues Element (Webpart) hinzu.
  3. Anschließend öffnet man die .cs Datei des Webparts
  4. Code einfügen (bitte dem Projekt entnehmen): Exchange-Calendar
  5. Bereitstellen

Hinweis: Nutzungsrecht: frei und kann uneingeschränkt genutzt werden.

Backup-SPSite mit Powershell

Das nachfolgende Script erstellt eine SiteBackup (Backup-SPSite) einer SharePoint SiteCollection abwechselnd in zwei verschiedene Dateien. Dabei wird immer die Datei neu geschrieben welche älter ist.

Backup-SPSite

spSite-Full.ps1

Aufrufen kann man das Script dann mittels PowerShell

 

.\script.ps1 -WebApplication Link zur Webapplikation -source Pfad -file1 Datei1 -file2 Datei2

Abschließen kann der Befehl  in der Aufgabenplanung automatisiert werden.

Automatisches Löschen von Dateien nach X Wochen

In manchen Fällen ist es notwendig, dass Dateien nach Erreichen eines bestimmten Alters gelöscht werden. Dazu bietet Windows verschiedene Möglichkeiten. Eine davon wird nachfolgend vorgestellt.

Für das automatische Löschen verschiebt man erst die gewünschten Dateien mittels robocopy in der PowerShell.

robocopy Quelle Ziel /E /R:1 /W:20 /MOV /MINAGE:20
 

Dabei steht “ /E“ dafür, dass alle Unterverzeichnisse mit berücksichtigt werden.

Die Option „/R:1″ steht für die Wiederholung der Versuche beim Scheitern des Kopiervorganges.

Die Option „/W:20“ steht für die Wartezeit, welche beim Auftreten eines Fehlers eingehalten wird.

/MOV“ verschiebt die Dateien von der Quelle zum Ziel.

/MINAGE:20“ bedeutet, dass nur Dateien berücksichtigt werden, welche älter als 20 Tage sind.

Anschließend löscht man das Zielverzeichnis oder leert es.

rd /s /q Ziel

 oder

Remove-Item Ziel\* -Recurse

in der PowerShell.

 

 

 

DisableLoopBackCheck SharePoint

Mittels DisableLoopBackCheck ist es möglich die SharePoint gehosteten Seiten auch von dem Host selbst zu erreichen.

Hierzu muss in der Registry ein neuer Eintrag erstellt werden.

Das kann entweder mittels der PowerShell oder native mittels des Registryeditors erfolgen.

Bei der ersten Methode wird in der PowerShell nachfolgender Befehl ausgeführt:

New-ItemProperty HKLM:\System\CurrentControlSet\Control\Lsa -Name „DisableLoopbackCheck“ -value „1“ -PropertyType dword

Für die zweite Methode öffnet man als erstes den Registryeditor. Das erfolgt über das Anklicken des

Start-Buttons

und anschließende Eingabe von

regedit

 Anschließend navigiert man im linken Baum zum Ordner

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

und erstellt dort ein neues

dword32

welches

DisableLoopBackCheck

heißt und als

value=1

als Wert besitzt.

Wichtig!!! Der LoopBackCheck verhindert DoS Attacken auf den Server. Deshalb ist es wichtig diese Funktion nur auf einem Testsystem zu deaktivieren!

 

Als Alternative in Produktivsystemen sollte man BackConnectionHostNames nutzen.

New-ItemProperty HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0 -Name “BackConnectionHostNames” -value “HostHeader” -PropertyType multivalue