<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blog.trivadis.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Blogs</title><link>http://blog.trivadis.com/default.aspx</link><description /><dc:language /><generator>Telligent Community 5.6.583.24393 (Build: 5.6.583.24393)</generator><item><title>Blog: Bernhard Wesely</title><link>http://blog.trivadis.com/b/bernhardwesely/default.aspx</link><pubDate>Fri, 24 May 2013 01:02:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:151</guid><dc:creator>admin</dc:creator><description /></item><item><title>User: vgrimaldi</title><link>http://blog.trivadis.com/members/vgrimaldi/default.aspx</link><pubDate>Thu, 16 May 2013 08:21:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:5262</guid><dc:creator>vgrimaldi</dc:creator><description /></item><item><title>Blog Post: Creating Service Agents with WCF</title><link>http://blog.trivadis.com/b/christofsenn/archive/2013/05/16/creating-service-agents-with-wcf.aspx</link><pubDate>Thu, 16 May 2013 06:29:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:181796</guid><dc:creator>Christof Senn</dc:creator><description>&lt;h3&gt;What I mean by Service Agent&lt;/h3&gt;  &lt;p&gt;As more often than not it is difficult to find a commonly accepted term for a given pattern in SOA I have to specify what I actually mean by service agent. So here&amp;rsquo;s my definition:&lt;/p&gt;  &lt;p&gt;In SOA a service agent is a thin component, put in front of a service, which provides supplemental functionality to the existing service. Typically service agents are transparent to service consumers, i.e. service consumers are not aware of the existence of service agents.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-01-50/4331.ServiceAgentContext.png"&gt;&lt;img alt=" " src="http://blog.trivadis.com/resized-image.ashx/__size/500x164/__key/communityserver-blogs-components-weblogfiles/00-00-00-01-50/4331.ServiceAgentContext.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;What&amp;rsquo;s the Use Case?&lt;/h3&gt;  &lt;p&gt;Service agents are used to add functionality in a technical sense rather than specifically to the business domain. Common use cases of service agents are:&lt;/p&gt;  &lt;ul&gt;  &lt;li&gt;Bridging service contracts or different versions of contracts&lt;/li&gt;  &lt;li&gt;Bridging protocols&lt;/li&gt;  &lt;li&gt;Logging&lt;/li&gt;  &lt;li&gt;Routing&lt;/li&gt;  &lt;li&gt;Load balancing&lt;/li&gt;  &lt;li&gt;Etc.&lt;/li&gt;  &lt;/ul&gt;  &lt;p&gt;Service agents should introduce as little overhead as possible. Typically a service agent operates on SOAP message level or even only parts of it and is kept free from the burden of serializing and deserializing data objects from and to service messages.&lt;/p&gt;  &lt;h3&gt;A Concrete Example&lt;/h3&gt;  &lt;p&gt;Lately on a customer project I had the requirement to secure existing services by applying custom authorization logic. The services were accessible to everyone who had access to the customer&amp;rsquo;s LAN. Now, my customer wanted to control whom to grant access to which service methods.&lt;/p&gt;  &lt;p&gt;The customer was familiar with &lt;a href="http://msdn.microsoft.com/en-us/library/dd456779.aspx" target="_blank"&gt;WCF&lt;/a&gt;. In fact the existing services and service consumers were implemented using WCF. Authentication had to be done via Active Directory (Windows Authentication). Authorization settings could be retrieved from an existing database. However, we wanted to change as little as possible in both, the existing service consumers and services.&lt;/p&gt;  &lt;p&gt;One option I had in mind to solve the given requirement was to introduce a &lt;a href="http://msdn.microsoft.com/en-us/library/aa717047.aspx" target="_blank"&gt;WCF Message Inspector&lt;/a&gt; on the service side, to inspect incoming messages to check/grant access based on the SOAP action and the username of the service consumer.&lt;/p&gt;  &lt;p&gt;Another natural attempt would have been the introduction of a custom &lt;a href="http://msdn.microsoft.com/en-us/library/ms554641.aspx" target="_blank"&gt;Service Authorization Manager&lt;/a&gt; to take care of granting access to service methods.&lt;/p&gt;  &lt;p&gt;However, in order to have as little impact as possible on the existing service I was tending towards a third option. As of version 4.0 WCF introduced the &lt;a href="http://msdn.microsoft.com/en-us/library/ee517423.aspx" target="_blank"&gt;WCF Routing Services&lt;/a&gt; as a new component contained in the framework. Even though routing is actually not what we were looking for, the component&amp;rsquo;s content based routing functionality does, from a conceptual perspective, exactly what we need: receive incoming requests on behalf of another service and forward the request based on its message content, or (in our case) return a failure if access is not granted.&lt;/p&gt;  &lt;p&gt;As it turned out, this was actually easy to do. At least once I&amp;rsquo;ve figured out the details, as some WCF features are not provided with a comprehensive documentation and sample are accordingly rare. So, here you are. Attached to this post you may find a sample implementation I&amp;rsquo;ve done as proof of concept.&lt;/p&gt;  &lt;p&gt;Here are the cornerstones:&lt;/p&gt;  &lt;p&gt;Implement the router interfaces according the services messaging patterns, e.g. &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.routing.irequestreplyrouter.aspx" target="_blank"&gt;IRequestReplyRouter&lt;/a&gt; for request/response services. Checkout &lt;a href="http://msdn.microsoft.com/en-us/library/dd455215.aspx" target="_blank"&gt;System.ServiceModel.Routing&lt;/a&gt; namespace for other router interfaces available. &lt;br /&gt;Invoke authorization logic as part of the request handler and forward request to the actual service if access is granted, throw security exception otherwise.&lt;/p&gt;  &lt;p&gt;Expose endpoints using the respective routing interface as contract and define addresses and bindings to listen for incoming requests.&lt;/p&gt;  &lt;p&gt;The sample service agent exposes a TCP endpoint for service consumers and forwards requests over named pipe to the actual service running on localhost. This way, service consumers running on machines other than the server may invoke the actual service exclusively via the service agent. This ensures proper authorization for our service.&lt;/p&gt;  &lt;h3&gt;Summary&lt;/h3&gt;  &lt;p&gt;Service agents in SOA are thin components put in front of a service. Creating service agents using WCF is actually quite easy making use of the WCF Routing Services and its underlying techniques. The code sample attached to this post demonstrates the implementation of a service agent to take care of authorizing service consumers prior forwarding requests to the actual service.&lt;/p&gt;</description></item><item><title>Blog Post: Mit SQL Server Management Studio 2008 DTS Packages öffnen oder erstellen</title><link>http://blog.trivadis.com/b/bernhardlauber/archive/2013/05/15/mit-sql-server-management-studio-2008-dts-packages-246-ffnen-oder-erstellen.aspx</link><pubDate>Wed, 15 May 2013 10:08:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:181794</guid><dc:creator>Bernhard Lauber</dc:creator><description>Grundsätzlich werden ab SQL Server 2005 die Data Transfer Services (DTS) nicht mehr unterstützt und wurden durch die SQL Server Integration Services ersetzt. Wenn man nun trotzdem legacy DTS Packages pflegen muss, dann gibt es einen Weg! (1) Feature Pack for Microsoft SQL Server 2005 &amp;#8211; December 2008 downloaden: http://www.microsoft.com/en-us/download/details.aspx?id=11988 In meinem Fall (Windows 7 [&amp;#8230;]&lt;img alt=" " border="0" src="http://stats.wordpress.com/b.gif?host=datatipp.wordpress.com&amp;#038;blog=33915620&amp;#038;post=136&amp;#038;subd=datatipp&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</description></item><item><title>Blog Post: SharePoint Authentisierung über Forests und einem Ein-Weg Trust…</title><link>http://blog.trivadis.com/b/imsms/archive/2013/05/14/sharepoint-authentisierung-252-ber-forests-und-einem-ein-weg-trust.aspx</link><pubDate>Tue, 14 May 2013 15:05:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:181793</guid><dc:creator>Stephan Jola</dc:creator><description>&lt;p&gt;&lt;strong&gt;Die Fragestellung:&lt;/strong&gt;    &lt;br /&gt;Kann ich im SharePoint eine Authentisierung machen, gegen ein Active Directory welches “nur” einen Ein-Weg Trust hat?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Antwort:&lt;/strong&gt;     &lt;br /&gt;Ja das geht.&lt;/p&gt;  &lt;p&gt;In meinem Beispiel geht das so, dass ich 2 Domains in 2 verschiedenen Forests habe. Dabei ist die Domain contoso.com die “Extranet” Domain, also diejenige, welche die Externen User Accounts innehat. Die SharePoint Farm ist in der Domain contoso.com und wird von Extranet Benutzern verwendet (Lieferanten, Partner, Kunden etc.)&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="812" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;img src="http://www.thewritingnut.com/wp-content/uploads/2010/08/acme-anvil.jpg" width="262" height="352" alt=" " /&gt;&lt;/td&gt;        &lt;td valign="top" width="610"&gt; Die Domain acme.net ist meine Interne Firmen Domain. Hier sind alle Mitarbeiter erfasst. Nun sollen die Mitarbeiter der ACME ebenfalls Zugriff auf CONTOSO erhalten, und zwar mit ihrem bisherigen CONTOSO Domain Account.         &lt;br /&gt;          &lt;br /&gt;Aus Gründen der Security soll aber nur ein “One-Way” Trust zwischen den zwei getrennten Forests und Domains eingerichtet werden.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Wenn der One-Way trust also eingerichtet ist (siehe Bild unten) geht es weiter.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/5280.image_5F00_04A952D9.png"&gt;&lt;img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/1070.image_5F00_thumb_5F00_4473395E.png" width="813" height="472" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Jetzt muss der People Picker in SharePoint konfiguriert werden.&lt;/p&gt;  &lt;p&gt;Damit der PeoplePicker in der Domain contoso.com auf das AD von acme.net lesend zugreiffen kann, muss im SharePoint folgender Befehl abgesetzt werden (dies ist der Encryption Key, auch als “Verschlüsselungsschlüssel” bekannt &lt;img class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/3146.wlEmoticon_2D00_winkingsmile_5F00_0B5C5C5C.png" /&gt; .&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;stsadm.exe -o setapppassword –Password &amp;lt;Password&amp;gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Damit wir im AD acme.net lesend zugreiffen können, erstellen wir dort einen User Account LDAPReader, welcher ein ganz normaler Domain User Account ist (also quasi ein Service Account). Dessen Passwort müssen wir auch kennen.&lt;/p&gt;  &lt;p&gt;Damit der PeoplePicker nun von seinem Glück erfährt, muss das pro Web Application eingerichtet werden. Dies erfolgt wiederum mit einem stsadm Befehl. In meinem Beispiel ist das die Web Application Intranet.contoso.com&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;stsadm -o setproperty -url &lt;/font&gt;&lt;a href="http://intranet.contoso.com"&gt;&lt;font face="Courier New"&gt;http://intranet.contoso.com&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt; -pn peoplepicker-searchadforests -pv &amp;quot;forest:acme.net,acme\ldapreader,&amp;lt;Password&amp;gt;;domain:acme.net,acme\ldapreader,&amp;lt;Password&amp;gt;;forest:contoso.com;domain:contoso.com&amp;quot;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;That’s it.&lt;/p&gt;  &lt;p&gt;Im People Picker der entsprechenden Web Application funktioniert dass nun so, es werden also beide Domains contoso.com und acme.net durchsucht und dargestellt.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/6761.image_5F00_766AD9E8.png"&gt;&lt;img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/2541.image_5F00_thumb_5F00_3D53FCE6.png" width="644" height="127" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Da man aber unter umständen nicht möchte, dass in der Extranet Umgebung die externen Benutzer die Internen Benutzer einfach so darstellt, kann man zusätzlich noch mit einem LDAP Filter arbeiten.&lt;/p&gt;  &lt;p&gt;Folgender stsadm Befehl, filtert noch alle Domain Accounts. Das heisst, nur Gruppen werden dargestellt.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;stsadm -o setproperty -pn peoplepicker-searchadcustomfilter -pv &amp;quot;(objectcategory=Group)&amp;quot; -url &lt;a href="http://intranet.contoso.com"&gt;http://intranet.contoso.com&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/4617.image_5F00_564FCD2B.png"&gt;&lt;img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/5773.image_5F00_thumb_5F00_6F4B9D70.png" width="644" height="276" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Weitere und komplexere LDAP Filter sind natürlich auch möglich.&lt;/p&gt;  &lt;p&gt;Will man diesem Filter wieder entfernen, gilt folgender Befehl:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;stsadm.exe -o setproperty -pn peoplepicker-searchadcustomfilter -pv &amp;quot;&amp;quot; -url &lt;a href="http://intranet.contoso.com"&gt;http://intranet.contoso.com&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Viel Spass!&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Blog Post: Let Me Introduce Myblog</title><link>http://blog.trivadis.com/b/christofsenn/archive/2013/05/13/let-me-introduce-myblog.aspx</link><pubDate>Mon, 13 May 2013 06:29:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:181792</guid><dc:creator>Christof Senn</dc:creator><description>&lt;p&gt;Well, I won&amp;rsquo;t make it long: this blog is meant for sharing experience and ideas in the area of software development, mainly around topics like software architecture, design, and implementation. My commitment as a software development consultant will definitely affect what you will read in this space.&lt;/p&gt;  &lt;p&gt;So welcome to my blog! &amp;nbsp;I hope you will enjoy reading it :-)&lt;/p&gt;  &lt;p&gt;Christof&lt;/p&gt;</description></item><item><title>Blog: Christof Senn</title><link>http://blog.trivadis.com/b/christofsenn/default.aspx</link><pubDate>Tue, 07 May 2013 07:02:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:150</guid><dc:creator>admin</dc:creator><description /></item><item><title>Blog: Christopher Dickinson</title><link>http://blog.trivadis.com/b/chrisdickinson/default.aspx</link><pubDate>Tue, 07 May 2013 06:55:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:149</guid><dc:creator>admin</dc:creator><description /></item><item><title>User: Christof Senn</title><link>http://blog.trivadis.com/members/Christof-Senn/default.aspx</link><pubDate>Tue, 07 May 2013 05:01:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:5261</guid><dc:creator>Christof Senn</dc:creator><description /></item><item><title>User: ChrisDickinson</title><link>http://blog.trivadis.com/members/ChrisDickinson/default.aspx</link><pubDate>Sun, 05 May 2013 14:56:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:5260</guid><dc:creator>ChrisDickinson</dc:creator><description /></item><item><title>Blog Post: SharePoint 2013 BI Funktionen und Kerberos</title><link>http://blog.trivadis.com/b/imsms/archive/2013/05/03/sharepoint-2013-bi-funktionen-und-kerberos.aspx</link><pubDate>Fri, 03 May 2013 09:23:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:181787</guid><dc:creator>Stephan Jola</dc:creator><description>&lt;p&gt;Kerberos ist die Eierlegendewollmilchsau der Authentisierungsprotokolle. Gerade bei BI Funktionen in SharePoint wird man regelmäßig damit konfrontiert. Bei genauerem Hinsehen bin ich aber auf eine technische Limite gestoßen, welche ich euch nicht vorenthalten möchte.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/8244.image_5F00_5BB2F877.png"&gt;&lt;img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/6746.image_5F00_thumb_5F00_013C75D9.png" width="644" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Somit muss bei einem Farm Design mit BI Features sehr genau über die Art und Weise der BI Implementation nachgedacht werden.&lt;/p&gt;</description></item><item><title>Blog Post: SharePoint 2013 – Remote Blob Storage , Datenbankgrösse bis zur Unendlichkeit und noch viel Weiter?</title><link>http://blog.trivadis.com/b/imsms/archive/2013/05/02/sharepoint-2013-remote-blob-storage-datenbankgr-246-sse-bis-zur-unendlichkeit-und-noch-viel-weiter.aspx</link><pubDate>Thu, 02 May 2013 16:58:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:181785</guid><dc:creator>Stephan Jola</dc:creator><description>&lt;p&gt;   &lt;table cellspacing="0" cellpadding="2" width="640" border="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="200"&gt;&lt;a href="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/8625.RBS_2D00_Ranger_5F00_7E55D492.jpg"&gt;&lt;img title="RBS-Ranger" style="display:inline;background-image:none;" border="0" alt="RBS-Ranger" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/1374.RBS_2D00_Ranger_5F00_thumb_5F00_688BEC35.jpg" width="144" height="159" /&gt;&lt;/a&gt;&lt;/td&gt;          &lt;td valign="top" width="438"&gt;           &lt;p&gt;Vor einiger Zeit hatte ich schon mal einen kleinen Überblick über RBS verfasst &lt;a href="http://blog.trivadis.com/b/imsms/archive/2011/05/06/verordnen-sie-sharepoint-datenbanken-eine-di-228-t.aspx"&gt;“Verordnen Sie SharePoint Datenbanken eine Diät!”&lt;/a&gt;&lt;/p&gt;            &lt;p&gt;Mit SP15 auch bekannt als SharePoint 2013 ändern sich die Dinge ein wenig, Details dazu sind jetzt auch bekannt:&lt;/p&gt;            &lt;p&gt;&lt;em&gt;Plan for RBS in SharePoint 2013&lt;/em&gt; bringt es auf den Punkt &lt;a title="http://technet.microsoft.com/en-us/library/ff628583.aspx" href="http://technet.microsoft.com/en-us/library/ff628583.aspx"&gt;http://technet.microsoft.com/en-us/library/ff628583.aspx&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Aber dennoch ist sich MS irgendwie nicht ganz einig was die maximal unterstützte Grösse anbelangt:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/5504.image_5F00_4151A300.png"&gt;&lt;img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/6574.image_5F00_thumb_5F00_6ED2C2C3.png" width="644" height="88" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/1385.image_5F00_3C6EEF44.png"&gt;&lt;img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/4431.image_5F00_thumb_5F00_666EED6C.png" width="644" height="134" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/0207.image_5F00_4D06EA32.png"&gt;&lt;img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/4024.image_5F00_thumb_5F00_4BC25153.png" width="644" height="87" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;Also doch bis zur Unendlichkeit und noch viel Weiter?&lt;/p&gt;    &lt;p&gt;Für diejenigen welche das Thema neu ist, gibt es das Buch&amp;#160; “&lt;a title="RBS for Dummies" href="http://www.metalogix.com/Promotions/SharePoint-RBS-for-Dummies.aspx"&gt;RBS for Dummies&lt;/a&gt;”&lt;/p&gt;  &lt;p&gt;Folgende Hersteller bieten auch einen RBS Provider an:&lt;/p&gt;  &lt;p&gt;Metalogix&lt;/p&gt;  &lt;p&gt;AvePoint&lt;/p&gt;  &lt;p&gt;Dell Software (ehemals Quest: Storage Maximizer for SharePoint&amp;quot;)&lt;/p&gt;  &lt;p&gt;und viele mehr…&lt;/p&gt;</description></item><item><title>Blog Post: ITL Deadlocks (script)</title><link>http://blog.trivadis.com/b/christianantognini/archive/2013/05/01/itl-deadlocks-script.aspx</link><pubDate>Wed, 01 May 2013 06:07:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:181780</guid><dc:creator>Chris Antognini</dc:creator><description>A reader of this blog, VijayS, asked me to share the script I use to demo ITL deadlocks that I mentioned in this comment. Since other readers might be interested, here is the script. SET TERMOUT ON FEEDBACK ON VERIFY OFF SCAN ON ECHO ON @connect SELECT * FROM v$version WHERE rownum = 1; REM [...]</description></item><item><title>Blog Post: Data Vault Modeling - My first attempt to walk</title><link>http://blog.trivadis.com/b/danischnider/archive/2013/04/30/data-vault-modeling.aspx</link><pubDate>Tue, 30 Apr 2013 18:24:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:181778</guid><dc:creator>Dani Schnider</dc:creator><description>&lt;p&gt;In 2011 at the Oracle OpenWorld conference, I attended a presentation of &lt;a href="http://kentgraziano.com/category/data-vault/"&gt;Kent Graziano&lt;/a&gt; about Data Vault Modeling. It was the first time I heard of this special modeling method for Data Warehouses, and after this session I was a bit confused about these data models with hubs, links and satellites. Is it really something new, or is it more or less the same technique we are using for master data versioning using head and version tables? The idea of Data Vault Modeling seems to be interesting, but a lot of details were not clear for me. I ordered the book &lt;a href="http://www.amazon.de/The-Business-Data-Vault-Modeling/dp/143571914X/"&gt;The Business of Data Vault Modeling&lt;/a&gt; of Dan Linstedt, but this book was more confusing than helpful for me. After some discussions with several colleagues at Trivadis, my opinion was clear: Yes, it is more or less the same as our approach described in our &lt;a href="http://www.amazon.de/Data-Warehousing-mit-Oracle-Intelligence/dp/3446425624"&gt;DWH book&lt;/a&gt;. Problem solved, let&amp;#39;s go back to work...&lt;/p&gt;  &lt;p&gt;Last week at the &lt;a href="http://www.youtube.com/watch?v=K95NtsQd-iE"&gt;Trivadis TechEvent&lt;/a&gt;, there was another session about Data Vault Modeling, presented by &lt;a href="http://hanshultgren.wordpress.com/"&gt;Hans Hultgren&lt;/a&gt;. The presenation was just an introduction into this modeling technique, and most of the information were the same things I already heard two years ago in San Francisco. But after his presentation we had an interesting discussion about the similaritites and differences between Data Vault Modeling and our method of head and version tables. Although Hans has never heard of our approach before, he found it at least &amp;quot;interesting&amp;quot; - whatever that means. After a beer, I decided to do some homework and to design my first draft of a Data Vault Model - based on an example in our book. Here it is.&lt;/p&gt;  &lt;h2&gt;Master Data Versioning with Head and Version Tables&lt;/h2&gt;  &lt;p&gt;As described in our Trivadis BI Blueprints and in the book &amp;quot;&lt;a href="http://www.amazon.de/Data-Warehousing-mit-Oracle-Intelligence/dp/3446425624"&gt;Data Warehousing mit Oracle&lt;/a&gt;&amp;quot;, we use the following versioning method to store historical master data:&lt;/p&gt;  &lt;ul&gt;  &lt;li&gt;For each master data entity, a &lt;strong&gt;head table&lt;/strong&gt; is created. It contains a surrogate key, the business key (which is often the primary key of the source system entity) as well as all &amp;quot;static&amp;quot; business attributes that never change during the lifecycle of a record.&lt;/li&gt;  &lt;li&gt;All &amp;quot;dynamic&amp;quot; business attributes that may change over the time are stored in a &lt;strong&gt;version table&lt;/strong&gt;. The version table contains a foreign key to the master table, a validation range (effective and expriation date) and all attributes that can be changed.&lt;/li&gt;  &lt;li&gt;Relationships between entities are designed with foreign key relationships. A foreign key &lt;span style="text-decoration:underline;"&gt;always&lt;/span&gt; refers the head tables to decouple the versions of two entities. Depending on whether the relationship can change over time or not, the foreign key column is either stored in the head or in the version table. In the example below, a product can be moved to another product subcategory during its lifecycle, but a subcategory belongs always to the same product category.&lt;/li&gt;  &lt;/ul&gt;  &lt;p&gt;&lt;img style="float:left;" title="head_version_example.jpg" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-01-28-metablogapi/8424.head_5F00_version_5F00_example.jpg" border="0" alt="Example head/version tables" width="528" height="388" /&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h2&gt;Master Data Versioning with Data Vault Model&lt;/h2&gt;  &lt;p&gt;Let&amp;#39;s try to make a first draft for a Data Vault Model based on the example above. The head tables can be compared to &lt;strong&gt;Hubs&lt;/strong&gt;, the version tables to &lt;strong&gt;Satellites&lt;/strong&gt; in a Data Vault Model. The relationships are always designed as &lt;strong&gt;Links&lt;/strong&gt;, i.e.. many-to-many relationshiops between hubs.&lt;/p&gt;  &lt;ul&gt;  &lt;li&gt;For each master data entity, a &lt;strong&gt;Hub&lt;/strong&gt; is created. It contains a surrogate key and the business key (which is often the primary key of the source system entity), but no additional business attributes. The hubs in the example below are blue colored.&lt;/li&gt;  &lt;li&gt;All business attributes are stored in a &lt;strong&gt;Satellite&lt;/strong&gt;. There is no distinction between &amp;quot;static&amp;quot; and &amp;quot;dynamic&amp;quot; attributes. It is possible to have more than one Satellite for the same Hub, but in the example below, all business attributes are stored in one Satellite. The effective date is stored as a business attribute, too, but not the expiration date. The Satellite contains a foreign key to the corresponding Hub and is colored red in the example below.&lt;/li&gt;  &lt;li&gt;A &lt;strong&gt;Link&lt;/strong&gt; is used to store the relationships between the entities, in our case between products and subcategories as well as between subcategories and categories. Because a Link allows to store many-to-many relationships, the are no business constraints like &amp;quot;a product belongs to exactly one subcategory&amp;quot; visible in the data model. This increases the flexibility of the data model: if the business rule changes (e.g. a products can belong to more than one subcategories at the same time), no model change is required. Links are colored green in our example.&lt;/li&gt;  &lt;/ul&gt;  &lt;p&gt;&lt;img style="float:left;" title="data_vault_example.jpg" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-01-28-metablogapi/3527.data_5F00_vault_5F00_example.jpg" border="0" alt="Example Data Vault" width="480" height="600" /&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h2&gt;Similarities and Differences&lt;/h2&gt;  &lt;p&gt;Both modeling concepts - head and version tables as well as Data Vault Modeling - are used to design the Core model, i.e. the central data store used for data integration and data versioning. They are definitely not designed for end user queries. For this, data marts using Star Schemas or multidimensional OLAP cubes are typically used.&lt;/p&gt;  &lt;p&gt;What is common in both methods is a unique key for each business entity that is independent from a particular version (this is one of the main differences to the Slowly Changing Dimensions type 2 where a particular version is referred). In our approach, we use a head table for this, in a Data Vault Model, this is implemented with a Hub.&lt;/p&gt;  &lt;p&gt;Version tables and Satellites are not exactly the same. The version tables contain only the business attributes that can be changed during the time. Whenever at least one of the attributes is changed in the source system, a new version is created in the Data Warehouse, and the previous version is marked as outdated by updating the expiration date. This is different in a Satellite. Here, a new version is create for every change, too. But there is no expiration date, only a load date an propably an effective date as a business attribute.&lt;/p&gt;  &lt;p&gt;Another difference is that the static attributes, i.e. business attributes that never change in the source system, are stored in the Satellite as well. In Data Vault Modeling, there is no distinction between static or dynamic attributes - or even relationships. A business attribute is a business attribute - that&amp;#39;s it.&lt;/p&gt;  &lt;p&gt;Relationships in a Data Vault Model are always many-to-many relationships and stored in Links. This increases the complexity of the data model, but allows more flexibility because new business rules can be implemented without changing the data model. This is one of the main reasons for Data Vault Modeling: In agile environment with many change requests is can be very useful to have a flexible data model that can be enhanced easily. This is also the case for new attributes that are just included with additional Satellites.&lt;/p&gt;  &lt;p&gt;What I never read or heard about yet is the complexity of the ETL processes. From my current point of view it makes no difference whether to load source data into head and version tables or into a Data Vault. A kind of delta determination to detect changed attributes must be implemented in both models. But even if it would be easier to load data into a Data Vault, it is more complex and expensive to load the Data Marts from a Data Vault because the queries to determine the correct version of each Satellite is not trivial. But these are only assumptions. We will propably see in the future what the benefits and restrictions of Data Vault Modeling will be.&lt;/p&gt;</description></item><item><title>Blog Post: SharePoint 2013 und Reporting Services</title><link>http://blog.trivadis.com/b/imsms/archive/2013/04/30/sharepoint-2013-und-reporting-services.aspx</link><pubDate>Tue, 30 Apr 2013 09:38:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:181776</guid><dc:creator>Stephan Jola</dc:creator><description>&lt;p&gt;Mit der neuen SharePoint 2013 Version hat sich einiges geändert. Auch die Implementation und Anbindung von SQL Reporting Services. Damit das bei der Planung und Umsetzung keine Verwirrung gibt, welche SharePoint Version mit welcher SRSS (&lt;u&gt;S&lt;/u&gt;QL &lt;u&gt;R&lt;/u&gt;eporting &lt;u&gt;S&lt;/u&gt;ervices for &lt;u&gt;S&lt;/u&gt;harePoint) von Microsoft Supported ist, empfehlen wir folgenden Artikel zu studieren.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg492257.aspx"&gt;Supported Combinations of SharePoint and Reporting Services Components&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/8055.image_5F00_5A597188.png"&gt;&lt;img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/3073.image_5F00_thumb_5F00_71F05D54.png" width="644" height="106" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Blog Post: SharePoint 2013–Follow me</title><link>http://blog.trivadis.com/b/imsms/archive/2013/04/24/sharepoint-2013-follow-me.aspx</link><pubDate>Wed, 24 Apr 2013 15:46:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:181772</guid><dc:creator>Stephan Jola</dc:creator><description>&lt;p&gt;Mit SharePoint 2013 bietet sich an, allem und jedem zu folgen. In unserem Beispiel haben wir eine Library mit mehreren Dokumenten. Jetzt will ich einem bestimmten Dokument folgen.&lt;/p&gt;  &lt;p&gt;Nichts leichter als das:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/5611.image_5F00_19F9A493.png"&gt;&lt;img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/0246.image_5F00_thumb_5F00_67299E1E.png" width="644" height="231" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Änderungen und Updates bekomme ich also Zeitnah mit.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/4643.image_5F00_5F31FBBC.png"&gt;&lt;img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/1325.image_5F00_thumb_5F00_573A595A.png" width="644" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Aber, was wenn der Owner nicht will, dass es die Following Funktion nicht gibt?&lt;/p&gt;  &lt;p&gt;Ohne Visual Studio Solution geht das, aber nur auf Site Ebene. In der Site Settings das Feature “Following Content” deaktivieren.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/0743.image_5F00_64A06C60.png"&gt;&lt;img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/3580.image_5F00_thumb_5F00_0F78D073.png" width="644" height="45" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Danach kann ich das Follow Item nicht mehr aufrufen.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/2500.image_5F00_3646E6B3.png"&gt;&lt;img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="http://blog.trivadis.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-57-metablogapi/2084.image_5F00_thumb_5F00_2AB12974.png" width="644" height="174" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ohne über den Sinn und Zweck zu philosophieren, diese Funktion abzuschalten. Nicht vergessen zu testen und validieren ob es noch ungewünschte Seiteneffekte hat… Man weiss ja nie.&lt;/p&gt;  &lt;p&gt;Viel Spass!&lt;/p&gt;</description></item><item><title>Blog Post: Adding an own Array.prototype breaks SharePoint 2013 JavaScript</title><link>http://blog.trivadis.com/b/martinloitzl/archive/2013/04/24/adding-an-own-array-prototype-breaks-sharepoint-2013-javascript.aspx</link><pubDate>Wed, 24 Apr 2013 14:37:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:181769</guid><dc:creator>Martin Loitzl</dc:creator><description>Recently I tried to do some functional enhancements to the Array.prototype within a SharePoint-hosted App&amp;#8230; no way. After adding the .js to the page, errors occur in other JavaScript files in SharePoint 2013. It works perfectly in in plain ASP &amp;#8230; &lt;a href="http://blog.loitzl.com/2013/04/24/adding-an-own-array-prototype-breaks-sharepoint-2013-javascript/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;</description></item><item><title>User: madhulika.mitra</title><link>http://blog.trivadis.com/members/madhulika.mitra/default.aspx</link><pubDate>Wed, 24 Apr 2013 10:55:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:5259</guid><dc:creator>madhulika.mitra</dc:creator><description /></item><item><title>Blog Post: DOAG SIG Security</title><link>http://blog.trivadis.com/b/stefanoehrli/archive/2013/04/23/doag-sig-security.aspx</link><pubDate>Tue, 23 Apr 2013 17:23:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:181767</guid><dc:creator>Stefan Oehrli</dc:creator><description>Just a couple of hours ago I&amp;#8217;ve lecture a presentation about the latest Generation of Database Technology at the DOAG SIG Security in München. It is a sneak preview on a few upcoming security improvements. Unfortunately I do not yet have the permission to provide the presentation for download. But I will make the download [...]</description></item><item><title>User: Aleksandar Simic</title><link>http://blog.trivadis.com/members/Aleksandar/default.aspx</link><pubDate>Tue, 23 Apr 2013 07:19:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:5258</guid><dc:creator>Aleksandar Simic</dc:creator><description /></item></channel></rss>