<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SharePoint Advent</title>
	<atom:link href="http://sharepointadvent.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://sharepointadvent.de</link>
	<description>MVPs im Weihnachtsfieber</description>
	<lastBuildDate>Wed, 04 Jan 2012 14:31:54 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>SharePoint Adventskalender 2011 &#8211; Die Gewinner</title>
		<link>http://sharepointadvent.de/2012/01/04/sharepoint-adventskalender-2011-die-gewinner/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sharepoint-adventskalender-2011-die-gewinner</link>
		<comments>http://sharepointadvent.de/2012/01/04/sharepoint-adventskalender-2011-die-gewinner/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 14:31:15 +0000</pubDate>
		<dc:creator>Thorsten Hans</dc:creator>
				<category><![CDATA[Gewinnspiel]]></category>
		<category><![CDATA[Thorsten Hans]]></category>

		<guid isPermaLink="false">http://sharepointadvent.de/2012/01/04/sharepoint-adventskalender-2011-die-gewinner/</guid>
		<description><![CDATA[&#160; Unter den 45 gültigen Einsendungen für das Gewinnspiel des SharePoint Adventskalenders 2011 wurden folgende Gewinner ermittelt. (Die Namen wurden entsprechend eurer Kommentare auf http://www.SharePointAdvent.de verwendet) &#160; Jeweils eine Microsoft Touch Maus (gespendet von Microsoft TechNet Schweiz) gewinnen Stefan Bauer, Christian, Marek Czarzbon, Michael Denzler, Konstantin Denerz, Schnella, Daniel, Thomas Tuttenuj, Michi Hirczy, Lars Natus [...]]]></description>
				<content:encoded><![CDATA[<p>&#160;</p>
<p><a href="http://www.SharePointAdvent.de" target="_blank"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;float: right;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" alt="SPAdvent" align="right" src="http://sharepointadvent.de/files/2012/01/SPAdvent.png" width="108" height="86" /></a>Unter den 45 gültigen Einsendungen für das Gewinnspiel des SharePoint Adventskalenders 2011 wurden folgende Gewinner ermittelt. (Die Namen wurden entsprechend eurer Kommentare auf <a href="http://www.SharePointAdvent.de">http://www.SharePointAdvent.de</a> verwendet)</p>
<p>&#160;</p>
<p>Jeweils eine <strong>Microsoft Touch Maus</strong> (gespendet von Microsoft TechNet Schweiz) gewinnen</p>
<ul>
<li>Stefan Bauer, Christian, Marek Czarzbon, Michael Denzler, Konstantin Denerz, Schnella, </li>
<li>Daniel, Thomas Tuttenuj, Michi Hirczy, Lars Natus </li>
</ul>
<p>&#160;</p>
<p>1x <b>Visual Studio Lightswitch</b> (gespendet von der .NET UserGroup Saar) hat Ueli Kuratli gewonnen.</p>
<p>&#160;</p>
<p>1x <b>Microsoft LifeCam Studio</b> (gespendet von Experts Inside) hat Patrick Carl gewonnen</p>
<p>&#160;</p>
<p>1x <b>Eintrittskarte für die ShareConf 2012</b> (gespendet von der HLMC) hat Michael Mamerow gewonnen</p>
<p>&#160;</p>
<p>1x <b>Nokia Lumia 800</b> (gespendet von AvePoint) hat Christian Dyck gewonnen</p>
<p>&#160;</p>
<p>Der Hauptpreis (1 <b>ExoPC</b> gespendet von Intel) geht an <b><i>Gerhard Berthold</i>.</b></p>
<p>&#160;</p>
<p>Alle Gewinner werden heute per Mail angeschrieben. Und im Anschluss daran werden die Gewinne dementsprechend von uns versendet. Vorab schon mal viel Spaß mit euren Gewinnen.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>Thorsten Hans</p>
<p><i>Allen Teilnehmer die leider nicht unter den Gewinnern waren, dennoch viele Dank für eure Beiträge. Eventuell wird es ja beim Adventskalender 2012 hinhauen.</i></p>
]]></content:encoded>
			<wfw:commentRss>http://sharepointadvent.de/2012/01/04/sharepoint-adventskalender-2011-die-gewinner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Frohe Weihnachten &#8211; das letzte Türchen geht auf</title>
		<link>http://sharepointadvent.de/2011/12/24/frohe-weihnachten-das-letzte-tuerchen-geht-auf/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=frohe-weihnachten-das-letzte-tuerchen-geht-auf</link>
		<comments>http://sharepointadvent.de/2011/12/24/frohe-weihnachten-das-letzte-tuerchen-geht-auf/#comments</comments>
		<pubDate>Sat, 24 Dec 2011 07:00:44 +0000</pubDate>
		<dc:creator>Michael Greth</dc:creator>
				<category><![CDATA[Michael Greth]]></category>

		<guid isPermaLink="false">http://www.sharepointtoolbox.de/advent/?p=329</guid>
		<description><![CDATA[Das letzte Türchen geht auf und der SharePointAdvent neigt sich dem Ende zu Heute natürlich kein SharePoint &#8211; es ist Weihnachten ! Allen, die am SharePointAdvent teilgenommen haben, ein herzliches Dankeschön und frohe Feiertage. Vielen Dank auch an die Sponsoren des Gewinnspiels, wir verlosen die Gewinne Anfang 2012.]]></description>
				<content:encoded><![CDATA[<p>Das letzte Türchen geht auf und der SharePointAdvent neigt sich dem Ende zu</p>
<p>Heute natürlich kein SharePoint &#8211; es ist Weihnachten ! </p>
<p>Allen, die am SharePointAdvent teilgenommen haben, ein herzliches Dankeschön und frohe Feiertage. Vielen Dank auch an die Sponsoren des Gewinnspiels, wir verlosen die Gewinne Anfang 2012.</p>
<div class='embed-vimeo' style='text-align:center;'><iframe src='http://player.vimeo.com/video/2400199' width='400' height='300' frameborder='0'></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://sharepointadvent.de/2011/12/24/frohe-weihnachten-das-letzte-tuerchen-geht-auf/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PS Script für die Usererstellung in SharePoint Demo Umgebungen</title>
		<link>http://sharepointadvent.de/2011/12/23/ps-script-fuer-die-usererstellung-in-demo-umgebungen-fuer-sharepoint-user-profil-import/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ps-script-fuer-die-usererstellung-in-demo-umgebungen-fuer-sharepoint-user-profil-import</link>
		<comments>http://sharepointadvent.de/2011/12/23/ps-script-fuer-die-usererstellung-in-demo-umgebungen-fuer-sharepoint-user-profil-import/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 23:01:55 +0000</pubDate>
		<dc:creator>Samuel Zürcher</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.sharepointtoolbox.de/advent/?p=275</guid>
		<description><![CDATA[Beinahe ist Weihnachten, da dachte ich, ich könnte euch was unter den Weihnachtsbaum legen, das mri selbst viel gebracht hat. Wenn man hie und da ein Demoszenario aufsetzt wie wohl wir aller hier, dann wäre es ja schön, auch ein paar Personen mit im AD zu  haben, um auch den Profilimport zu testen und den [...]]]></description>
				<content:encoded><![CDATA[<p>Beinahe ist Weihnachten, da dachte ich, ich könnte euch was unter den Weihnachtsbaum legen, das mri selbst viel gebracht hat.</p>
<p>Wenn man hie und da ein Demoszenario aufsetzt wie wohl wir aller hier, dann wäre es ja schön, auch ein paar Personen mit im AD zu  haben, um auch den Profilimport zu testen und den Organisational Browser zeigen zu können. Aus diesem Grund habe ich ein Script gesucht, der mir User im AD anlegt. Ich habe Teile gefunden und den Script vervollständigt. Zusätzlich habe ich euch ein Excel mit Userdaten, die ihr verwenden könnt.</p>
<p>Vorgehen:</p>
<ol>
<li>Eine OU &#8220;Employees&#8221; anlegen</li>
<li>den roten Teil im Script anpassen</li>
<li>Script laufen lassen</li>
<li>Vorgesetzte zuordnen (sorry, das hab ich nicht auch noch gemacht, so könnt ihr das CSV so umgestaltenbzw. erweitern wie ihr wollt)</li>
</ol>
<p><strong><span style="text-decoration: underline">Hier der Script:</span></strong></p>
<p>$domain = (get-addomain).distinguishedname<br />
$path = &#8220;OU=Employees,$domain&#8221;<br />
$employees = Get-ADObject -Filter {distinguishedname -eq $path}</p>
<p>$users = import-csv -Delimiter &#8220;;&#8221; -Path &#8220;C:\Scripts\usersToBeCreated.csv&#8221;<br />
$ldappath = &#8220;<a href="//$path">LDAP://$path</a>&#8221;<br />
$container = [ADSI] $ldappath<br />
$users | foreach {<br />
$first = $_.FirstName<br />
$last = $_.LastName<br />
$phone=$_.Phone<br />
$mobile=$_.Mobile<br />
$office=$_.Office<br />
$job=$_.Job<br />
$username = &#8220;$first&#8221; + &#8220;.&#8221; + &#8220;$last&#8221;<br />
$email = &#8220;$username&#8221; + &#8220;@<strong><span style="color: #ff0000">szu.local</span></strong>&#8221;<br />
$newUser = $container.Create(&#8220;User&#8221;, &#8220;cn=&#8221; + &#8220;$first&#8221; + &#8221; &#8221; + &#8220;$last&#8221;)<br />
$newUser.Put(&#8220;sAMAccountName&#8221;, $username)<br />
$newUser.Put(&#8220;userPrincipalName&#8221;,&#8221;$username&#8221; + &#8220;@szu.local&#8221;)<br />
$newUser.Put(&#8220;givenname&#8221;,$first)<br />
$newUser.Put(&#8220;sn&#8221;,$last)<br />
$newUser.Put(&#8220;mail&#8221;,$email)<br />
$newUser.Put(&#8220;description&#8221;,&#8221;Experts Inside User&#8221;)<br />
$newUser.Put(&#8220;co&#8221;,&#8221;Switzerland&#8221;)<br />
$newUser.Put(&#8220;company&#8221;,&#8221;Experts Inside GmbH&#8221;)<br />
$newUser.Put(&#8220;countryCode&#8221;,756)<br />
$newUser.Put(&#8220;displayName&#8221;,&#8221;$first&#8221; + &#8221; &#8221; + &#8220;$last&#8221;)<br />
$newUser.Put(&#8220;telephoneNumber&#8221;,&#8221;$phone&#8221;)<br />
$newUser.Put(&#8220;l&#8221;,&#8221;Wil&#8221;)<br />
$newUser.Put(&#8220;mobile&#8221;,&#8221;$mobile&#8221;)<br />
$newUser.Put(&#8220;physicalDeliveryOfficeName&#8221;,&#8221;$office&#8221;)<br />
$newUser.Put(&#8220;postalCode&#8221;,&#8221;9500&#8243;)<br />
$newUser.Put(&#8220;st&#8221;,&#8221;SG&#8221;)<br />
$newUser.Put(&#8220;streetAddress&#8221;,&#8221;Alleestrasse 4&#8243;)<br />
$newUser.Put(&#8220;title&#8221;,&#8221;$job&#8221;)<br />
$newUser.SetInfo()<br />
$newUser.psbase.InvokeSet(&#8216;AccountDisabled&#8217;, $false)<br />
$newUser.SetInfo()<br />
$newUser.SetPassword(&#8220;SpAdvent2011&#8243;)<br />
}</p>
<p><strong><span style="text-decoration: underline">Dazu zugehörige CSV:</span></strong></p>
<p><a href="http://www.sharepointcommunity.ch/tt/Tools/Scripts/usersToBeCreated.csv">DOWNLOAD</a></p>
<p>So long, Samuel</p>
]]></content:encoded>
			<wfw:commentRss>http://sharepointadvent.de/2011/12/23/ps-script-fuer-die-usererstellung-in-demo-umgebungen-fuer-sharepoint-user-profil-import/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Entwicklung mit SPServices</title>
		<link>http://sharepointadvent.de/2011/12/22/jquery-meets-sharepoint/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jquery-meets-sharepoint</link>
		<comments>http://sharepointadvent.de/2011/12/22/jquery-meets-sharepoint/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 23:01:00 +0000</pubDate>
		<dc:creator>Thorsten Hans</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[Thorsten Hans]]></category>

		<guid isPermaLink="false">http://sharepointadvent.de/2011/12/10/jquery-meets-sharepoint/</guid>
		<description><![CDATA[In meinem letzten Post für den SharePoint Adventskalender 2011 möchte ich ein kleines Schmuckstück in der SharePoint Welt vorstellen. Unser amerikanischer SharePoint MVP Kollege Marc D Anderson entwickelt seit August 2009 kontinuierlich an SPServices. SPServices ist ein jQuery Plugin. Den größten Bestandteil von SPServices stellen die Wrapper für die SharePoint ASMX Webservices dar. Mit diesen [...]]]></description>
				<content:encoded><![CDATA[<p>In meinem letzten Post für den SharePoint Adventskalender 2011 möchte ich ein kleines Schmuckstück in der SharePoint Welt vorstellen. <a href="http://sharepointadvent.de/files/2011/12/clip_image0022.jpg"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;float: right;border-top: 0px;border-right: 0px;padding-top: 0px" border="0" hspace="12" alt="clip_image002" align="right" src="http://sharepointadvent.de/files/2011/12/clip_image002_thumb.jpg" width="240" height="65" /></a>Unser amerikanischer SharePoint MVP Kollege <a href="http://sympmarc.com/" target="_blank">Marc D Anderson</a> entwickelt seit August 2009 kontinuierlich an <a href="http://spservices.codeplex.com/" target="_blank">SPServices</a>. </p>
<p>SPServices ist ein <a href="http://www.jQuery.com/" target="_blank">jQuery</a> Plugin. Den größten Bestandteil von SPServices stellen die Wrapper für die SharePoint ASMX Webservices dar. Mit diesen Wrappern sind Aufrufe für die meisten in SharePoint 2007 und SharePoint 2010 vorhandenen. Hier ein Auszug der aktuell implementierten Methoden. Die gesamte Liste findet ihr in der <a href="http://spservices.codeplex.com/wikipage?title=$().SPServices&amp;referringTitle=Documentation" target="_blank">Doku auf CodePlex</a>.</p>
<p><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;float: none;margin-left: auto;border-top: 0px;margin-right: auto;border-right: 0px;padding-top: 0px" border="0" alt="clip_image003" src="http://sharepointadvent.de/files/2011/12/clip_image0033.png" width="627" height="420" /></p>
<p>Die SharePoint ASMX-WebServices werden auch in SharePoint 2010 noch sehr häufig verwendet. Unter anderem werden die Attachments von ListItems über die <b>GetAttachmentCollection </b>Methode geladen. Das neue Client Object Model (CSOM) stellt nämlich keinerlei Möglichkeit bereit Anhänge von ListItems zu laden. </p>
<p>Ohne SPServices müssten wir nun an dieser Stelle die SOAP Message erstellen, damit der WebService die Attachments des gewünschten ListItems zurückgeben kann. Doch Marc’s SPSerives nimmt genau diese Arbeit ab.</p>
<p>&#160;</p>
<p>Um SPServices in SharePoint nutzen zu können muss zunächst jQuery in SharePoint geladen werden. Christian hat in seinem Eintrag ja bereits beschrieben wie dies gemacht wird. Darüber hinaus muss man nun noch SPServices selbst in SharePoint integrieren. Das Laden von SPService kann auf die gleiche Art erreicht werden wie bei jQuery.</p>
<p>In meinem Beispiel wird die Lösung auf einem OnPremise SharePoint ausgeführt, daher können beide JavaScript Files auch bequem mittels DelegateControl in SharePoint integriert werden.</p>
<p>&#160;</p>
<p>Dazu muss man folgende Dinge durchführen</p>
<p>1. Ein neues SharePoint Projekt erstellt werden</p>
<p>2. Das Projekt muss als <b>Farm Solution</b> markiert werden</p>
<p>3. Die jQuery und SPSerivces Source Files müssen in einem Mapped Folder auf die SharePoint Farm bereitgestellt werden</p>
<p><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;float: none;margin-left: auto;border-top: 0px;margin-right: auto;border-right: 0px;padding-top: 0px" border="0" alt="clip_image004" src="http://sharepointadvent.de/files/2011/12/clip_image0042.png" width="302" height="257" /></p>
<p>4. Ein UserControl mit dem Namen ScriptInjector zum SharePoint Projekt hinzufügen</p>
<p>5. Beide JavaScript Files im UserControl laden</p>
<p><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;float: none;margin-left: auto;border-top: 0px;margin-right: auto;border-right: 0px;padding-top: 0px" border="0" alt="clip_image006" src="http://sharepointadvent.de/files/2011/12/clip_image0062.png" width="602" height="206" /></p>
<p>6. Ein neues <b>Empty Element </b>mit folgendem Inhalt hinzufügen </p>
<p><a href="http://sharepointadvent.de/files/2011/12/clip_image008.png"><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;float: none;margin-left: auto;border-top: 0px;margin-right: auto;border-right: 0px;padding-top: 0px" border="0" alt="clip_image008" src="http://sharepointadvent.de/files/2011/12/clip_image008_thumb.png" width="602" height="187" /></a></p>
<p>&#160;</p>
<p>Mit diesem Setup werden sowohl jQuery als auch SPServices auf allen SharePoint Seiten geladen. Somit kann auf jeder SharePoint Seite nun frei los-gescriptet werden. <img style="border-bottom-style: none;border-left-style: none;border-top-style: none;border-right-style: none" class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Open-mouthed smile" src="http://sharepointadvent.de/files/2011/12/wlEmoticon-openmouthedsmile.png" /></p>
<p>&#160;</p>
<p>Bevor ich zum eigentlichen Service Aufruf komme noch der Hinweis dass sämtliche WebService Methoden über die gleiche Syntax aufgerufen werden können. Somit kann man auch <b>noch</b> unbekannte Servicemethoden im Handumdrehen in die eigene Lösung einbauen und sicher verwenden.</p>
<p><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;float: none;margin-left: auto;border-top: 0px;margin-right: auto;border-right: 0px;padding-top: 0px" border="0" alt="SPServices_GetAttachments" src="http://sharepointadvent.de/files/2011/12/SPServices_GetAttachments.png" width="569" height="367" /></p>
<p>Der Beispielaufruf zeigt wie alle Attachments des Elementes mit der ID 3 aus der Kundenliste abgerufen und als Hyperlink zum Result-Div hinzugefügt werden. </p>
<p>Wichtig ist, dass die Antwort des ServiceCalls (immer noch XML) natürlich interpretiert werden muss. Sicherlich gibt es jede Menge Libraries oder Plugins für jQuery um das Finden der e ntsprechenden Bausteine sehr vereinfachen bzw. sehr beschleunigen, dennoch macht es meiner Meinung nach mehr Sinn die Anzahl an externen JavaScript Bibliotheken aufgrund der Ausführungs- und Ladegeschwindigkeit gering zu halten.</p>
<p>Neben den eben gezeigten WebService Wrappern stellen die SPServices noch diverse Methoden bereit um die SharePoint Formulare etwas mehr aufzupeppen. </p>
<p>Aus den vorhandenen Methoden möchte ich die Methode <b>SPAutocomplete </b>vorstellen. Durch SPAutocomplete kann man an jedes InputField (<em>TextBox auf einer New- oder EditForm</em>) einen AutoComplete Mechanismus anhängen. Das Besondere daran ist, das SharePoint selbst als Datenquelle für das AutoComplete fungiert. Analog zu den ServiceWrappern ist auch dieser Aufruf spielend einfach. </p>
<p>&#160;</p>
<p><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;float: none;margin-left: auto;border-top: 0px;margin-right: auto;border-right: 0px;padding-top: 0px" border="0" alt="clip_image010" src="http://sharepointadvent.de/files/2011/12/clip_image0101.png" width="387" height="272" /></p>
<p>&#160;</p>
<p>Wie bereits bei den Services musste auch diesmal wieder die WebURL angegeben werden. Damit bei einer Vielzahl von Methodenaufrufen nicht jedesmal die WebURL angegeben werden muss, solltet ihr die SPServices Defaults verwenden. Hier könnt Ihr die WebURL vorbelegen, so dass diese von allen Calls wiederverwendet werden kann.</p>
<p><img style="border-bottom: 0px;border-left: 0px;padding-left: 0px;padding-right: 0px;float: none;margin-left: auto;border-top: 0px;margin-right: auto;border-right: 0px;padding-top: 0px" border="0" alt="clip_image011" src="http://sharepointadvent.de/files/2011/12/clip_image011.png" width="467" height="265" /></p>
<p>&#160;</p>
<h2>Ein Tipp aus der Praxis</h2>
<p>SPServices ist echt ein geniales kleines Framework, welches die Arbeit mit den SharePoint ASMX WebServices viel angenehmer macht. Doch richtig viel Spaß macht meiner Meinung nach erst die Kombination aus SPServices und <a href="http://jtemplates.tpython.com/" target="_blank">jTemplates</a>. jTemplates ist ein jQuery Plugin, welches dazu verwendet wird UI Templates zu definieren und diese mit Daten zu füllen. Mit der Kombination wird die clientseitige SharePoint Entwicklung noch mächtiger und schneller. Daher ist auch jTemplates auf jeden Fall einen Blick wert.</p>
<p>&#160;</p>
<p>Happy scripting,</p>
<p><em>Thorsten</em></p>
]]></content:encoded>
			<wfw:commentRss>http://sharepointadvent.de/2011/12/22/jquery-meets-sharepoint/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Vorgezogenes Weihnachtsgeschenk</title>
		<link>http://sharepointadvent.de/2011/12/21/vorgezogenes-weihnachtsgeschenk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=vorgezogenes-weihnachtsgeschenk</link>
		<comments>http://sharepointadvent.de/2011/12/21/vorgezogenes-weihnachtsgeschenk/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 23:00:00 +0000</pubDate>
		<dc:creator>Daniel Wessels</dc:creator>
				<category><![CDATA[Daniel Wessels]]></category>
		<category><![CDATA[Templates]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[SharePoint; Templates]]></category>

		<guid isPermaLink="false">http://sharepointadvent.de/?p=344</guid>
		<description><![CDATA[Hallo zusammen, der vierte Advent ist angebrochen, auch bei uns im Norden hat es schon den ersten Schnee gegeben (wenn auch nur kurz…aber mehr würde uns auch beunruhigen ) und ich habe meinen letzten post in diesem Adventskalender. Ich dachte, da wird es mal Zeit, schon mal ein kleines Vorab-Präsent zu veröffentlichen. Ich habe vor [...]]]></description>
				<content:encoded><![CDATA[<p>Hallo zusammen,</p>
<p>der vierte Advent ist angebrochen, auch bei uns im Norden hat es schon den ersten Schnee gegeben (wenn auch nur kurz…aber mehr würde uns auch beunruhigen <img style="border-bottom-style: none;border-left-style: none;border-top-style: none;border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://sharepointadvent.de/files/2011/12/wlEmoticon-smile.png" />) und ich habe meinen letzten post in diesem Adventskalender. <img style="border-bottom-style: none;border-left-style: none;border-top-style: none;border-right-style: none" class="wlEmoticon wlEmoticon-sadsmile" alt="Sad smile" src="http://sharepointadvent.de/files/2011/12/wlEmoticon-sadsmile.png" />    <br />Ich dachte, da wird es mal Zeit, schon mal ein kleines Vorab-Präsent zu veröffentlichen.</p>
<p>Ich habe vor einiger Zeit mal das Mitarbeiter-Training-Template aus den Fantastic 40-Templates auf Deutsch übersetzt und hatte es in dem Zusammenhang auch ein wenig erweitert (es gab da ein, zwei logische Fehler in den Workflows).   <br />Da dieses sich leider nicht ohne Probleme migrieren ließ, habe ich es nun noch einmal neu übersetzt: <a href="http://sharepointcommunity.de/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dwessels/0412.MitarbeiterTraining.zip" target="_blank">MitarbeiterTraining.zip</a>.    <br />Basis war hierfür die englische, migrierte Version von <a href="http://www.techsolutions.net/SharePointSolutions.aspx" rel="nofollow" target="_blank">TechSol</a> (Employee Training Scheduling and Materials).</p>
<p>Das Template ist Sandbox-fähig und muss somit in die Solution-Gallery geladen werden. Anschließend findet ihr unter euren deutschen Site-Templates eines mit dem Titel “Mitarbeiter Training”.</p>
<p>Ich wünsche euch mit dem Template viel Vergnügen, ein ruhiges und besinnliches Weihnachtsfest und alles Gute für das neue Jahr (es dürfte aus SharePoint-Sicht spannend werden).</p>
<p>Vorweihnachtliche Grüße,</p>
<p>&#160; Daniel</p>
]]></content:encoded>
			<wfw:commentRss>http://sharepointadvent.de/2011/12/21/vorgezogenes-weihnachtsgeschenk/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Limitationen bei der Verwendung von Claims based Authentication in SharePoint 2010</title>
		<link>http://sharepointadvent.de/2011/12/20/limitationen-bei-der-verwendung-von-claims-based-authentication-in-sharepoint-2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=limitationen-bei-der-verwendung-von-claims-based-authentication-in-sharepoint-2010</link>
		<comments>http://sharepointadvent.de/2011/12/20/limitationen-bei-der-verwendung-von-claims-based-authentication-in-sharepoint-2010/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 06:46:59 +0000</pubDate>
		<dc:creator>Christoph Müller</dc:creator>
				<category><![CDATA[Christoph Müller]]></category>
		<category><![CDATA[IT-Pro]]></category>

		<guid isPermaLink="false">http://www.sharepointtoolbox.de/advent/?p=334</guid>
		<description><![CDATA[Wie schon gebloggt kann man so einige SharePoint-Authentifizierungs-Szenarien mit Claims lösen. Wo Sonne ist, ist aber auch Schatten. In einem Projekt kam die Frage auf ob man alle Benutzer nur über Claims innerhalb SharePoint 2010 einbinden kann. Sprich keinen „User Profile Sync“ gegen ein Directory.  Und so machte ich machte mich auf die Suche nach [...]]]></description>
				<content:encoded><![CDATA[<p>Wie schon gebloggt kann man so einige SharePoint-Authentifizierungs-Szenarien mit Claims lösen. Wo Sonne ist, ist aber auch Schatten. In einem Projekt kam die Frage auf ob man alle Benutzer nur über Claims innerhalb SharePoint 2010 einbinden kann. Sprich keinen „User Profile Sync“ gegen ein Directory.  Und so machte ich machte mich auf die Suche nach den Limitationen. Hier meine Liste die vermutlich im Laufe der Zeit immer länger wird:</p>
<p><strong>Audiences</strong><br />
OOTB funktionieren die „Benutzer basierten“-Audiences nicht. Also das Szenario „Mitglieder dieser Gruppe können das sehen“ funktioniert ohne „Custome Code“ nicht.<br />
„Property-based“-Audiences funktionieren. Details dazu in diesem TechNet Blogpost:<a href="http://blogs.technet.com/b/speschka/archive/2010/06/12/using-audiences-with-claims-auth-sites-in-sharepoint-2010.aspx"> http://blogs.technet.com/b/speschka/archive/2010/06/12/using-audiences-with-claims-auth-sites-in-sharepoint-2010.aspx</a></p>
<p><strong>Excel Services</strong><br />
Die Excel Services benutzen normalerweise C2WTS (Claims to Windows Token Service). Es wird aber nichts andere konvertiert das nicht entweder „Windows Classic“ oder „Windows Tokens“ zu einer „Windows Identity“ gewandelt wird. Aus diesem Grund müssen externe Datenzugriffe oder  „unattended data refresh” über den Secure Store Service durchgeführt.</p>
<p><strong>Performance Point</strong><br />
Performance Point muss die „ Unattended Service Account”-Option im Zusammenhang mit “Secure Store Services” und Claims benutzen.</p>
<p><strong>SQL Server 2008 R2 Reporting Services Integration</strong><br />
Die SQL Reporting Services benötigen zwingend Windows Authentication. Es besteht keine Möglichkeit den C2WTS (Claims to Windows Token Service) zu benutzen.</p>
<p><strong>Visio Services</strong><br />
„Secure Store Service“ kann nur für das Darstellen von Objekten benutzt werden dessen Connection über ein ODC-File spezifiziert wurden.</p>
<p><strong>Project Server</strong><br />
Claims werden prinzipiell unterstützt. Jedoch benötigt die Migration mehr als nur „MigrateUser“ da der Project Server eine eigene Datenbank für die „User Logon Information“ unterhält.</p>
<p><strong>SharePoint Designer</strong><br />
Der „External Content Type Designer“ in SharePoint Designer 2010 kann keine „Claims aware WDSL endpoints“ ansprechen (<a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;982268">http://support.microsoft.com/default.aspx?scid=kb;EN-US;982268</a>).</p>
<p><strong>PowerPivot</strong><br />
Das Darstellen von Workbooks“ in PowerPivot arbeitet eigentlich wie erwartet, trotzdem unterstützt PowerPivot nur klassische Web Apps. Dies aus folgenden zwei Gründen:<br />
Um Daten von einer externen DB zu aktualisieren, benutzte Power Pivot die User Credentials die im Secure Store Service gespeichert sind. In einer claims-based Web App kann das “SharePoint binary API” mit einem “Windows Token” nicht angesprochen werden.<br />
Eingehende „Connection Request“ werden von den SharePoint Front End Servern nicht akzeptiert. Dies scheint ein Bug zu sein.</p>
<p>Dies ist meine aktuelle Sammlung. Gute Ausgangspunkte um nach Lösungen und Ideen zu suchen sind folgende Blogs:<br />
Share-n-dipity: <a href="http://blogs.technet.com/b/speschka/">http://blogs.technet.com/b/speschka/</a><br />
SharePoint Security: <a href="http://www.sharepointsecurity.com/category/sharepoint/claims-based-authentication//">http://www.sharepointsecurity.com/category/sharepoint/claims-based-authentication//</a><br />
Microsoft Whitepaper: <a href="http://technet.microsoft.com/de-de/library/hh487289.aspx">http://technet.microsoft.com/de-de/library/hh487289.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sharepointadvent.de/2011/12/20/limitationen-bei-der-verwendung-von-claims-based-authentication-in-sharepoint-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Office 365: in wenigen Klicks zur eigenen Website</title>
		<link>http://sharepointadvent.de/2011/12/19/office-365-in-wenigen-klicks-zur-eigenen-website/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=office-365-in-wenigen-klicks-zur-eigenen-website</link>
		<comments>http://sharepointadvent.de/2011/12/19/office-365-in-wenigen-klicks-zur-eigenen-website/#comments</comments>
		<pubDate>Sun, 18 Dec 2011 23:00:00 +0000</pubDate>
		<dc:creator>Martina Grom</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Martina Grom]]></category>
		<category><![CDATA[Office 365]]></category>
		<category><![CDATA[martina grom]]></category>
		<category><![CDATA[office365]]></category>

		<guid isPermaLink="false">http://sharepointadvent.de/2011/12/19/office-365-in-wenigen-klicks-zur-eigenen-website/</guid>
		<description><![CDATA[SharePoint Online beinhaltet neben der Intranetverfügbarkeit auch eine sogenannte Public Facing Website. Heute zeige ich, wie wir diese schnell zur persönlichen Website machen und uns unsere eigene SharePointAdvent Seite bauen – ohne Code, ohne CSS Anpassungen. Dazu gehen wir zuerst im Adminportal auf den Punkt Website bearbeiten: Nun landen wir zuerst im backend, wo wir [...]]]></description>
				<content:encoded><![CDATA[<p>SharePoint Online beinhaltet neben der Intranetverfügbarkeit auch eine sogenannte Public Facing Website. Heute zeige ich, wie wir diese schnell zur persönlichen Website machen und uns unsere eigene <a href="http://sharepointadvent.sharepoint.com?ocid=soc-n-at-loc--TI-MG&amp;WT.mc_id=soc-n-at-loc--TI-MG" target="_blank">SharePointAdvent Seite</a> bauen – ohne Code, ohne CSS Anpassungen.</p>
<p>Dazu gehen wir zuerst im Adminportal auf den Punkt Website bearbeiten:</p>
<p><a href="$image[4].png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://sharepointadvent.de/files/2011/12/image_thumb14.png" width="450" height="316" /></a></p>
<p>Nun landen wir zuerst im backend, wo wir die Seiten unserer Website sehen. Standardmäßig sind hier bereits Startseite, Wir über uns, Kontakt und Sitemap angelegt.</p>
<p><a href="$image[9].png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://sharepointadvent.de/files/2011/12/image_thumb15.png" width="450" height="220" /></a></p>
<p>Wenn wir die Startseite öffnen, sehen wir, dass es bereits vordefinierte Templates für die Public Facing Website gibt. Über einen Ribbon können wir die Seite verändern oder auch gleich Inhalte einfügen.</p>
<p><a href="$image[14].png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://sharepointadvent.de/files/2011/12/image_thumb16.png" width="450" height="287" /></a></p>
<p>Für unser SharePoint Advent Layout habe ich den Banner des Blogs bereits vorbereitet. Diesen Banner lade ich über den Punkt Text / Logo in die Website und ändere dann auch gleich den Text der Website.</p>
<p><a href="$image[19].png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://sharepointadvent.de/files/2011/12/image_thumb17.png" width="450" height="440" /></a></p>
<p>Als nächstes stelle ich das Farbschema um auf Pflaume:</p>
<p><a href="$image[24].png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://sharepointadvent.de/files/2011/12/image_thumb18.png" width="291" height="480" /></a></p>
<p>Dann wird noch die gewünschte Bannerpositionierung gewählt.</p>
<p><a href="$image[29].png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://sharepointadvent.de/files/2011/12/image_thumb19.png" width="445" height="480" /></a></p>
<p>Das im Design vorhandene Bild habe ich mit “kein Bild” aus unserem Layout entfernt.</p>
<p><a href="$image[34].png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://sharepointadvent.de/files/2011/12/image_thumb20.png" width="450" height="295" /></a></p>
<p>Nun fülle ich unsere Website noch mit ein bisschen Text und Bildern. Und schon ist die eigene Website fertig, anzusehen <a href="http://sharepointadvent.sharepoint.com?ocid=soc-n-at-loc--TI-MG&amp;WT.mc_id=soc-n-at-loc--TI-MG" target="_blank">hier</a>.</p>
<p><a href="$image[39].png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="image" src="http://sharepointadvent.de/files/2011/12/image_thumb21.png" width="450" height="311" /></a></p>
<div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px">
</div>
]]></content:encoded>
			<wfw:commentRss>http://sharepointadvent.de/2011/12/19/office-365-in-wenigen-klicks-zur-eigenen-website/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JavaScripts in SharePoint Online richtig laden</title>
		<link>http://sharepointadvent.de/2011/12/18/javascripts-in-sharepoint-online-richtig-registrieren/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=javascripts-in-sharepoint-online-richtig-registrieren</link>
		<comments>http://sharepointadvent.de/2011/12/18/javascripts-in-sharepoint-online-richtig-registrieren/#comments</comments>
		<pubDate>Sat, 17 Dec 2011 23:00:36 +0000</pubDate>
		<dc:creator>Christian Glessner</dc:creator>
				<category><![CDATA[Advanced]]></category>
		<category><![CDATA[Christian Glessner]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Office 365]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[office365]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SP.SOD]]></category>
		<category><![CDATA[SPO]]></category>

		<guid isPermaLink="false">http://www.sharepointtoolbox.de/advent/?p=435</guid>
		<description><![CDATA[JavaScript erfreut sich wieder immer größerer Beliebtheit, nicht zuletzt durch den neuen HTML5 Hype. In SharePoint Online bietet JavaScript, insbesondere in Kombination mit dem ECMA Client Object Model, uns gute Möglichkeit Limitationen von Sandboxed Solutions zu überwinden. Aber wie registriere ich JavaScripts richtig in SharePoint Online? Probleme In ASP.NET wird oft der ClientScriptManager benutzt um [...]]]></description>
				<content:encoded><![CDATA[<p>JavaScript erfreut sich wieder immer größerer Beliebtheit, nicht zuletzt durch den neuen HTML5 Hype. In SharePoint Online bietet JavaScript, insbesondere in Kombination mit dem ECMA Client Object Model, uns gute Möglichkeit Limitationen von Sandboxed Solutions zu überwinden. Aber wie registriere ich JavaScripts richtig in SharePoint Online?</p>
<p><strong>Probleme</strong></p>
<p>In ASP.NET wird oft der <a href="http://msdn.microsoft.com/de-de/library/system.web.ui.clientscriptmanager(v=VS.80).aspx">ClientScriptManager</a> benutzt um JavaScripts im Code Behind auf der Page zu registrieren. Das funktioniert aber leider nicht in einer Sandboxed Solutions. Obwohl uns zwar das Page Objekt im Code Behind eines WebParts zur Verfügung steht, haben jedoch Änderungen an diesem keine Auswirkungen auf das echte Page Objekt in ASP.NET. Der Grund hierfür ist, dass der Code von Sandboxed Solution nicht im IIS läuft, sondern im User Code Service und der simuliert lediglich den ASP.NET Page Life Cycle.</p>
<p>In SharePoint 2010 gibt es sogar extra die .NET Klasse <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.scriptlink.aspx">ScriptLink</a> um JavaScripts zu registrieren. Aber auch diese funktioniert nicht in Sandboxed Solutions.</p>
<p><strong>Lösungen</strong></p>
<p>Eine sehr einfache, aber nicht unbedingt elegante Möglichkeit JavaScripts global auszurollen besteht darin, die Master Page anzupassen und das Skript dort zu registrieren. Auch die in SharePoint 2007 sehr beliebten Delegate Controls stehen uns in Sandboxed Solutions leider nicht zur Verfügung.</p>
<p>Eine andere Möglichkeit ist das Skript innerhalb der Render Methode eines Webparts manuell zu registrieren. Hierbei sollte man aber darauf achten, dass das Skript nicht mehrfach zu laden wenn mehrere Instanzen eines WebParts auf einer Seite laufen. Genau hierfür bietet SharePoint eine sehr nützliche JavaScript Klasse namens <a href="http://msdn.microsoft.com/en-us/library/ff410742.aspx">SP.SOD</a> (SharePoint Scripts on Demand, leider schlecht dokumentiert). Die Aufgabe von SP.SOD ist es Skripte bei Bedarf dynamisch zu laden. SharePoint selbst nutzt SP.SOD sehr intensiv und lädt viele JavaScript erst bei Bedarf dynamisch. Das hat den Vorteil, dass die Seite dem Benutzer schneller angezeigt wird und dann erst die Funktionalität (JavaScript) nachgeladen wird. Vielleicht ist auch dem ein oder anderen schon mal aufgefallen, dass die Ribbon Buttons erst kurz nach dem Laden der Seite aktiviert werden. Auch die oben erwähnte .NET Klasse <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.scriptlink.aspx">ScriptLink</a> macht im Hintergrund nichts anderes als serverseitig clientseitige <a href="http://msdn.microsoft.com/en-us/library/ff410742.aspx">SP.SOD</a> Aufrufe zu generieren. Glücklicherweise steht uns <a href="http://msdn.microsoft.com/en-us/library/ff410742.aspx">SP.SOD</a> auch in Sandboxed Solutions zur Verfügung. Jetzt genug Theorie, hier ein Beispiel.</p>
<p><strong>Beispiel</strong></p>
<p>myscript.js</p>
<p><a href="http://sharepointadvent.de/files/2011/12/image13.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://sharepointadvent.de/files/2011/12/image_thumb22.png" alt="image" width="597" height="283" border="0" /></a></p>
<p>Myscript.js registriert den Namespace “ilsp.scripts” und eine einfache “sayHello” Methode. Der letzte Aufruf teilt SP.SOD mit, dass das Skript mit dem Key “myscript.js” geladen wurde und dass eventuell vorhandene Callback Funktionen die auf myscript.js warten jetzt aufgerufen werden können.</p>
<p>Nun registrieren wir myscript.js mit Hilfe einer Custom Action.</p>
<p><a href="http://sharepointadvent.de/files/2011/12/image14.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://sharepointadvent.de/files/2011/12/image_thumb23.png" alt="image" width="604" height="231" border="0" /></a></p>
<p>In SharePoint 2010 kann man Scripts via Custom Action registrieren. Hierzu kann man entweder wie oben das ScriptBlock Attribut nutzen oder das ScriptSrc Attribut. Nachteil von ScriptSrc ist, dass man keine externen Scripts laden kann. Das Script muss entweder im Layouts Ordner liegen (nicht möglich in Sandboxed Solutions!) oder innerhalb der SharePoint Site (kann über ein Modul bereitgestellt werden). Des Weiteren kann man die Scripts nicht “On Demand” laden. In SharePoint Online lade ich Script Libaries gerne aus dem Azure Blob Storage. Hierdurch kann das Script nachträglich leicht, zentral gewartet werden. RegisterSod lädt das Script nicht direkt sondern registriert es lediglich zum späteren laden, sofern benötigt.</p>
<p>Als nächstes Erstellen wir ein Sandboxed Visual Webpart.</p>
<p><a href="http://sharepointadvent.de/files/2011/12/image15.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://sharepointadvent.de/files/2011/12/image_thumb24.png" alt="image" width="600" height="133" border="0" /></a></p>
<p><a href="http://sharepointadvent.de/files/2011/12/image16.png"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://sharepointadvent.de/files/2011/12/image_thumb25.png" alt="image" width="600" height="461" border="0" /></a></p>
<p>In sayHelloClick wird durch LoadSodByKey das bereits registrierte myscript.js dynamisch geladen. Dynamisch geladen bedeutet, dass der entsprechende Script Tag dynamisch erstellt und zum HTML Head Element hinzugefügt wird. Die Callback Funktion im zweiten Parameter wird nur aufgerufen wenn das Script initial geladen wurden. ExecuteOrDelayUntilScriptLoaded wartet bis ein Script fertig geladen wurde (SP.SOD.notifyScriptLoadedAndExecuteWaitingJobs) und ruft dann die definierte Callback Methode auf.</p>
<p><strong>Ablauf </strong></p>
<p>Bei jedem Laden einer Seite wird myscript.js als SOD registriert aber noch nicht geladen (alert: Register SOD).</p>
<p>Erst wenn “Say Hello” zum ersten Mal geklickt wird, wird myscript.js geladen und dann ilsp.scripts.sayHello aufgerufen (alerts: Loading Scripts…; Notify Script Loaded; Hello Thorsten!).</p>
<p>Beim zweiten klick wird myscript.js nicht nocheinmal geladen, sondern nur noch ilsp.scripts.sayHello aufgerufen (alerts: Hello Martina!)</p>
<p><strong>Hört sich verwirrend an? Ist es auch </strong><strong><a href="http://sharepointadvent.de/files/2011/12/clip_image0012.png"><img style="margin: 0px;padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" src="http://sharepointadvent.de/files/2011/12/clip_image001_thumb1.png" alt="clip_image001" width="23" height="23" border="0" /></a></strong></p>
<p><em>(…weitere Details zu SP.SOD findet Ihr auch auf meinem <a href="http://www.ilovesharepoint.com/2010/08/sharepoint-scripts-on-demand-spsod.html" target="_blank">Blog</a>.)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://sharepointadvent.de/2011/12/18/javascripts-in-sharepoint-online-richtig-registrieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Portal Trends 2012</title>
		<link>http://sharepointadvent.de/2011/12/17/portal-trends-2012/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=portal-trends-2012</link>
		<comments>http://sharepointadvent.de/2011/12/17/portal-trends-2012/#comments</comments>
		<pubDate>Sat, 17 Dec 2011 08:00:06 +0000</pubDate>
		<dc:creator>Christoph Müller</dc:creator>
				<category><![CDATA[Christoph Müller]]></category>
		<category><![CDATA[IT-Pro]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Portal]]></category>

		<guid isPermaLink="false">http://www.sharepointtoolbox.de/advent/?p=491</guid>
		<description><![CDATA[Michael Greth und ich haben uns im letzten AlpenPodcast über das vergangene Jahr unterhalten. Ein Kollege sprach mich nun darauf an: was ist dann mit der Aussicht auf 2012. Nun, wir alle wissen das solche Aussagen immer ganz heikel sind. Retrospektive Zusammenfassungen sind ja einfach. Trotzdem versuche ich mal die Portal Trends, die ich persönlich [...]]]></description>
				<content:encoded><![CDATA[<p>Michael Greth und ich haben uns im <a title="Alpenpodcast mit Chris Müller" href="http://sharepointadvent.de/2011/12/09/der-alpenpodcast-mit-chris-mueller-und-michael-greth/" target="_blank">letzten AlpenPodcast</a> über das vergangene Jahr unterhalten. Ein Kollege sprach mich nun darauf an: was ist dann mit der Aussicht auf 2012. Nun, wir alle wissen das solche Aussagen immer ganz heikel sind. Retrospektive Zusammenfassungen sind ja einfach. Trotzdem versuche ich mal die Portal Trends, die ich persönlich wahrnehme, für das nächste Jahr auszubreiten.<br />
Generell lässt sich sagen das Microsoft das Thema „Private Cloud“ bei ihren Kunden weiter sehr stark positionieren wird. Das bedingt, dass wir von der SharePoint Architektur Lösungen oder zumindest Aussagen bereithalten sollten. Ein guter Anlaufpunkt ist: <a href="http://sharepointintheprivatecloud.wordpress.com/" target="_blank">http://sharepointintheprivatecloud.wordpress.com/</a>.</p>
<p>Was immer wir im nächsten Jahr planen: Flexibler und elastischer muss es werden.</p>
<p>Das Thema <strong>Mobile</strong> wird uns weiter beschäftigen. Schon heute sind wir mit diesen Anforderungen konfrontiert. Mit dem Erscheinen der Galaxy Tabletts wird der Druck vermutlich noch grösser. Immer mehr Firmenkunden lassen ihren Anwender die Corporate Informationen auf diesen Geräten empfangen. (Mehr zu diesem Thema ein bisschen weiter unten im Abschnitt Portal Design Trends.)<br />
Enterprise 2.0. Social Media ist ein ewiges Thema das bei fast allen Firmen immer wieder hochkommt. Bisher waren aber alle dann irgendwie doch noch nicht so richtig bereit. Im Zusammenhang mit der weiteren Ausbreitung von Mobilen Geräten in den Firmen wird dieses Thema nun erneut angegangen. Wichtig ist es zu erkennen, dass dieses Enterprise 2.0 kein IT-Thema ist, sondern ein Thema für die Corporate Communication Abteilung. Nur weil man ein Facebook und ein  Twitter Account hat ist man noch kein Social Media Spezialist.</p>
<p><strong>Portal Design</strong><br />
Ebenso wie das Thema „Private Cloud“ wird Microsoft im nächsten Jahr SharePoint als WCM-Plattform positionieren. Das gibt uns Dienstleistern neue Aufträge und das ist gut so. Allerdings ist unsere Konkurrenz in diesem Bereich sehr, sehr stark. Diese Lösungen reagieren sehr viel schneller als Microsoft auf aktuelle Trends.<br />
Das Konzept der mobilen Apps hat gezeigt das fokussierte Software Probleme oft dynamischer lösen als monolithische Feature starke Lösungen. Diese Erkenntnis schlägt sich direkt auf Portallösungen durch. Die Kunden werden mehr Fokus auf Themen wie „User Experience“, „Interaction Design“ und Informations-Architektur legen. Themen wie der reine Betrieb der Lösung werden langsam verschwinden weil sie im Zusammenhang mit der oben genannten „Private Cloud“ als „commodity“ wahrgenommen werden.<br />
Was bedeutet das konkret? Das was gemeinhin als „<strong>Responsive Web Design</strong>“ bezeichnet wird, wird im nächsten Jahr aus den Kinderschuhen herauswachsen und umgesetzt. Die Unterschiede der Vielzahl der mobilen Geräte werden uns dazu zwingen. Statt Portale mit fixen Werten zu entwickeln, müssen wir dynamische Layouts schreiben die mit einer Vielzahl von unterschiedlichen Stylesheets auf unterschiedlichen Geräten angezeigt werden können. Das Web ist voll mit Hilfsmittel zu diesem Thema. Wie etwa <a href="http://www.tinyfluidgrid.com/" target="_blank">tiny fluid grid</a>.</p>
<p><a href="http://sharepointadvent.de/files/2011/12/trends1.png"><img class="alignnone size-medium wp-image-492" src="http://sharepointadvent.de/files/2011/12/trends1-300x225.png" alt="" width="300" height="225" /></a></p>
<p>Im Gegensatz zu dem weiter unten erwähnten „<strong>Fixed-Position Navigation</strong>„ zeigt sich in den reinen Portalen, die mit sehr viel Information umgehen müssen einen Trend zu <strong>Multi-Column Menus</strong>. Der Grund liegt darin, dass wenn zu viele Navigationslink vorhanden sind, Teile davon in die Seitennavigation (Quick Nav) verschoben werden. User Experience Tests haben aber gezeigt, dass eine Zersplitterung der Navigation von den Benutzern nicht immer richtig verstanden wird. Aus diesem Grund empfiehlt es sich alles in der Top Navigation zu behalten. Um dieses Problem zu lösen haben sich die erwähnten „Multi-Column Menus“ entwickelt. Ein gutes Beispiel ist etwa <a href="http://www.bestmadeco.com/" target="_blank">Best Made Company</a>:</p>
<p><a href="http://sharepointadvent.de/files/2011/12/trends6.png"><img class="alignnone size-medium wp-image-493" src="http://sharepointadvent.de/files/2011/12/trends6-300x183.png" alt="" width="300" height="183" /></a></p>
<p>Aber auch einfachere Lösungen wirken immer noch sehr elegant und aufgeräumt (<a href="http://neuarmy.com/" target="_blank">http://neuarmy.com/</a>)</p>
<p><a href="http://sharepointadvent.de/files/2011/12/trends5.png"><img class="alignnone size-medium wp-image-495" src="http://sharepointadvent.de/files/2011/12/trends5-300x179.png" alt="" width="300" height="179" /></a></p>
<p>Ein anderer Weg um dieses Problem zu lösen sind „<strong>Footer Navigation</strong>“. Immer mehr Portale lassen den Footer mit sehr vielen Links konstant stehen und geben dem Benutzer so zwei Navigationselemente (oben und unten). Dies ist für die Benutzer deutlich logischer als die SharePoint typische Verteilung in Top- und Quick Navigation.</p>
<p><a href="http://sharepointadvent.de/files/2011/12/trends7.png"><img class="alignnone size-medium wp-image-496" src="http://sharepointadvent.de/files/2011/12/trends7-300x235.png" alt="" width="300" height="235" /></a><br />
<strong><br />
Allgemeine Site Design Trends</strong><br />
<strong><br />
Fixed-Position Navigation</strong>: Im letzten Jahr kam dieser Trend auf und der wird sich nächstes Jahr weitersetzten. Die Idee ist, dass man auf Seiten die wenige Navigation benötigen, die Navigation nicht versteckt sondern als zentrales Element stehen lässt. Dieses Vorgehen kann neben dem Design Effekt die Website Performance dramatisch verbessern. Mittels jQuery kann hier sehr schnelle Lösungen bauchen. Aber auch ohne aktivierten JavaScript kann mit<a href="http://designm.ag/tutorials/sticky-sidenav-layout/" target="_blank"> ganz kreativen CSS Code Lösungen</a> solche Effekte erreicht werden. Ein gutes Beispiel für diesen Effekt ist die Site von <a href="http://www.netontwerp.com/index_en.htm" target="_blank">Simon Wuyts</a>.</p>
<p><a href="http://sharepointadvent.de/files/2011/12/trends3.png"><img class="alignnone size-medium wp-image-497" src="http://sharepointadvent.de/files/2011/12/trends3-300x235.png" alt="" width="300" height="235" /></a></p>
<p><strong>Grosse visuelle Elemente:</strong> Ein weiterer Trend, der im Zusammenhang mit Enterprise 2.0 steht, ist das man übergrosse Maskottchen auf die Site platziert. Die Idee dahinter ist es, dem Inhalt eine Identität zu geben (Maskottchen) welches sich dann positiv auf die Akzeptanz überträgt. Die Qualität dieser „Vector Arts“ wurde auch immer besser und gibt den Seiten definitiv einen „fröhlichen“ Anstrich. Zwei Beispiele hier: Firefox und MailChimp.</p>
<p><a href="http://sharepointadvent.de/files/2011/12/trends2.png"><img class="alignnone size-medium wp-image-498" src="http://sharepointadvent.de/files/2011/12/trends2-300x235.png" alt="" width="300" height="235" /></a></p>
<p><a href="http://sharepointadvent.de/files/2011/12/trends4.png"><img class="alignnone size-medium wp-image-499" src="http://sharepointadvent.de/files/2011/12/trends4-300x235.png" alt="" width="300" height="235" /></a></p>
<p>&nbsp;</p>
<p>Natürlich gibt es weitere Trends wie etwa HTML 5/jQuerry/CSS Animationen oder „web save fonts“. Auch sieht man immer mehr Infografiken im Intranet. Bitte schreibt doch als Feedback welche Trends Ihr seht oder welche ich vergessen habe.</p>
]]></content:encoded>
			<wfw:commentRss>http://sharepointadvent.de/2011/12/17/portal-trends-2012/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>SQL Script für die Erstellung von Best Practice SharePoint Datenbanken</title>
		<link>http://sharepointadvent.de/2011/12/16/sql-script-fuer-die-erstellung-von-best-practice-sharepoint-datenbanken/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sql-script-fuer-die-erstellung-von-best-practice-sharepoint-datenbanken</link>
		<comments>http://sharepointadvent.de/2011/12/16/sql-script-fuer-die-erstellung-von-best-practice-sharepoint-datenbanken/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 23:01:51 +0000</pubDate>
		<dc:creator>Samuel Zürcher</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Samuel Zürcher]]></category>
		<category><![CDATA[IT-Pro]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.sharepointtoolbox.de/advent/?p=273</guid>
		<description><![CDATA[Wie in meinem letzten Post erläutert, macht es durchaus Sinn, sich im Bereich SharePoint auch über das Backend Gedanken zu machen. Ein Teil davon ist die Erstellung der Datenbanken. Eigentlich sollte es den Button &#8220;Add new Content Database&#8221; in SharePoint gar nicht geben. Warum?  Hier sind die Gründe: SharePoint erstellt eine neue Datenbank ab der [...]]]></description>
				<content:encoded><![CDATA[<p>Wie in meinem letzten Post erläutert, macht es durchaus Sinn, sich im Bereich SharePoint auch über das Backend Gedanken zu machen. Ein Teil davon ist die Erstellung der Datenbanken. Eigentlich sollte es den Button &#8220;Add new Content Database&#8221; in SharePoint gar nicht geben.</p>
<p style="text-align: center"><a href="http://sharepointadvent.de/files/2011/12/addcontentdb1.jpg"><img class="size-full wp-image-439 aligncenter" src="http://sharepointadvent.de/files/2011/12/addcontentdb1.jpg" alt="" width="655" height="157" /></a></p>
<p>Warum?  Hier sind die Gründe:</p>
<p>SharePoint erstellt eine neue Datenbank ab der Model und diese ist von Natur aus so konfiguriert:</p>
<ul>
<li>2MB gross (oder besser gesagt klein)</li>
<li>Ein einzelnes File in der Primary Filegroup</li>
<li>Growth ist auf 1 MB Unlimited Growth</li>
<li>Logfile ist 1MB gross</li>
<li>Growth ist 10%</li>
</ul>
<p style="text-align: center"><a href="http://sharepointadvent.de/files/2011/12/model.jpg"><img class="aligncenter size-full wp-image-440" src="http://sharepointadvent.de/files/2011/12/model.jpg" alt="" width="647" height="442" /></a></p>
<p>&nbsp;</p>
<p>Nach dem Erstellen einer leeren SharePoint Datenbank ist diese 2o MB gross, das heisst, sie ist bereits 18x gewachsen. Durch das Wachstum einer DB wird sie fragmentiert und wie man weiss, ist alles was fragmentiert ist langsamer, da die Datenstücke nicht aneinander hängen, sondern verteilt sind. Diese Verteilung muss vom DB Management System aufgefangen werden. Dieser Reibungsverlust schlägt sich in der Performance nieder.</p>
<p style="text-align: center"><a href="http://sharepointadvent.de/files/2011/12/DiskSpaceGrowth.jpg"><img class="aligncenter size-full wp-image-445" src="http://sharepointadvent.de/files/2011/12/DiskSpaceGrowth.jpg" alt="" width="610" height="714" /></a></p>
<p>Wenn ich nun die DB Stats abfrage, bekomme ich den Fragmentierungslevel der neuen Datenbank mitgeteilt, ACHTUNG: Es handelt sich notabene um eine leere SharePoint Datenbank, die noch überhaupt keinen Content enthält. SELECT * FROM sys.dm_db_index_physical_stats (DB_ID(&#8216;DB Name&#8217;), Null, Null, Null, Null);</p>
<p style="text-align: center"><a href="http://sharepointadvent.de/files/2011/12/DBStats.jpg"><img class="aligncenter size-full wp-image-442" src="http://sharepointadvent.de/files/2011/12/DBStats.jpg" alt="" width="620" height="20" /></a></p>
<p>Ich erhalte hier 230 Rows, jede Row enthält den Hinweis auf einen Index. Meine Datenbank ist also schon sehr stark fragmentiert, obwohl sie leer ist. Da kann man sich vorstellen, dass dies an der Performance nagt.</p>
<p>Ein weiterer Punkt ist, dass allea auf einem Datenfile abgeht. Heute haben Prozessoren mehrere Kerne, und jeder hackt auf dem armen File rum. Viel besser ist es, wenn jeder Kern sich auf ein anderes File konzentrieren kann. Wenn eine DB in mehrere Files unterteilt ist, so wird abwechselnd auf die Files eingedroschen, was sich wiederum positiv auf die Performance auswirkt. Die Fausregel sagt, dass pro Prozessorkern 0.25 bis 0.5 Files angelegt werden sollten, mindestens aber 4. Bei mehr als 8 Files ist dann kein grosser Unterschied mehr spürbar. Beachten Sie folgendes:</p>
<ul>
<li>Berechnen Sie vorab, wie viel Content später mal in die DB rein soll</li>
<li>Erstellen Sie die initiale DB Grösse entsprechend ein (wir sprechen von GB nicht von BYTES)</li>
<li>Stellen Sie das Wachstum auf eine vernünftige Grösse ein</li>
<li>Stellen Sie das LOG auch auf 1GB oder teilbar durch 8GB</li>
</ul>
<p>Hier kommt der Script vorher noch im SQL Mgmt Studio unter &#8220;Query&#8221; den &#8220;SQL CMD Mode&#8221; aktivieren, alles was rot ist muss von euch noch customized werden (auch der User ganz am Ende, da kommt der Farm Admin rein:</p>
<p>&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
&#8211; Disclaimer &#8211; Thoroughly test this script, execute at your own risk.<br />
&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>&#8211; set variables (Filesizes in MB)<br />
:setvar <strong><span style="color: #ff0000">DBName MyAdventDB</span></strong><br />
:setvar LoginitialMB <strong><span style="color: #ff0000">1024</span></strong><br />
:setvar LoggrowMB <span style="color: #ff0000"><strong>1024</strong></span><br />
:setvar DatainitialMBperFile <strong><span style="color: #ff0000">341</span></strong><br />
:setvar DatagrowMBperFile <strong><span style="color: #ff0000">341</span></strong><br />
:setvar DataPath &#8220;<strong><span style="color: #ff0000">C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA</span></strong>&#8221;<br />
:setvar LogPath &#8220;<span style="color: #ff0000"><strong>C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA</strong></span>&#8221;</p>
<p>CREATE DATABASE [$(DBName)] ON  PRIMARY<br />
&#8211; no grow on Primary-File (its only for sys tables and Service Broker Queues)<br />
( NAME = N&#8217;$(DBName)Data01&#8242;, FILENAME = N&#8217;$(DataPath)\$(DBName)Data01.mdf&#8217; , SIZE = 128MB , FILEGROWTH = 0),<br />
&#8211; 0.25-1 file per cpu core (each with same initial and grow size)<br />
( NAME = N&#8217;$(DBName)_Data02&#8242;, FILENAME = N&#8217;$(DataPath)\$(DBName)_Data02.ndf&#8217; , SIZE = $(DatainitialMBperFile)MB , FILEGROWTH = $(DatagrowMBperFile)MB ),<br />
( NAME = N&#8217;$(DBName)_Data03&#8242;, FILENAME = N&#8217;$(DataPath)\$(DBName)_Data03.ndf&#8217; , SIZE = $(DatainitialMBperFile)MB , FILEGROWTH = $(DatagrowMBperFile)MB ),<br />
( NAME = N&#8217;$(DBName)_Data04&#8242;, FILENAME = N&#8217;$(DataPath)\$(DBName)_Data04.ndf&#8217; , SIZE = $(DatainitialMBperFile)MB , FILEGROWTH = $(DatagrowMBperFile)MB ),<br />
( NAME = N&#8217;$(DBName)_Data05&#8242;, FILENAME = N&#8217;$(DataPath)\$(DBName)_Data05.ndf&#8217; , SIZE = $(DatainitialMBperFile)MB , FILEGROWTH = $(DatagrowMBperFile)MB )<br />
LOG ON<br />
&#8211; place tlog on another diskarray, use best practice size for optimal vlf handling (1GB/8GB)<br />
( NAME = N&#8217;$(DBName)_log&#8217;, FILENAME = N&#8217;$(LogPath)\$(DBName)_log.ldf&#8217; , SIZE = $(LoginitialMB)MB , FILEGROWTH = $(LoggrowMB)MB )<br />
&#8211; collation for database (default, unless its for moss &#8211;&gt;KS_WS!)<br />
COLLATE Latin1_General_CI_AS_KS_WS<br />
GO<br />
&#8211; 90=2005/100=2008<br />
ALTER DATABASE [$(DBName)] SET COMPATIBILITY_LEVEL = 100<br />
GO<br />
ALTER DATABASE [$(DBName)] SET ANSI_NULL_DEFAULT OFF<br />
GO<br />
ALTER DATABASE [$(DBName)] SET ANSI_NULLS OFF<br />
GO<br />
&#8211; set ANSI_PADDING True, refer to BOL for more information, not default setting<br />
ALTER DATABASE [$(DBName)] SET ANSI_PADDING ON<br />
GO<br />
ALTER DATABASE [$(DBName)] SET ANSI_WARNINGS OFF<br />
GO<br />
ALTER DATABASE [$(DBName)] SET ARITHABORT OFF<br />
GO<br />
ALTER DATABASE [$(DBName)] SET AUTO_CLOSE OFF<br />
GO<br />
ALTER DATABASE [$(DBName)] SET AUTO_CREATE_STATISTICS ON<br />
GO<br />
&#8211; never use AUTO_SHRINK on a production DB<br />
ALTER DATABASE [$(DBName)] SET AUTO_SHRINK OFF<br />
GO<br />
ALTER DATABASE [$(DBName)] SET AUTO_UPDATE_STATISTICS ON<br />
GO<br />
ALTER DATABASE [$(DBName)] SET CURSOR_CLOSE_ON_COMMIT OFF<br />
GO<br />
ALTER DATABASE [$(DBName)] SET CURSOR_DEFAULT  GLOBAL<br />
GO<br />
ALTER DATABASE [$(DBName)] SET CONCAT_NULL_YIELDS_NULL OFF<br />
GO<br />
ALTER DATABASE [$(DBName)] SET NUMERIC_ROUNDABORT OFF<br />
GO<br />
ALTER DATABASE [$(DBName)] SET QUOTED_IDENTIFIER OFF<br />
GO<br />
ALTER DATABASE [$(DBName)] SET RECURSIVE_TRIGGERS OFF<br />
GO<br />
ALTER DATABASE [$(DBName)] SET  DISABLE_BROKER<br />
GO<br />
ALTER DATABASE [$(DBName)] SET AUTO_UPDATE_STATISTICS_ASYNC OFF<br />
GO<br />
ALTER DATABASE [$(DBName)] SET DATE_CORRELATION_OPTIMIZATION OFF<br />
GO<br />
ALTER DATABASE [$(DBName)] SET PARAMETERIZATION SIMPLE<br />
GO<br />
ALTER DATABASE [$(DBName)] SET  READ_WRITE<br />
GO<br />
&#8211; use same recovery model for each db in an instance (exceptions in olap environments)<br />
ALTER DATABASE [$(DBName)] SET RECOVERY FULL<br />
GO<br />
ALTER DATABASE [$(DBName)] SET  MULTI_USER<br />
GO<br />
&#8211; change all dbs to checksum since 2005<br />
ALTER DATABASE [$(DBName)] SET PAGE_VERIFY CHECKSUM<br />
GO</p>
<p>&#8211; change db owner<br />
USE [$(DBName)]<br />
GO<br />
EXEC dbo.sp_changedbowner @loginame = N&#8217;<span style="color: #ff0000"><strong>domain\user</strong></span>&#8216;, @map = false<br />
GO</p>
<p>&nbsp;</p>
<p>Am Ende noch mit Powershell an SharePoint anhängen und gut ist.</p>
<p>New-SPContentDatabase -Name <em>&lt;ContentDbName&gt;</em> -WebApplication <em>&lt;WebApplicationName&gt;</em></p>
<p><em>So long, Samuel</em></p>
]]></content:encoded>
			<wfw:commentRss>http://sharepointadvent.de/2011/12/16/sql-script-fuer-die-erstellung-von-best-practice-sharepoint-datenbanken/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
