<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-32937725</atom:id><lastBuildDate>Wed, 18 Jan 2012 10:25:00 +0000</lastBuildDate><category>My Sites</category><category>Architecture</category><category>SharePoint 2010 ECM</category><category>Sharepoint 2007 Configuration</category><category>Designer</category><category>Office</category><category>ECM</category><category>Business Continuity</category><category>Online</category><category>Migration</category><category>SharePoint</category><category>Customization</category><category>AJAX</category><category>Sharepoint 2007 webparts</category><category>Design</category><category>Sharepoint 2007 Other</category><category>Word Automation</category><category>SharePoint 2010</category><category>data connection</category><category>SharePoint 2007 Search</category><category>Web Content Management</category><category>Sharepoint 2007 BI</category><category>data sources</category><category>Configuration</category><category>Sharepoint 2007 Records Management</category><category>Development</category><category>SPC09 Las Vegas</category><category>Sharepoint 2007 installation</category><category>SP2010</category><category>powershell</category><category>Sharepoint 2007 Customization</category><category>SharePoint architecture</category><category>Sharepoint 2007 Coding</category><category>facebook social plugin</category><category>TripleNeo</category><category>Tools</category><category>Authentication</category><category>Office 2007</category><category>SharePoint 2010 Web Content Management</category><category>Monitoring</category><category>SharePoint 2010 Architecture</category><category>Blog</category><category>Sharepoint 2003-2007 migration</category><category>Social Networking</category><category>InfoPath</category><category>Issues</category><category>Excel</category><title>Servé's SharePoint Blog</title><description>This is my blog about SharePoint 2010,2007 and 2003.</description><link>http://hermansberghem.blogspot.com/</link><managingEditor>noreply@blogger.com (Servé Hermans)</managingEditor><generator>Blogger</generator><openSearch:totalResults>112</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/HermansBerghem" /><feedburner:info uri="hermansberghem" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><image><link>http://www.tripleneo.nl</link><url>http://lh6.ggpht.com/_lMdXhBkQ6IA/TSTO9pgv5LI/AAAAAAAACfo/dVNennenUSI/tripleneo%20144logo.png</url><title>TripleNeo</title></image><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-6610023058706960820</guid><pubDate>Wed, 18 Jan 2012 10:25:00 +0000</pubDate><atom:updated>2012-01-18T11:25:00.542+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Authentication</category><category domain="http://www.blogger.com/atom/ns#">data connection</category><category domain="http://www.blogger.com/atom/ns#">SharePoint 2010</category><category domain="http://www.blogger.com/atom/ns#">SharePoint</category><category domain="http://www.blogger.com/atom/ns#">data sources</category><title>Authentication setting: where are you?</title><description>When you are planning to consume data from all kinds of data sources you need to understand why, where and what to specify for authentication settings. The authentication landscape is fairly complex even from an end user perspective. There are many places where you can specify or create connections and finding them is not always easy: rich office clients, authoring tools, browser, service applications, secure store, BCS, external content types and web applications all play a part in the outcome of the mapped set of credentials which is accessing the data source.&lt;br /&gt;
&lt;h2&gt; Why is this important?&lt;/h2&gt;Users do not care what you have specified on the SharePoint side. They already have this nice Excel sheet connected to a SQL database and they have heard that you can render it on a SharePoint site as well. But somehow it doesn’t seem to work. What will you tell your end users? How are you going to educate them?&lt;br /&gt;
To get a better understanding of authentication settings we need to make a difference between getting data from within client applications and from within a browser on a SharePoint site or through a SharePoint Service.&lt;br /&gt;
Let us focus on the client side.&lt;br /&gt;
&lt;h2&gt; End user tools&lt;/h2&gt;The end user has a number of client tools available which are capable of fetching data from data sources:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Rich office clients&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Word&lt;/li&gt;
&lt;li&gt;Outlook&lt;/li&gt;
&lt;li&gt;SharePoint Workspace&lt;/li&gt;
&lt;li&gt;Excel&lt;/li&gt;
&lt;li&gt;InfoPath&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;BI Authoring tools&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Excel with or without PowerPivot for Excel&lt;/li&gt;
&lt;li&gt;Report Builder 3&lt;/li&gt;
&lt;li&gt;PerformancePoint Dashboard Designer&lt;/li&gt;
&lt;li&gt;SharePoint Designer 2010&lt;/li&gt;
&lt;li&gt;Visio 2010&lt;/li&gt;
&lt;li&gt;Business Intelligence Developer Studio&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;h2&gt; Data connections&lt;/h2&gt;Secondly, there are various ways of defining external sources:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Embedded data connections&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Like in Excel you create them through the Ribbon&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;External data connections&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;.odc or .udc files you have saved to a SharePoint data connection library&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;External content types&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Running on the client through the BDC runtime&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;h2&gt; Data sources&lt;/h2&gt;Finally, there are various data sources to fetch data from. To name a few:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Databases&lt;/li&gt;
&lt;li&gt;WCF services&lt;/li&gt;
&lt;li&gt;Web services&lt;/li&gt;
&lt;li&gt;Custom data sources&lt;/li&gt;
&lt;li&gt;.Net Connectivity Assemblies&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt; External content types&lt;/h2&gt;Let us focus a bit on External Content types. If you need to get data from an external source you may want to use External content types in case you would like to reuse the data in various places or need basic CRUD actions on the data itself. A tool like SharePoint Designer 2010 may be used to define these External Content Types. I will not describe the various steps you need to perform but instead focus on the different authentication settings.&lt;br /&gt;
When configuring External content types the authentication mode is selected. Each &lt;strong&gt;authentication mode&lt;/strong&gt; represents a different way of processing incoming user credentials and mapping them to a set of credentials for the external content type.&lt;br /&gt;
To simplify matters the following list shows you how the various settings map to what:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Mapped to Impersonated Identity&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Digest credentials&lt;/li&gt;
&lt;li&gt;External Credentials&lt;/li&gt;
&lt;li&gt;RDBCredentials&lt;/li&gt;
&lt;li&gt;Windows credentials&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Mapped to Users Identity&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Pass through&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Mapped to BDC Identity&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Revert to self&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;h2&gt; Impersonated Identity&lt;/h2&gt;The first four settings all map to the impersonated identity. It basically means that the user credentials will be replaced by another credential set. And that is where the Secure Store plays its part. The Secure Store allows you to define so called target applications.&lt;br /&gt;
A &lt;strong&gt;target application&lt;/strong&gt; defines a mapping between a (group of) member(s) to a credential set. The credential set can be a Windows Identity or an External Identity. A member can be the user account or for instance an active directory group or in some cases the application pool account of a SharePoint service.&lt;br /&gt;
&lt;h2&gt; Pass through&lt;/h2&gt;Meaning that the users identity will be used to access the data source. In case the data source is more than one server hop away from the user, this will fail as the user identity cannot be &lt;strong&gt;delegated&lt;/strong&gt; to the data source. Another option would be for instance to use Kerberos authentication.&lt;br /&gt;
&lt;h2&gt; Revert to self&lt;/h2&gt;It means that the user identity will be replaced by the BDC identity which is the identity the BDC runtime is running on the client side. In browser based scenarios this would often result in the application pool id of the BCS service application.&lt;br /&gt;
What we just described are the &lt;strong&gt;client side authentication settings&lt;/strong&gt; for External content types. These content types may surface in for instance Outlook. &lt;br /&gt;
In most BI authoring scenarios however, you are not using External Content Types. Instead you are connecting your client tools to data sources like SQL Server Analysis cubes, SQL databases or Web Services.&lt;br /&gt;
It greatly depends which tool you are using, which service and if you are doing this client side only or are planning to use it on SharePoint sites as well.&lt;br /&gt;
&lt;h2&gt; Embedded vs. external connection files&lt;/h2&gt;In all those cases your data connection can be defined as embedded or as an external file. What does that mean? Embedded means that you are using the various client applications to define data sources which are saved as part of your file. The file could be Excel or perhaps Visio etc. External means that the file pulls the data connection info from another file, called the ODC or UDC file. Often there are various ways of “externalizing” existing embedded connections to external ones. Obviously, the benefit of external ones are reusability amongst others.&lt;br /&gt;
&lt;h2&gt; Classified Intel: Excel Services&lt;/h2&gt;Take for instance Excel. If you connect your Excel sheet to an external data source you can do so through the Ribbon -&amp;gt; Data -&amp;gt; &lt;strong&gt;Get External Data&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://lh4.ggpht.com/-69fk_-5DcMM/TxP47av76NI/AAAAAAAACqM/FZlayagl1jA/s1600-h/image%25255B2%25255D.png"&gt;&lt;img alt="image" border="0" height="195" src="http://lh3.ggpht.com/-iXTfE2GfkTM/TxP47_Cg8_I/AAAAAAAACqQ/DDiogkuNBL8/image_thumb.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;
If you connect to a SQL database for instance, a wizard will guide you through the configuration steps. Generally it means specifying a server name, a database name, a table and that’s it. The most common &lt;strong&gt;mistake:&lt;/strong&gt; although this works for you in the client tool, it most likely won’t work in the browser.&lt;br /&gt;
&lt;a href="http://lh4.ggpht.com/-EsLp_bKolW0/TxP48uDSplI/AAAAAAAACqY/1r0a8W0NeUg/s1600-h/image%25255B5%25255D.png"&gt;&lt;img alt="image" border="0" height="205" src="http://lh3.ggpht.com/-j0fJVNSrpF8/TxP49KHj7JI/AAAAAAAACqc/07p6ZniQ3vU/image_thumb%25255B1%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;
If you render the same sheet with Excel services you would need to specific the settings through the button you can see in the Screenshot:&lt;strong&gt; Authentication settings&lt;/strong&gt;. I will describe how that works later on, but keep in mind that this is the easiest example!&lt;br /&gt;
It already becomes different when using for instance Excel with PowerPivot. And if you would be using InfoPath than specifying these settings will keep you looking as there is no such button and you need to export the connection file, modify the XML and so forth. &lt;br /&gt;
For now we are talking client side only and it is important to remember that this kind of setting is called embedded.&lt;br /&gt;
Now, it may be that you are consolidating connection settings into a SharePoint connection library. In that case you can&lt;strong&gt; export the connection&lt;/strong&gt; we just made in Excel by again using the Ribbon -&amp;gt; Data -&amp;gt; Connections -&amp;gt; select your connection -&amp;gt; Properties -&amp;gt; Select Definition Tab -&amp;gt; Choose button Export Connection File.&lt;br /&gt;
You can store the connection file in a SharePoint library for use. Later on you will see that you need to trust connection libraries to be used by SharePoint. But for now, we are ok with that.&lt;br /&gt;
&lt;h2&gt; Prepare for lift off: PowerPivot for Excel&lt;/h2&gt;If you have installed PowerPivot for Excel than you will notice that the PowerPivot window has its own Get External Data part in the Ribbon:&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/-NzJ-TMHoXkQ/TxP49wD2zaI/AAAAAAAACqk/yqHFPCyBHv4/s1600-h/image%25255B8%25255D.png"&gt;&lt;img alt="image" border="0" height="114" src="http://lh5.ggpht.com/-Lg_fulRP6a0/TxP4-b54HjI/AAAAAAAACqw/Tcl4-5Jpx-4/image_thumb%25255B2%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;
If you would like to pull info from Analysis Services for instance you will be prompted for authentication settings again. Keep in mind that this is authentication against the cube not the database.&lt;br /&gt;
&lt;a href="http://lh6.ggpht.com/-ewpuDQW4NCU/TxP4_FGCy3I/AAAAAAAACq0/Eh2u-SVgaSs/s1600-h/image%25255B11%25255D.png"&gt;&lt;img alt="image" border="0" height="244" src="http://lh3.ggpht.com/-8DffNbHhSvg/TxP4_s91OqI/AAAAAAAACq4/eCq0QOtRtNM/image_thumb%25255B3%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="236" /&gt;&lt;/a&gt;&lt;br /&gt;
Now this is information that will be used when rendering it on the client. If you would like to publish it to SharePoint and would like to use PowerPivot for SharePoint to render the pivottable, then this information may or may not be used. Instead you would need to define authentication settings through the browser:&lt;br /&gt;
&lt;a href="http://lh4.ggpht.com/-196BHy7Yzqo/TxP5AaM7XUI/AAAAAAAACrE/vAZOB-JHxdY/s1600-h/image%25255B14%25255D.png"&gt;&lt;img alt="image" border="0" height="238" src="http://lh5.ggpht.com/-Tz4aeRtJ6d8/TxP5A4ZyQRI/AAAAAAAACrQ/P7wnKLL30A8/image_thumb%25255B4%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt; Data refresh for PowerPivot&lt;/h2&gt;&lt;strong&gt;Credentials&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://lh6.ggpht.com/-evUq-R86b0E/TxP5BrKoicI/AAAAAAAACrc/WmCQpq_MAxc/s1600-h/image%25255B17%25255D.png"&gt;&lt;img alt="image" border="0" height="34" src="http://lh6.ggpht.com/-KD1YjRXsRRA/TxP5C0DXmAI/AAAAAAAACrg/I5UlGb5YVc0/image_thumb%25255B5%25255D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;Data sources&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://lh4.ggpht.com/-0xbjSbHOyi4/TxP5DehfJ5I/AAAAAAAACro/uODOvGrv-jM/s1600-h/image%25255B20%25255D.png"&gt;&lt;img alt="image" border="0" height="80" src="http://lh3.ggpht.com/-3ycLN_eKnkQ/TxP5D8bcy2I/AAAAAAAACrw/pxCxAoQz7iU/image_thumb%25255B6%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt; Refresh on behalf of the user&lt;/h2&gt;As you can see in the screenshots it basically tells SharePoint that whenever the user clicks on the refresh button in the browser, which authentication setting should be used: the account which has been specified as part of the PowerPivot for SharePoint&lt;strong&gt; Service Application&lt;/strong&gt;. Or a predefined Windows user credential or the credentials specified by a target application ID. As I have explained earlier the target application ID (SSS ID) is a mapping between members and a set of credentials. If you are using an SSS ID here, PowerPivot for SharePoint will look up that application in the Secure Store and next will look for a member which matches the current user. If it finds that current user as a member it will map it to a different set of credentials.&lt;br /&gt;
&lt;h2&gt; Refresh on behalf of SharePoint&lt;/h2&gt;The other section is quite similar to the previous one and will be used by SharePoint to refresh data according to a schedule. The difference is that the first setting is referring to the credentials contained in the workbook. Meaning that in this case the settings you have defined as a user in the Excel workbook – PowerPivot window, will be used.&lt;br /&gt;
&lt;h2&gt; On the server side it is different&lt;/h2&gt;If you have made it this far you are probably interested in how things are configured on the SharePoint site. The answer is: it depends on the Service Application you are using. Still, most authentication settings and service applications share a similar model:&lt;br /&gt;
&lt;h2&gt; Connection settings&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;NONE&lt;/strong&gt;: If a server side connection setting specifies none then this means that SharePoint will use the identity of the SA. In most cases this is the Application pool identity the Service App is running in.&amp;nbsp; The important thing here is that you can specify which SA’s use which target application of the Secure Store in those cases where none is specified. The general idea is to map the application pool account to an unattended service account which will have access on the data source. You don’t want to add the application pool identities to the data sources. Instead you create a target application for each Service Application where the application pool identity is the member and the set credentials are the so called unattended service account. You will add the unattended service account (read account) access to your data source. This is a very useful scenario and often used for BI solutions. In most BI solutions you don’t want to query complex cubes on a per user identity. It would definitely require large amounts of memory on the SharePoint server as each query result will be cached for each user. In those cases you are using the unattended service account which will greatly reduce the cache and improve performance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows credentials&lt;/strong&gt;: again, if you have Kerberos enabled this may be useful for you but otherwise you might find yourself facing a double hop scenario and windows cannot pass your credentials a second time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSS ID&lt;/strong&gt;: a scenario where you actually know who has access to the data source, for instance if you have a special BI group of readers defined. In that case you create a target application at the Secure Store and add the AD group as a member and a set of credentials as the account which actually has access to the data source. Very useful for all kinds of locked down situations.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt; Complex?&lt;/h2&gt;Do you get it? There are many places to define authentication and you have to carefully plan those when rolling out advanced features. Below you will find an example. You will be surprised!&lt;br /&gt;
&lt;strong&gt;Summarized example for Excel and PowerPivot&lt;/strong&gt;:&lt;br /&gt;
The example below will show you where you can specific authentication settings. Together with the explanation I have given you in this blog article you should be able to understand which authentication setting is applicable when. The example also shows you Excel and PowerPivot only. For other client tools and service applications it is different but at the same time similar patterns are applicable.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Excel:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Data tab in the Ribbon&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Client side settings&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Windows credentials&lt;/li&gt;
&lt;li&gt;Database account&lt;/li&gt;
&lt;li&gt;Excel services settings&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;None: no authentication (meaning that the Excel Services unattended target application ID will be used)&lt;/li&gt;
&lt;li&gt;Windows authentication (useful when using Kerberos)&lt;/li&gt;
&lt;li&gt;SSS ID (use the mapping as defined by the target application within the Secure Store)&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;PowerPivot for Excel&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Data tab in the Ribbon&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Client side settings&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Windows credentials&lt;/li&gt;
&lt;li&gt;Database account&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;SharePoint&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Excel services Service App&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Unattended target application ID&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;PowerPivot for SharePoint Service App&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Unattended target application ID (so called, as specified by administrator)&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Excel sheet&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;PowerPivot refresh schedule&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;On user behalf&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;As specified by admin&lt;/li&gt;
&lt;li&gt;Specific windows credentials&lt;/li&gt;
&lt;li&gt;SSS ID&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Automatic according to schedule&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;As specified by workbook&lt;/li&gt;
&lt;li&gt;Specific user account&lt;/li&gt;
&lt;li&gt;SSS ID&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;h2&gt; Mini debriefing&lt;/h2&gt;&lt;strong&gt;What about the other Service Applications?&lt;/strong&gt;The pattern for most other Service Applications is the same:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Either you are directly connecting to the data source: for instance from the client tools like Excel&lt;/li&gt;
&lt;li&gt;Or you are connecting through an External Content Type&lt;/li&gt;
&lt;li&gt;Or a SharePoint service is connecting for you either by passing the credentials, using a specific target application or by falling back to a so called unattended target application. In those cases the Secure Store determines the target credentials which will be used to access the data source.&lt;/li&gt;
&lt;/ul&gt;&lt;strong&gt;What about the other Client applications?&lt;/strong&gt;Keep in mind that Client applications like Excel and InfoPath may offer the same functionality for specifying the authentication settings but in different places. Or sometimes completely hidden for the end user. Take for instance InfoPath. You are able to define a data connection but no SSS ID. In that case you need to export the connection to an external file, edit it with notepad, uncomment the lines about authentication and voila you are able to enter a SSS ID.&lt;br /&gt;
It is almost impossible to completely cover all differences at once but patterns are similar and MSDN will help as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-6610023058706960820?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=k4orZAE-Vlw:OIVwGn7BuNk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=k4orZAE-Vlw:OIVwGn7BuNk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=k4orZAE-Vlw:OIVwGn7BuNk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=k4orZAE-Vlw:OIVwGn7BuNk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=k4orZAE-Vlw:OIVwGn7BuNk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=k4orZAE-Vlw:OIVwGn7BuNk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=k4orZAE-Vlw:OIVwGn7BuNk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=k4orZAE-Vlw:OIVwGn7BuNk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=k4orZAE-Vlw:OIVwGn7BuNk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=k4orZAE-Vlw:OIVwGn7BuNk:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=k4orZAE-Vlw:OIVwGn7BuNk:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=k4orZAE-Vlw:OIVwGn7BuNk:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=k4orZAE-Vlw:OIVwGn7BuNk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=k4orZAE-Vlw:OIVwGn7BuNk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=k4orZAE-Vlw:OIVwGn7BuNk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/k4orZAE-Vlw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/k4orZAE-Vlw/authentication-setting-where-are-you.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-iXTfE2GfkTM/TxP47_Cg8_I/AAAAAAAACqQ/DDiogkuNBL8/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><feedburner:origLink>http://hermansberghem.blogspot.com/2012/01/authentication-setting-where-are-you.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-3632681079247788736</guid><pubDate>Thu, 01 Dec 2011 17:30:00 +0000</pubDate><atom:updated>2011-12-01T18:30:00.453+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SharePoint</category><category domain="http://www.blogger.com/atom/ns#">Issues</category><category domain="http://www.blogger.com/atom/ns#">Word Automation</category><title>Could not load file from input library: Word Automation</title><description>Today I was struggling a little bit with &lt;b&gt;Word Automation Services&lt;/b&gt;. I am trying to test Word Automation services and see how it affects memory and cpu utilization. For that purpose I have created a shared documents library on a team site and pulled a few lines of C# code to create a conversionjob from the Web like you can see below. I extended the script to output all Errorcodes and Errormessage from the so called &lt;b&gt;FailedItems&lt;/b&gt; which is a collection you can access through the Status object.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-OHIUzQj3bNQ/TtefExZTm_I/AAAAAAAACpI/dqz_KbGHdHs/s1600-h/image%25255B3%25255D.png"&gt;&lt;img alt="image" border="0" height="133" src="http://lh5.ggpht.com/-7e--4s6JvqE/TtefFTXMWXI/AAAAAAAACpM/zxoEteZK6-0/image_thumb%25255B1%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="477" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/-7E2WWyvbv9E/TtefF7zeBdI/AAAAAAAACpY/hSmprCd0pvo/s1600-h/image%25255B7%25255D.png"&gt;&lt;img alt="image" border="0" height="182" src="http://lh5.ggpht.com/-WOq2aRsJrAk/TtefG3_agyI/AAAAAAAACpg/2rEy-tKOm3o/image_thumb%25255B3%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="624" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;The error&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;During testing I received an &lt;b&gt;ErrorCode 6&lt;/b&gt; and the ErrorMessage: &lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: orange;"&gt;&lt;br /&gt;Could not load file from the input library&lt;/span&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;According to this link: &lt;a href="http://technet.microsoft.com/en-us/library/ff808318.aspx#FailedConversion"&gt;http://technet.microsoft.com/en-us/library/ff808318.aspx#FailedConversion&lt;/a&gt; there are various ways of troubleshooting issues but the one I just mentioned is not described.&lt;br /&gt;After some more web searches I discovered an article which states that Word automation uses one core for each active conversion job. The default setting is 1 and you need to make sure that you have at least one free core available. Well, that didn’t seem the issue. More interesting is the fact that the article states that if Word Automation Services is not able to complete your request like in situations where your server is too busy, it will yield the same error message but with a different Error code (3). &lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;The root cause&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;In the end I discovered by using the ULS viewer and by running the Word automation services on just one server that the application pool account which is running the Word Automation services, did not have &lt;b&gt;access rights&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;The Solution&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Run SharePoint Management Shell with the following:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #999999; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;$w = Get-SPWebApplication –Identity &lt;a href="http://yourwebapplicationurl/"&gt;http://yourwebapplicationurl&lt;/a&gt;&lt;br /&gt;$w.GrantAccessToProcessIdentity(“domain\yourapppoolaccountrunnigWordAutomation”)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you are not sure which account is running Word automation then I would suggest to go to:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Central Admin –&amp;gt; Application Management –&amp;gt; Manage Service Applications&lt;/li&gt;
&lt;li&gt;Manage Service Applications –&amp;gt; Select Word Automation Services and click Properties in the Ribbon&lt;/li&gt;
&lt;li&gt;Write down the Application pool&lt;/li&gt;
&lt;li&gt;Browse to Security –&amp;gt; Configure Service Accounts&lt;/li&gt;
&lt;li&gt;Select from the drop down the Service Application pool you have written down previously&lt;/li&gt;
&lt;li&gt;Write down the Account that shows beneath the drop down&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-3632681079247788736?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yfWLJewq47M:aZC7Cv9jZs4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yfWLJewq47M:aZC7Cv9jZs4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yfWLJewq47M:aZC7Cv9jZs4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yfWLJewq47M:aZC7Cv9jZs4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=yfWLJewq47M:aZC7Cv9jZs4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yfWLJewq47M:aZC7Cv9jZs4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yfWLJewq47M:aZC7Cv9jZs4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=yfWLJewq47M:aZC7Cv9jZs4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yfWLJewq47M:aZC7Cv9jZs4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yfWLJewq47M:aZC7Cv9jZs4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=yfWLJewq47M:aZC7Cv9jZs4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yfWLJewq47M:aZC7Cv9jZs4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yfWLJewq47M:aZC7Cv9jZs4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=yfWLJewq47M:aZC7Cv9jZs4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yfWLJewq47M:aZC7Cv9jZs4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/yfWLJewq47M" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/yfWLJewq47M/could-not-load-file-from-input-library.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-7e--4s6JvqE/TtefFTXMWXI/AAAAAAAACpM/zxoEteZK6-0/s72-c/image_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><feedburner:origLink>http://hermansberghem.blogspot.com/2011/12/could-not-load-file-from-input-library.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-4428011174891320014</guid><pubDate>Fri, 25 Nov 2011 11:37:00 +0000</pubDate><atom:updated>2011-11-30T21:11:24.976+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Customization</category><category domain="http://www.blogger.com/atom/ns#">SharePoint 2010</category><category domain="http://www.blogger.com/atom/ns#">Issues</category><category domain="http://www.blogger.com/atom/ns#">Design</category><title>AlternateCSSUrl + Save site to template = AlternateHeader issue</title><description>Last week I was experiencing broken foundation pages or malformed top navigation bars. In my case this was related to having a custom (aka Saved) site template and the AlternateCSSUrl setting.&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;br /&gt;The AlternateCSSUrl setting&lt;/span&gt;&lt;br /&gt;Most companies have a specific&amp;nbsp;corporate identity and as a SharePoint designer they ask you to change the look and feel of the teamsites to adhere to that identity. In some cases people use themes to implement the color scheme and main font family. Something which is very useful as it also creates the gradients for you. In other cases this might not be enough and additional CSS is required to change for instance the position, background images, line spacing etcetera.&lt;br /&gt;
&lt;br /&gt;There are various ways to attach your custom CSS to the page. Some people are activating the Publishing Infrastructure and Publishing features. This results in a Masterpage link on the Site settings page. On that page you are able to enter an Alternate CSS link. That link will be automatically added to every page by the CSS link control which is part of the default master page. It will be added after your (themed) Core css files.&lt;br /&gt;&lt;br /&gt;But what if you are not using the publishing features? In those cases I would definitely not recommend editing the master page. There are two options:&lt;br /&gt;&lt;br /&gt;- Build a FeatureActivated event receiver which will set the AlternateCSSUrl property and apply the theme. Do not forget to implement the FeatureDeactivating feature as well.&lt;br /&gt;&lt;br /&gt;- Build a custom action which is a scriptlink and add a scriptblock which will include the CSS in the header using javascript for instance.&lt;br /&gt;&lt;br /&gt;Personally I like the first option most and use the second one for including for instance CSS that is required by JQueryUI. The disadvantage of the second one is that it will be injected, which might be noticeable.&lt;br /&gt;&lt;br /&gt;If you are implementing the first method then you will need an event receiver. The Event Receiver would look like:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-FSehEv7TnU8/Ts994zD7YMI/AAAAAAAACoo/1_k48qYCssY/s1600-h/image%25255B17%25255D.png"&gt;&lt;img alt="image" border="0" height="217" src="http://lh6.ggpht.com/-SGRgg5GACHE/Ts995rMYXII/AAAAAAAACow/Aurvs4rBQWY/image_thumb%25255B14%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="566" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Save Site as template&lt;/span&gt;&lt;br /&gt;Assume that you have created a new site using an out of the box Teamsite template and the solution that applies a new theme and sets an alternateCSSUrl using a feature event receiver and feature stapling. Everything looks fine and you start configuring your site. At some point you would like to save the current site as a template in order to create subsites using that template.&lt;br /&gt;&lt;br /&gt;You browse to site settings and select the option Save Site to template. This link will be hidden as soon as you are using the publishing features and it is not recommended to save templates of publishing sites.&lt;br /&gt;&lt;br /&gt;The saved template will be stored in the Solutions gallery of the site.&lt;br /&gt;&lt;br /&gt;Now create a subsite using the newly saved site template. Browse to Site Actions -&amp;gt; New site -&amp;gt; select your custom site template, enter a subsite name, URL name and press OK. The subsite will be created and once that process finishes you will be redirected to the homepage of the newly created subsite.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;The issue&lt;/span&gt;&lt;br /&gt;If you have followed the steps as described above you have a newly created subsite. Try to browse to the Site settings page. You may experience one of the following symptoms:&lt;br /&gt;&lt;br /&gt;- the header shows but nothing beneath the top navigation&lt;br /&gt;&lt;br /&gt;- you see a site settings page but there CSS code is displayed in the top navigation bar&lt;br /&gt;&lt;br /&gt;- you encounter an unexpected error (most likely)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;What has happened?&lt;/span&gt;&lt;br /&gt;If you try to render for instance the Site Settings page, the page will try to render the top navigation. As the Site Settings page is a foundation page, the top navigation is different than other pages from the _layouts directory which are related to the publishing features like Masterpage or Welcome page links.&lt;br /&gt;&lt;br /&gt;The Settings.aspx page uses the v4.master unless you have specified otherwise. &lt;br /&gt;&lt;br /&gt;The v4.master page defines a contentplaceholder for the top navigation. Inside the placeholder you will see a ASP:Menu control for rendering the top navigation. However, the contents of the placeholder control will be overridden by the settings.aspx page. &lt;br /&gt;In the settings.aspx page you will see that instead of the ASP:Menu control an user control will be used called LinkSection.ascx. This control you can find in the ControlTemplates folder on each SharePoint server.&lt;br /&gt;&lt;br /&gt;The LinkSection control checks a web property called AlternateHeader. According to MSDN the AlternateHeader can be used to define an ASPX page to render an alternative top navigation.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;When we check the AlternateHeader property of our newly, malformed subsite, we will notice that it has been provisioned with our AlternateCSSUrl value! &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well, that is certainly NOT what we want and it seems to be a bug.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;The solution&lt;/span&gt;&lt;br /&gt;Try to set the AlternateHeader back to the null value using PowerShell and you will discover that the subsite works perfectly, including the custom CSS and theme like on the root site:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666; font-family: 'Courier New', Courier, monospace;"&gt;$w = Get-SPWeb -Identity &lt;a href="http://urltoyour/subsite"&gt;http://urltoyour/subsite&lt;/a&gt;&lt;br /&gt;$w.AlternateHeader = $null&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Note:&lt;/b&gt;&lt;br /&gt;
It seems that the issue has been solved by a hotfix but as most companies only apply Service Packs and no CU’s unless business critical, I would definitely recommend to clear the AlternateHeader yourself.&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-4428011174891320014?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=5PlPsgA7sUU:WYtIhYFLa6o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=5PlPsgA7sUU:WYtIhYFLa6o:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=5PlPsgA7sUU:WYtIhYFLa6o:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=5PlPsgA7sUU:WYtIhYFLa6o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=5PlPsgA7sUU:WYtIhYFLa6o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=5PlPsgA7sUU:WYtIhYFLa6o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=5PlPsgA7sUU:WYtIhYFLa6o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=5PlPsgA7sUU:WYtIhYFLa6o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=5PlPsgA7sUU:WYtIhYFLa6o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=5PlPsgA7sUU:WYtIhYFLa6o:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=5PlPsgA7sUU:WYtIhYFLa6o:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=5PlPsgA7sUU:WYtIhYFLa6o:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=5PlPsgA7sUU:WYtIhYFLa6o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=5PlPsgA7sUU:WYtIhYFLa6o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=5PlPsgA7sUU:WYtIhYFLa6o:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/5PlPsgA7sUU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/5PlPsgA7sUU/alternatecssurl-save-site-to-template.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-SGRgg5GACHE/Ts995rMYXII/AAAAAAAACow/Aurvs4rBQWY/s72-c/image_thumb%25255B14%25255D.png?imgmax=800" height="72" width="72" /><georss:featurename>Eventer 13, 5351 Berghem, The Netherlands</georss:featurename><georss:point>51.769346 5.5758874</georss:point><georss:box>51.7668895 5.5709519 51.7718025 5.5808229</georss:box><feedburner:origLink>http://hermansberghem.blogspot.com/2011/11/alternatecssurl-save-site-to-template.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-8448456963273238161</guid><pubDate>Tue, 01 Nov 2011 18:55:00 +0000</pubDate><atom:updated>2011-11-01T19:57:07.884+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SharePoint</category><category domain="http://www.blogger.com/atom/ns#">Business Continuity</category><title>Slide-deck: Business Continuity for SharePoint 2010</title><description>A while ago I was presenting "&lt;b&gt;&lt;span class="Apple-style-span" style="color: #3d85c6;"&gt;Business Continuity for SharePoint 2010&lt;/span&gt;&lt;/b&gt;" at the SharePoint&amp;nbsp;black belts&amp;nbsp;for architects, organized by Ton Stegeman.&lt;br /&gt;
&lt;br /&gt;
When we talk about Business Continuity many people consider the subject boring and drop it as quickly as possible. And to be honest, at times it can be boring. It is not as fancy as some dazzling JQuery magic or Silverlight stuff. But to be honest again, architects cannot just ignore it. They have to think things through from multiple angles.&lt;br /&gt;
&lt;br /&gt;
To help you with that I have created &lt;b&gt;&lt;span class="Apple-style-span" style="color: #3d85c6;"&gt;one schematic overview&lt;/span&gt;&lt;/b&gt; which outlines the various aspects of Business Continuity.&lt;br /&gt;
&lt;br /&gt;
The thing that I want to emphasize is that Business Continuity is a &lt;b&gt;&lt;span class="Apple-style-span" style="color: #3d85c6;"&gt;continuous process&lt;/span&gt;&lt;/b&gt; of health management, monitoring, governance and changing business requirements. These aspects really drive you planning for high availability, disaster recovery and backup &amp;amp; restore strategies.&lt;br /&gt;
&lt;br /&gt;
Hopefully this presentation will show you things you didn't think about before. If you think something is missing please let me know and I will add it.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;img border="0" src="http://1.bp.blogspot.com/-xx8AUzjI9Gg/TrA-fcaqwNI/AAAAAAAACoc/zI2aQL5PkNg/s1600/Business+Continuity.jpg" /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: orange;"&gt;Download instructions:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Click the download link:&amp;nbsp;&lt;a href="https://docs.google.com/open?id=0B_MCAwqhT5MjMzFjNjY3MzUtMjFlNi00OGI5LWE2YWQtZmU2NmNjYWI2NjA5"&gt;Business Continuity.pptx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;When the presentation opens it Google docs, click the Download button at the top right to download the PPTX which looks a lot better than on Google Docs.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-8448456963273238161?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=MBwrR8_iwL4:higu5loEAYU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=MBwrR8_iwL4:higu5loEAYU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=MBwrR8_iwL4:higu5loEAYU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=MBwrR8_iwL4:higu5loEAYU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=MBwrR8_iwL4:higu5loEAYU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=MBwrR8_iwL4:higu5loEAYU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=MBwrR8_iwL4:higu5loEAYU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=MBwrR8_iwL4:higu5loEAYU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=MBwrR8_iwL4:higu5loEAYU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=MBwrR8_iwL4:higu5loEAYU:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=MBwrR8_iwL4:higu5loEAYU:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=MBwrR8_iwL4:higu5loEAYU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=MBwrR8_iwL4:higu5loEAYU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=MBwrR8_iwL4:higu5loEAYU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=MBwrR8_iwL4:higu5loEAYU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/MBwrR8_iwL4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/MBwrR8_iwL4/slide-deck-business-continuity-for.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-xx8AUzjI9Gg/TrA-fcaqwNI/AAAAAAAACoc/zI2aQL5PkNg/s72-c/Business+Continuity.jpg" height="72" width="72" /><georss:featurename>Eventer 13, 5351 Berghem, The Netherlands</georss:featurename><georss:point>51.769346 5.5758874</georss:point><georss:box>51.7668895 5.5709519 51.7718025 5.5808229</georss:box><feedburner:origLink>http://hermansberghem.blogspot.com/2011/11/slide-deck-business-continuity-for.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-2710394885956103848</guid><pubDate>Sun, 30 Oct 2011 21:04:00 +0000</pubDate><atom:updated>2011-10-30T22:04:06.421+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SharePoint 2010</category><category domain="http://www.blogger.com/atom/ns#">SharePoint</category><category domain="http://www.blogger.com/atom/ns#">Issues</category><title>Unable to open workbook several issues</title><description>&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #3d85c6; font-size: large;"&gt;&lt;b&gt;Symptom:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
If a user clicks on an Excel worksheet on a SharePoint 2010 site, SharePoint tries to open and render the file in the browser first (depends on settings). The user receives the message "&lt;b&gt;Unable to open workbook&lt;/b&gt;".&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #3d85c6; font-size: large;"&gt;&lt;b&gt;Cause:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
Services and Web Applications in the farm are configured upon start to use an account. For Excel Services these are linked to an application pool. If the configured account does not have the required permissions on the content databases, the service won't be able to open the workbook.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #3d85c6; font-size: large;"&gt;&lt;b&gt;ULS log:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
On the application server that is running Excel Services (if you have multiple, check them all) run ULSViewer. You might be seeing messages that contain: There is a compatibility range mismatch between the Web server and database. In the custom columsn you might be seeing: GenericFileOpenError.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #3d85c6; font-size: large;"&gt;&lt;b&gt;Follow these steps to resolve the issue:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
- &lt;b&gt;Lookup your Excel Services account&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- In Central Administration -&amp;gt; Security -&amp;gt; Configure Service Accounts&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- At the dropdown select 'Service Application Pool - Excel Services Application'&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- Write down the account shown at the bottom (Select an account for this component)&lt;br /&gt;
- On the application server start -&amp;gt; all programs -&amp;gt; SharePoint 2010 products -&amp;gt; SharePoint 2010 management shell&lt;br /&gt;
- (account that is performing the action has SecurityAdmin role and DBCreator role in SQL Server)&lt;br /&gt;
- &lt;b&gt;At the command prompt of the management shell type&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- $myWebApp = Get-SPWebApplication -Identity &lt;yourwebapplicationurl&gt;&lt;/yourwebapplicationurl&gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- $myWebApp.GrantAccessToProcessIdentity("&lt;theexcelservicesaccount&gt;")&lt;/theexcelservicesaccount&gt;&lt;br /&gt;
- &lt;b&gt;Check if the security settings are applied correctly&lt;/b&gt; if you have access to the SQL Server&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- On the SQL Server connect with SQL Server Enterprise Manager to the SharePoint instance&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- Under Security -&amp;gt; Logins -&amp;gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;- Verify the Excel Services account is listed&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;- Right-click the properties of the Excel Services Account&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;- Verify if the Excel Services account has a user mapping to the&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;- Content databases as DBO_OWNER&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;- Account is assigned to the WSS_CONTENT_APPLICATION_POOLS roles&lt;br /&gt;
- &lt;b&gt;Restart Excel Services&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- In Central Administration -&amp;gt; System settings -&amp;gt; Manage Services on server&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- Select the App server(s) on which Excel Services is running&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- Stop the service and start the service again&lt;br /&gt;
&lt;br /&gt;
If you solve the issue, users might still report that they are unable to open the workbook. However, the message might be different this time:&lt;br /&gt;
&lt;br /&gt;
- &lt;b&gt;Workbook cannot be opened because it exceeds the maximum workbook size&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- This is a settings of the Excel Services Application. You are able to change it through Central Admin. By default this settings is 10MB. The bad thing is that the Excel client will not be launched automatically. So the user is at a loss what to do.&lt;br /&gt;
- &lt;b&gt;Workbook contains protected sheet or cell and cannot be opened&lt;/b&gt;. This is by design and the Excel client application will automatically open.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #3d85c6; font-size: large;"&gt;&lt;b&gt;Workarounds:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
- Tell the user to not click on an Excel link directly but instead use the &lt;b&gt;Ribbon&lt;/b&gt; or contextual menu to Edit the workbook in Excel&lt;br /&gt;
- Change the settings of the document library so that the files will be opened in the Client by default. In the ribbon select -&amp;gt; Library -&amp;gt; Library settings -&amp;gt; Advanced settings -&amp;gt; &lt;b&gt;Open files in client&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #3d85c6; font-size: large;"&gt;&lt;b&gt;Related issues:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
- Similar issues may happen for other service applications like Visio services, Performance Point services etc&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #3d85c6; font-size: large;"&gt;&lt;b&gt;Related resources:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
Accounts and permissions: &lt;a href="http://technet.microsoft.com/en-us/library/cc678863.aspx"&gt;http://technet.microsoft.com/en-us/library/cc678863.aspx&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-2710394885956103848?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=xW79yovW0xQ:QWlmD-uagXY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=xW79yovW0xQ:QWlmD-uagXY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=xW79yovW0xQ:QWlmD-uagXY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=xW79yovW0xQ:QWlmD-uagXY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=xW79yovW0xQ:QWlmD-uagXY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=xW79yovW0xQ:QWlmD-uagXY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=xW79yovW0xQ:QWlmD-uagXY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=xW79yovW0xQ:QWlmD-uagXY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=xW79yovW0xQ:QWlmD-uagXY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=xW79yovW0xQ:QWlmD-uagXY:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=xW79yovW0xQ:QWlmD-uagXY:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=xW79yovW0xQ:QWlmD-uagXY:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=xW79yovW0xQ:QWlmD-uagXY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=xW79yovW0xQ:QWlmD-uagXY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=xW79yovW0xQ:QWlmD-uagXY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/xW79yovW0xQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/xW79yovW0xQ/unable-to-open-workbook-several-issues.html</link><author>noreply@blogger.com (Servé Hermans)</author><feedburner:origLink>http://hermansberghem.blogspot.com/2011/10/unable-to-open-workbook-several-issues.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-247840278627564446</guid><pubDate>Sun, 16 Oct 2011 19:01:00 +0000</pubDate><atom:updated>2011-10-16T21:01:36.018+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">powershell</category><category domain="http://www.blogger.com/atom/ns#">SharePoint 2010</category><title>Build your own mailing engine using Powershell</title><description>In this post I will show you a couple of useful Powershell tricks like how to resolve a name in Active Directory, how to send a mail using an external rich HTML file and how to store results in unique log files.&lt;br /&gt;&lt;br /&gt;It is not too difficult to find examples on how to send a mail using Powershell. The problem that I faced however was that I wanted to use an external file for the body, use rich HTML and plumb some variables into the body of the mail which I could replace at runtime and add some people in the CC. &lt;br /&gt;This is particular useful for sending e-mail in batch and in fact, I am using it by looping through a list of recipients and URLs using a SharePoint list.&lt;br /&gt;&lt;br /&gt;In this post I will show you a couple of snippets (the rest you will have to create yourself). Let's start!&lt;br /&gt;&lt;br /&gt;First of all you need a couple of variables like:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $server = "[put your smtp relay server here]"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $client = new-object System.Net.Mail.SmtpClient $server&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $subject = "Weekly news"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $sender = "Fabrikam@mycompany.com"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $recipient = "[List of comma separated e-mail addresses]"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $recipientCC = "[List of comma separated e-mail addresses]"&lt;br /&gt;&lt;br /&gt;The recipient list should be build carefully. If it contains names which cannot be resolved or has for instance two commas instead of one, or contains a ; instead of a , it will fail utterly.&lt;br /&gt;&lt;br /&gt;Secondly, we need to load the body of the text. I have stored the body in a separate file in the same directory as the script called body.txt. This file contains HTML including a tag called [URLHERE] which I will replace dynamically with a URL I pull from a SharePoint list. Here we go:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $body = (gc .\body.txt | out-string)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $url = "[put your dynamically loaded URL here]"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $body = $body -replace "[URLHERE]" , $url&lt;br /&gt;&lt;br /&gt;If you are doing mailings, this plumbing might be useful and of course the variable $url would be different on each iteration so you have to create that yourself.&lt;br /&gt;&lt;br /&gt;Let us create the message, add the CC people and also make sure the HTML of the body will be interpreted correctly:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msg = new-object System.Net.Mail.MailMessage $sender, $recipient, $subject, $body&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msg.CC.Add($recipientCC)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msg.IsBodyHTML = $true&lt;br /&gt;&lt;br /&gt;And send the message!&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $client.Send($msg)&lt;br /&gt;&lt;br /&gt;Now, if you want to add logging consider to write message to a unique file:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $results = "LoggingMyScript{0:yyyyMMdd-HHmm}.txt" -f (Get-Date)&lt;br /&gt;&lt;br /&gt;By using logging messages like:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write-output "[Debug message here]" | out-file $results -append&lt;br /&gt;&lt;br /&gt;Finally, if you are looping through user display names like: Lastname, Initial (Firstname), those will not be resolved automatically to an e-mail address. Somewhere on a blog (sorry, can't remember) I discovered the following piece of script which does the job for you:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ads = New-Object System.DirectoryServices.DirectorySearcher([ADSI]'')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ads.filter = "(&amp;amp;(objectClass=Person)(displayName=$displayName))"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $s = $ads.FindOne()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($S -ne $null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $mail = $s.GetDirectoryEntry().mail&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;There you go. Build your own mailing engine using Powershell! Use your imagination to connect to a SharePoint list and add all of the error handling and so forth. Have fun!&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-247840278627564446?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=25BknzeIbhk:etCe9subvoI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=25BknzeIbhk:etCe9subvoI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=25BknzeIbhk:etCe9subvoI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=25BknzeIbhk:etCe9subvoI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=25BknzeIbhk:etCe9subvoI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=25BknzeIbhk:etCe9subvoI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=25BknzeIbhk:etCe9subvoI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=25BknzeIbhk:etCe9subvoI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=25BknzeIbhk:etCe9subvoI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=25BknzeIbhk:etCe9subvoI:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=25BknzeIbhk:etCe9subvoI:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=25BknzeIbhk:etCe9subvoI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=25BknzeIbhk:etCe9subvoI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=25BknzeIbhk:etCe9subvoI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=25BknzeIbhk:etCe9subvoI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/25BknzeIbhk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/25BknzeIbhk/build-your-own-mailing-engine-using.html</link><author>noreply@blogger.com (Servé Hermans)</author><feedburner:origLink>http://hermansberghem.blogspot.com/2011/10/build-your-own-mailing-engine-using.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-4794044666189204200</guid><pubDate>Sun, 16 Oct 2011 18:49:00 +0000</pubDate><atom:updated>2011-10-16T20:49:42.354+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SharePoint 2010</category><category domain="http://www.blogger.com/atom/ns#">Issues</category><title>GUID should contain 32 characters</title><description>One a migrated site a user may encounter an unexpected error when clicking on a &lt;strong&gt;Add a new document&lt;/strong&gt; link. When viewing the ULS log on the web server you might see the following error:&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 13px;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 13px;"&gt;&lt;strong&gt;System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 13px;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;
&lt;a href="http://lh3.ggpht.com/-H3hZAcoBrkw/TpsmPZ4iExI/AAAAAAAACnc/2OOXJok7M94/s1600-h/image%25255B8%25255D.png"&gt;&lt;img alt="Add document links" border="0" height="234" src="http://lh5.ggpht.com/-CJ6uVkDUUG4/TpsmP8AG1WI/AAAAAAAACnk/ZyUMbCaeU_g/image_thumb%25255B6%25255D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="660" /&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 10pt;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;
&lt;br /&gt;
&lt;br /&gt;
Do you notice the difference in the ' Add document' and the 'Add new link' styles in the screenshot above?&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 13px;"&gt;To resolve this: &lt;strong&gt;delete&lt;/strong&gt; the Listview web part from the page and add it again. You will notice that the newly added Listview web part has a different link. It now displays &lt;strong&gt;Add document&lt;/strong&gt; with a plus icon in front of it. This looks different than the migrated links from other listview web parts as you can see in the screenshot.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;
&lt;span style="font-family: Verdana, sans-serif; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-4794044666189204200?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UoGTQcNm46Q:v4iK9XJuNns:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UoGTQcNm46Q:v4iK9XJuNns:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UoGTQcNm46Q:v4iK9XJuNns:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UoGTQcNm46Q:v4iK9XJuNns:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=UoGTQcNm46Q:v4iK9XJuNns:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UoGTQcNm46Q:v4iK9XJuNns:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UoGTQcNm46Q:v4iK9XJuNns:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=UoGTQcNm46Q:v4iK9XJuNns:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UoGTQcNm46Q:v4iK9XJuNns:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UoGTQcNm46Q:v4iK9XJuNns:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=UoGTQcNm46Q:v4iK9XJuNns:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UoGTQcNm46Q:v4iK9XJuNns:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UoGTQcNm46Q:v4iK9XJuNns:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=UoGTQcNm46Q:v4iK9XJuNns:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UoGTQcNm46Q:v4iK9XJuNns:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/UoGTQcNm46Q" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/UoGTQcNm46Q/guid-should-contain-32-characters.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-CJ6uVkDUUG4/TpsmP8AG1WI/AAAAAAAACnk/ZyUMbCaeU_g/s72-c/image_thumb%25255B6%25255D.png?imgmax=800" height="72" width="72" /><feedburner:origLink>http://hermansberghem.blogspot.com/2011/10/guid-should-contain-32-characters.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-5336115942653401522</guid><pubDate>Sun, 09 Oct 2011 19:05:00 +0000</pubDate><atom:updated>2011-10-09T21:10:28.404+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SharePoint 2010</category><category domain="http://www.blogger.com/atom/ns#">Migration</category><category domain="http://www.blogger.com/atom/ns#">Issues</category><title>Database too old and needs upgrade</title><description>If you are migrating to SP2010 you might encounter this issue which can have different symptoms. In this article I will describe the symptoms, a possible root cause and how to resolve it.&lt;br /&gt;
&lt;h3&gt;

&lt;/h3&gt;
&lt;h3&gt;

Symptoms&lt;/h3&gt;
&lt;div style="text-align: right;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-GLCviZk16MM/TpHwTH-tpVI/AAAAAAAACnY/3pBI_F2LLbY/s1600/DatabaseTooOld.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-GLCviZk16MM/TpHwTH-tpVI/AAAAAAAACnY/3pBI_F2LLbY/s1600/DatabaseTooOld.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
You have migrated a SharePoint 2007 content database to SharePoint 2010 using the mount-spcontentdatabase powershell command. When you review the database status using Central Admin -&amp;gt; Upgrade and Migration -&amp;gt; Review database status -&amp;gt; the status column Shows the message &lt;b&gt;&lt;span class="Apple-style-span" style="color: #3d85c6;"&gt;Database is too old and needs upgrade&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;h3&gt;

&lt;/h3&gt;
&lt;h3&gt;

Additional symptoms&lt;/h3&gt;
The content database appears under Application management -&amp;gt; Manage Contentdatabase. The number of site collections is correct (not zero). If you try to list the details of a site collection, &lt;b&gt;&lt;span class="Apple-style-span" style="color: #3d85c6;"&gt;no details appear&lt;/span&gt;&lt;/b&gt;. Try to browse Central Admin -&amp;gt; Application Management -&amp;gt; View all Site Collections. Select a site collection of which you are sure it belongs to the newly migrated content database. View the details on the right side (preview pane). If these are not showing at all AND you have the message Database is too old and needs upgrade, you are probably having the same issue.&amp;nbsp; &lt;br /&gt;
&lt;strong&gt;Another one:&lt;/strong&gt;The site collections cannot be browsed. Visiting root pages of a site collection yield a &lt;b&gt;&lt;span class="Apple-style-span" style="color: #3d85c6;"&gt;HTTP code 200&lt;/span&gt;&lt;/b&gt; and in the browser the user will see one line of text: Server Error. If you browse the Site settings of the site collection (_/layouts/settings.aspx) you will see a &lt;b&gt;&lt;span class="Apple-style-span" style="color: #3d85c6;"&gt;HTTP Code 403: Forbidden.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;strong&gt;Another one:&lt;/strong&gt;&lt;br /&gt;
Reviewing the settings of the content database yields a "&lt;b&gt;&lt;span class="Apple-style-span" style="color: #3d85c6;"&gt;Object not set to a reference&lt;/span&gt;&lt;/b&gt;". Try to browse the details of the content database by using Central Admin -&amp;gt; Application management -&amp;gt; Manage content database. Select the newly migrated content database by clicking on it. If you see an object not set to a reference message you are probably experiencing the same issue.&lt;br /&gt;
&lt;h3&gt;

&lt;/h3&gt;
&lt;h3&gt;

Cause&lt;/h3&gt;
You have probably run the mount-spcontentdatabase powershell command without having the appropriate &lt;b&gt;&lt;span class="Apple-style-span" style="color: #3d85c6;"&gt;permissions&lt;/span&gt;&lt;/b&gt; on SQL. This may results in a succesful attachment and upgrade but with the above symptoms. Make sure the account that is performing the upgrade has the following permissions:&lt;br /&gt;
- It must have domain user account permissions.&lt;br /&gt;
- It must be a member of the local administrators group on each server in the SharePoint Server 2010 farm, excluding SQL Server and the Simple Mail Transfer Protocol (SMTP) server.&lt;br /&gt;
- This account must have access to the SharePoint Server 2010 databases.&lt;br /&gt;
- If you use any Windows PowerShell operations that affect a database, the setup user administrator account must be a member of the db_owner role.&lt;br /&gt;
- This account must be assigned to the securityadmin and dbcreator SQL Server security roles during setup and configuration.&lt;br /&gt;
&lt;h3&gt;

&lt;/h3&gt;
&lt;h3&gt;

Resolution&lt;/h3&gt;
Try to &lt;span class="Apple-style-span" style="color: #3d85c6;"&gt;&lt;b&gt;dismount&lt;/b&gt; &lt;/span&gt;the spcontentdatabase. Do not try to delete the contentdatabase without unprovisioning it first. Assign the proper permissions on SQL especially the SecurityAdmin, DBCreator and DBO owner roles. Refer to the TechNet article Accounts and Permissions. When permissions are set correctly, remount the database, preferably in an preupgraded state.&lt;br /&gt;
If you mount the spcontentdatabase and receive a message like "Cannot mount spdatabase because the database ID already exist, run mount spcontentdatabase and assign a new databaseid", you may have an issue with an uncorrectly dismounted database. It might be that the database is no longer listed in the manage content databases section of Central Admin, but still appears on the Review database status section under Upgrade and Migration. This may be cause by not &lt;span class="Apple-style-span" style="color: #3d85c6;"&gt;&lt;b&gt;unprovisioning&lt;/b&gt; &lt;/span&gt;the content database before deleting it. Use powershell to get the database (Get-SPContentDatabase) and run the unprovision and then the delete statement. If the unprovisioning fails, just run the delete statement. This may also be related to not having enough permissions on SQL Server level. See above.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-5336115942653401522?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=beEMEXUmDDc:Q31AX66MPns:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=beEMEXUmDDc:Q31AX66MPns:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=beEMEXUmDDc:Q31AX66MPns:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=beEMEXUmDDc:Q31AX66MPns:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=beEMEXUmDDc:Q31AX66MPns:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=beEMEXUmDDc:Q31AX66MPns:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=beEMEXUmDDc:Q31AX66MPns:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=beEMEXUmDDc:Q31AX66MPns:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=beEMEXUmDDc:Q31AX66MPns:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=beEMEXUmDDc:Q31AX66MPns:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=beEMEXUmDDc:Q31AX66MPns:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=beEMEXUmDDc:Q31AX66MPns:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=beEMEXUmDDc:Q31AX66MPns:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=beEMEXUmDDc:Q31AX66MPns:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=beEMEXUmDDc:Q31AX66MPns:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/beEMEXUmDDc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/beEMEXUmDDc/database-too-old-and-needs-upgrade.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-GLCviZk16MM/TpHwTH-tpVI/AAAAAAAACnY/3pBI_F2LLbY/s72-c/DatabaseTooOld.jpg" height="72" width="72" /><georss:featurename>5351 Berghem, The Netherlands</georss:featurename><georss:point>51.77 5.5747222</georss:point><georss:box>51.730696 5.4957582 51.809304000000004 5.6536862</georss:box><feedburner:origLink>http://hermansberghem.blogspot.com/2011/10/database-too-old-and-needs-upgrade.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-4128835287293870587</guid><pubDate>Fri, 10 Jun 2011 19:26:00 +0000</pubDate><atom:updated>2011-06-13T16:24:15.646+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">facebook social plugin</category><title>How to add notification and moderation to your Facebook social plugin for blogspot</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-fm4w57qTT_Y/TfYdb8ZZhCI/AAAAAAAACk4/H8jqUcmptJs/s1600/2011-06-13_1622.png" imageanchor="1"&gt;&lt;img border="0" height="276" src="http://1.bp.blogspot.com/-fm4w57qTT_Y/TfYdb8ZZhCI/AAAAAAAACk4/H8jqUcmptJs/s640/2011-06-13_1622.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Adding the facebook social plugin to this blog was very easy. After a while though I was wondering how to get notified and moderate comments.&lt;br /&gt;
&lt;br /&gt;
Most posts out there describe how to request an app_id on Facebook Developer. That only takes a couple of minutes but still that was not enough. You need to add two meta tags in the head of the blogtemplate where you refer the app_id and admins and moderator id. Still that is not enough.&lt;br /&gt;
&lt;br /&gt;
You also need to go to the facebook integration page of your app and fill out the so called canvas fields.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;So let me describe this in more detail:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
1. Create an app, browse to the following link:&amp;nbsp;https://www.facebook.com/developers/createapp.php&lt;br /&gt;
&lt;br /&gt;
2. After that you will see you app_id, grab it and keep it for later&lt;br /&gt;
&lt;br /&gt;
3. Next on you App settings page select facebook integration from the left menu&lt;br /&gt;
&lt;br /&gt;
4. For canvas page you need to enter a tag which is unique. I have used hermansberghem, the first part of my blogaddress&lt;br /&gt;
&lt;br /&gt;
5. Next on the Canvas URL enter the full URL of your blog. In my case http://hermansberghem.blogspot.com&lt;br /&gt;
&lt;br /&gt;
6. Save your changes&lt;br /&gt;
&lt;br /&gt;
7. Edit you blogspot template, put the following meta statements just before the  tag:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&amp;lt;meta content='228558950503716' property='fb:app_id'/&amp;gt;&lt;br /&gt;
&amp;lt;meta content='100002186857445' property='fb:admins'/&amp;gt;&lt;br /&gt;
&amp;lt;meta content='100002186857445' property='fb:moderator'/&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;
Of course put your app_id in the first tag and your user id in the second and third tag. Your user id is not your login name. If you dont know your user id then I would suggest to create a photoalbum on your facebook profile and click on the album. In the URL you will see the id. That is your user id.&lt;br /&gt;
&lt;br /&gt;
8. Next you need to add the comments section to your blog template. What I did is expand all the widgets by checking the box and find the backlinks line:&lt;br /&gt;
&lt;blockquote&gt;&amp;lt;b:includable id="backlinks" var="post"&amp;gt;&amp;lt;/b:includable&amp;gt;&lt;/blockquote&gt;Before that line I posted the following:&lt;br /&gt;
&lt;blockquote&gt;&amp;lt;div id='fb-root'/&amp;gt;&amp;lt;script src='http://connect.facebook.net/en_US/all.js#xfbml=1'/&amp;gt;&amp;lt;fb:comments expr:href='data:post.url' num_posts='5' width='660'/&amp;gt;&lt;br /&gt;
&amp;lt;/b:includable&amp;gt;&lt;/blockquote&gt;As you can see that I use the expr: syntax to get the link to the post. I wanted comments on the homepage and detailpages so this works great for me.&lt;br /&gt;
&lt;br /&gt;
That is it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-4128835287293870587?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yap7hf2_W9s:jESAWGHBVOw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yap7hf2_W9s:jESAWGHBVOw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yap7hf2_W9s:jESAWGHBVOw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yap7hf2_W9s:jESAWGHBVOw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=yap7hf2_W9s:jESAWGHBVOw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yap7hf2_W9s:jESAWGHBVOw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yap7hf2_W9s:jESAWGHBVOw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=yap7hf2_W9s:jESAWGHBVOw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yap7hf2_W9s:jESAWGHBVOw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yap7hf2_W9s:jESAWGHBVOw:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=yap7hf2_W9s:jESAWGHBVOw:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yap7hf2_W9s:jESAWGHBVOw:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yap7hf2_W9s:jESAWGHBVOw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=yap7hf2_W9s:jESAWGHBVOw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=yap7hf2_W9s:jESAWGHBVOw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/yap7hf2_W9s" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/yap7hf2_W9s/how-to-add-notification-and-moderation.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-fm4w57qTT_Y/TfYdb8ZZhCI/AAAAAAAACk4/H8jqUcmptJs/s72-c/2011-06-13_1622.png" height="72" width="72" /><feedburner:origLink>http://hermansberghem.blogspot.com/2011/06/how-to-add-notification-and-moderation.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-6132323922207327004</guid><pubDate>Mon, 06 Jun 2011 19:46:00 +0000</pubDate><atom:updated>2011-06-06T21:46:23.469+02:00</atom:updated><title>Added Facebook Social Plugin</title><description>Thanks to Joel Oleson I have replaced comments by the Facebook Social Plugin. This means that you won't be able to read the old comments anymore or use Google's commenting to leave a message. Instead you can now use the new Facebook plugin as I think it works nicer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-6132323922207327004?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pqlXb0j6JAs:FqondTsZ6zc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pqlXb0j6JAs:FqondTsZ6zc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pqlXb0j6JAs:FqondTsZ6zc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pqlXb0j6JAs:FqondTsZ6zc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=pqlXb0j6JAs:FqondTsZ6zc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pqlXb0j6JAs:FqondTsZ6zc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pqlXb0j6JAs:FqondTsZ6zc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=pqlXb0j6JAs:FqondTsZ6zc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pqlXb0j6JAs:FqondTsZ6zc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pqlXb0j6JAs:FqondTsZ6zc:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=pqlXb0j6JAs:FqondTsZ6zc:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pqlXb0j6JAs:FqondTsZ6zc:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pqlXb0j6JAs:FqondTsZ6zc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=pqlXb0j6JAs:FqondTsZ6zc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pqlXb0j6JAs:FqondTsZ6zc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/pqlXb0j6JAs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/pqlXb0j6JAs/added-facebook-social-plugin.html</link><author>noreply@blogger.com (Servé Hermans)</author><feedburner:origLink>http://hermansberghem.blogspot.com/2011/06/added-facebook-social-plugin.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-7691862445318691400</guid><pubDate>Fri, 08 Apr 2011 17:30:00 +0000</pubDate><atom:updated>2011-06-13T16:26:13.077+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SP2010</category><category domain="http://www.blogger.com/atom/ns#">Monitoring</category><title>C2WTS: Accounts used by application pools or service identities are in the local machine Administrators group</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3OSEYpbrIuk/TfYd904epEI/AAAAAAAACk8/DZ3Plg3p8_c/s1600/image_thumb1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="46" src="http://1.bp.blogspot.com/-3OSEYpbrIuk/TfYd904epEI/AAAAAAAACk8/DZ3Plg3p8_c/s640/image_thumb1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
There is one Health rule that conflicts with a best practice when using the Claims to Windows Token Service leading to a warning that you are using an account that is part of the local administrators group. In this case we have indeed explicitly added the service account that is used by the C2WTS service to the local administrators group on each server that is running this service.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;C2WTS – why do I need it?&lt;/h2&gt;Some server applications need C2WTS to translate claims to Windows credentials for outbound claims. That is, if your web app uses classic mode or windows claims authentication. Maybe you also remember that SharePoint uses claims within the farm, but some out of the box service applications do not allow outbound claims authentication (yet).&lt;br /&gt;
So what does this mean? Basically I am saying that if for instance you would like to connect your Excel sheet to a data source which is not claims aware, a possible solution would be to configure Kerberos constrained delegation and the C2WTS to be able to connect to that data source.&lt;br /&gt;
&lt;h2&gt;Configuring the C2WTS: required local server permissions&lt;/h2&gt;The Configuring Kerberos Authentication for Microsoft SharePoint 2010 products guide tells you how to configure the service account used by the C2WTS service. On Page 97 it explains how to &lt;strong&gt;configure the required local server permissions&lt;/strong&gt; that C2WTS requires.&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="color: #0080ff;"&gt;Step 4a. tells you explicitly to Add the service account to the &lt;strong&gt;Local Administrators &lt;/strong&gt;&lt;/span&gt;&lt;span style="color: #0080ff;"&gt;&lt;strong&gt;Group&lt;/strong&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;h2&gt;The conflict: health analyzer rule&lt;/h2&gt;The rule: Accounts used by application pools or service identities are in the local machine Administrators group which you can find in Central Admin under Monitoring –&amp;gt; Rule definitions, checks if you are using accounts in Web app pools or services that are part of the local administrators group. &lt;br /&gt;
&lt;span style="color: red;"&gt;This rule conflicts with the guidance around the C2WTS service account as described in the Kerberos guide.&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;What to do?&lt;/h2&gt;You might want to ignore the rule. On the other hand what I wanted to know is: is it really necessary to have the service account for C2WTS part of the local farm admin group. So what I did is I configured Kerberos constrained delegation for Excel Services and a SQL server data source and &lt;em&gt;not use&lt;/em&gt; the local farm admin group for the service account.&lt;br /&gt;
Guess what? It still works! I tried it different ways, with an external content type for instance and still the same results. It works. Now, that leaves me puzzled as I don’t grasp why the they put in the recommendation in the guide. As long as it works, I will ignore the advice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-7691862445318691400?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=TX5hteMgUb8:LJnDi6AJTSQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=TX5hteMgUb8:LJnDi6AJTSQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=TX5hteMgUb8:LJnDi6AJTSQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=TX5hteMgUb8:LJnDi6AJTSQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=TX5hteMgUb8:LJnDi6AJTSQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=TX5hteMgUb8:LJnDi6AJTSQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=TX5hteMgUb8:LJnDi6AJTSQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=TX5hteMgUb8:LJnDi6AJTSQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=TX5hteMgUb8:LJnDi6AJTSQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=TX5hteMgUb8:LJnDi6AJTSQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=TX5hteMgUb8:LJnDi6AJTSQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=TX5hteMgUb8:LJnDi6AJTSQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=TX5hteMgUb8:LJnDi6AJTSQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=TX5hteMgUb8:LJnDi6AJTSQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=TX5hteMgUb8:LJnDi6AJTSQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/TX5hteMgUb8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/TX5hteMgUb8/c2wts-accounts-used-by-application.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-3OSEYpbrIuk/TfYd904epEI/AAAAAAAACk8/DZ3Plg3p8_c/s72-c/image_thumb1.png" height="72" width="72" /><feedburner:origLink>http://hermansberghem.blogspot.com/2011/04/c2wts-accounts-used-by-application.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-7057171363739366430</guid><pubDate>Wed, 06 Apr 2011 15:00:00 +0000</pubDate><atom:updated>2011-04-08T12:25:07.934+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SP2010</category><category domain="http://www.blogger.com/atom/ns#">Configuration</category><title>Document ID Service software boundary</title><description>Today I discovered that the &lt;strong&gt;Document ID Service&lt;/strong&gt; has a &lt;strong&gt;software boundary&lt;/strong&gt; which prevents the feature from working as expected. That is something I can live with. The shocking reality however is that there is NO visual feedback for the end user and at the same time, the chance that users will hit the boundary is quite real.&lt;br /&gt;
&lt;h3&gt;Activating the Document ID service on an existing site&lt;/h3&gt;In most cases the Team site template is favorite and people don’t tend to select the &lt;strong&gt;Document center template&lt;/strong&gt; when they want to collaborate on a document. No surprise as the Document Center template is quite, uh, simplistic as the only thing you will see after creation is a document library and a slightly different homepage. The good thing though is that the template has document sets and ID service already activated.&lt;br /&gt;
&lt;a href="http://lh3.ggpht.com/_lMdXhBkQ6IA/TZm2wHH9gcI/AAAAAAAACjo/7Pyoh4_PI30/s1600-h/image%5B3%5D.png"&gt;&lt;img alt="image" border="0" height="41" src="http://lh4.ggpht.com/_lMdXhBkQ6IA/TZm2wt6U7jI/AAAAAAAACjs/2LckG-8bCSE/image_thumb%5B1%5D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="644" /&gt;&lt;/a&gt;&lt;br /&gt;
Now, this means that people who would like to work with Document IDs need to &lt;strong&gt;activate the feature&lt;/strong&gt; at the Site collection Level. No problem you might think, just browse from Site Actions –&amp;gt; Site settings –&amp;gt; Site Collection Administration –&amp;gt; Site collection features –&amp;gt; Document ID Service –&amp;gt; Activate. Either you are the lucky one and it works or you will have to wait a bit, or it will never work at all.&lt;br /&gt;
&lt;h3&gt;No it is not because of the timer jobs&lt;/h3&gt;I have seen blog posts literally saying that you needed to go to Central Admin –&amp;gt; Monitoring –&amp;gt; Job definitions and have a look at two different timer jobs:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The &lt;strong&gt;Document ID Assignment&lt;/strong&gt; job which runs daily&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Document ID enable/disable&lt;/strong&gt; job which runs daily&lt;/li&gt;


&lt;/ul&gt;Even if you run these jobs “now” it might happen that your Document ID Service is activated but nothing happens.&lt;br /&gt;
&lt;h3&gt;The real issue and boundary&lt;/h3&gt;&lt;blockquote&gt;&lt;span style="color: #0080ff;"&gt;&lt;strong&gt;If you have a site that has more than 20 libraries and lists in total, activating the Document ID Service does not work.&lt;/strong&gt;&lt;/span&gt;&lt;/blockquote&gt;Yup, it is true! I did not invent this myself. Of course you don’t believe me so why don’t you try it and watch the ULS log! The first thing that you will notice is this message:&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="color: red; font-family: 'Courier New'; font-size: x-small;"&gt;&lt;strong&gt;Document ID/IsSiteTooBig: Site '&lt;/strong&gt;&lt;/span&gt;&lt;a href="http://...%27/"&gt;&lt;span style="color: red; font-family: 'Courier New'; font-size: x-small;"&gt;&lt;strong&gt;http://...'&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: red; font-family: 'Courier New'; font-size: x-small;"&gt;&lt;strong&gt; - too many doclibs in web '...', 21 &amp;gt; 20&lt;/strong&gt;&lt;/span&gt;&lt;/blockquote&gt;The message suggest that you have too many Document libraries. But fact is that I had only 16 libraries and 5 lists so it is the total of both libraries and lists! Also, the feature seems to be activated but &lt;strong&gt;there is no DocID column &lt;/strong&gt;added to the libraries.&lt;br /&gt;
Unless I am utterly mistaken this means that when your site grows, it cannot have Document IDs added to all of them. Why? Performance? Possible. I don’t know but if anyone from MSFT can comment on it I would be most grateful. &lt;br /&gt;
&lt;img alt="Winking smile" class="wlEmoticon wlEmoticon-winkingsmile" src="http://lh5.ggpht.com/_lMdXhBkQ6IA/TZm2wyP483I/AAAAAAAACjw/37c1IPMbVJE/wlEmoticon-winkingsmile%5B2%5D.png?imgmax=800" style="border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-7057171363739366430?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=uG3j3F3Gb-I:9AQbmxqJrTM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=uG3j3F3Gb-I:9AQbmxqJrTM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=uG3j3F3Gb-I:9AQbmxqJrTM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=uG3j3F3Gb-I:9AQbmxqJrTM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=uG3j3F3Gb-I:9AQbmxqJrTM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=uG3j3F3Gb-I:9AQbmxqJrTM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=uG3j3F3Gb-I:9AQbmxqJrTM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=uG3j3F3Gb-I:9AQbmxqJrTM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=uG3j3F3Gb-I:9AQbmxqJrTM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=uG3j3F3Gb-I:9AQbmxqJrTM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=uG3j3F3Gb-I:9AQbmxqJrTM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=uG3j3F3Gb-I:9AQbmxqJrTM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=uG3j3F3Gb-I:9AQbmxqJrTM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=uG3j3F3Gb-I:9AQbmxqJrTM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=uG3j3F3Gb-I:9AQbmxqJrTM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/uG3j3F3Gb-I" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/uG3j3F3Gb-I/document-id-service-software-boundary.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_lMdXhBkQ6IA/TZm2wt6U7jI/AAAAAAAACjs/2LckG-8bCSE/s72-c/image_thumb%5B1%5D.png?imgmax=800" height="72" width="72" /><feedburner:origLink>http://hermansberghem.blogspot.com/2011/04/document-id-service-software-boundary.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-750285171164945610</guid><pubDate>Sun, 03 Apr 2011 20:00:00 +0000</pubDate><atom:updated>2011-06-13T16:27:08.377+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SP2010</category><category domain="http://www.blogger.com/atom/ns#">Configuration</category><title>Visio: the server failed to process the request</title><description>I had a situation where the message &lt;strong&gt;the server failed to process the request&lt;/strong&gt; appeared on a &lt;strong&gt;workflow status&lt;/strong&gt; page where there is Visio web part showing you graphically the status of your workflow like the picture is showing below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-vGmeE7S6yMA/TfYeNNXeiyI/AAAAAAAAClA/bvOjtPVFX5A/s1600/Workflow_thumb%255B3%255D.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="332" src="http://4.bp.blogspot.com/-vGmeE7S6yMA/TfYeNNXeiyI/AAAAAAAAClA/bvOjtPVFX5A/s640/Workflow_thumb%255B3%255D.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
There are already some articles out there which are about the same subject and it depends on your &lt;strong&gt;authentication&lt;/strong&gt; scenario if that article might be helpful for you.&lt;br /&gt;
Take for instance the article from Satish TK called &lt;a href="http://www.sathishtk.com/blog/post/2010/02/04/Visio-2010-Beta-Services-Error-The-server-failed-to-process-the-request.aspx" target="_blank"&gt;Visio 2010 Services Error – The server failed to process the request&lt;/a&gt;. That articles is valid when you are using a secure store and where Visio has an Application ID.&lt;br /&gt;
&lt;h3&gt;&lt;strong&gt;&lt;span style="font-size: small;"&gt;The scenario&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/strong&gt;My scenario is much more out of the box where the Visio Service application is taking data from a SharePoint list and bind it to Visio shape data. There are no external databases involved for instance. Now, the only difference is that I am using &lt;strong&gt;Kerberos&lt;/strong&gt; authentication for incoming claims. Does it matter? Probably not much as within the Farm claims is used and the Application pool identity of the Visio Service Application is used.&lt;br /&gt;
Now let me first show you the errors in the &lt;strong&gt;ULS logging&lt;/strong&gt; that are linked to this message in the browser:&lt;br /&gt;
&lt;h3&gt;The errors&lt;/h3&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="color: black;"&gt;1.&lt;/span&gt;&lt;span style="color: maroon;"&gt; Failed to get &lt;strong&gt;Vector Diagram&lt;/strong&gt; for Visio file (null) page (null) Exception&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: black;"&gt;2.&lt;/span&gt; Failed to generate Vector diagram for file &lt;/span&gt;&lt;/span&gt;&lt;a href="http://...../"&gt;&lt;span style="color: maroon; font-family: 'Courier New';"&gt;Http://.....&lt;/span&gt;&lt;/a&gt;&lt;span style="color: maroon; font-family: 'Courier New';"&gt;. Error : System.Data.SqlClient.SqlException: Cannot open database "WSS_Content_Collaboration" requested by the login. The &lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="color: maroon;"&gt;&lt;strong&gt;login failed&lt;br /&gt;
&lt;br /&gt;
&lt;/strong&gt;&lt;span style="color: black;"&gt;3.&lt;/span&gt; SharePoint Web Services Round Robin Service Load Balancer Event: &lt;strong&gt;EndpointFailure&lt;/strong&gt; Active Endpoints: 1 Failed Endpoints:2 Affected Endpoint: &lt;/span&gt;&lt;/span&gt;&lt;a href="http://.....:32843/f456f4f6449b4a669c3c52e167c6acf9/VisioGraphicsService.svc"&gt;&lt;span style="color: maroon; font-family: 'Courier New';"&gt;http://.....:32843/f456f4f6449b4a669c3c52e167c6acf9/VisioGraphicsService.svc&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;&lt;strong&gt;&lt;span style="font-size: small;"&gt;The solution&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;1. My first advice would be to run Visio Service Application using a dedicated service account, let us call it &lt;strong&gt;VisioSvcAcc&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
2. If you are using Kerberos (otherwise skip this step):&lt;strong&gt; Configure a service principal name&lt;/strong&gt;: SETSPN –S SP/VisioServices YOURDOMAIN\VisioSvcAcc&lt;br /&gt;
&lt;br /&gt;
3. If you are using Kerberos (otherwise skip this step): &lt;strong&gt;Configure constrained Kerberos delegation&lt;/strong&gt; paths both for the service account as for the Computers running Visio Services. You configure that for each backend SQL / whatever system that has been configured for Kerberos authentication. There is no need to configure this for SharePoint databases. Have a look at the Kerberos Guide for SP2010 for detailed steps. In short: using MMC AD snap in you select the service account, delegation tab, select trust this user for delegation to specified services, use any authentication protocol, click the Add button, select user and computer and enter the name of the service account. Click OK, select the services for MSSQLSVC and repeat the steps for the other principal names.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #0080ff;"&gt;Are you still with me? If not, forget about the Kerberos steps and read on!&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
4. Start &lt;strong&gt;SharePoint 2010 management shell&lt;/strong&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;div align="left"&gt;$w = Get-SPWebApplication –Identity &lt;a href="http://yourwepappurl/"&gt;http://yourwepappurl&lt;/a&gt;&lt;br /&gt;
$w.GrantAccessToProcessIdentity(“YOURDOMAIN\VisioSvcAcc”)&lt;/div&gt;&lt;/blockquote&gt;&lt;div align="left"&gt;5. Central Admin –&amp;gt; Manage services on server –&amp;gt; Select App server that is running Visio –&amp;gt; &lt;strong&gt;Start Visio Graphics Service&lt;/strong&gt; –&amp;gt; repeat step for other App servers running Visio&lt;br /&gt;
&lt;br /&gt;
6. Central Admin –&amp;gt; Application Management –&amp;gt; Manage Service Application –&amp;gt;&lt;strong&gt; New –&amp;gt; Visio Services Application.&lt;/strong&gt; Name: Visio Service Application; Create new application pool. Under configurable enter YOURDOMAIN\VisioSvcAcc; select Add this service applications proxy to the farms default proxy list.&lt;/div&gt;&lt;h3 align="left"&gt;&lt;strong&gt;&lt;span style="font-size: small;"&gt;Summarized&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;div align="left"&gt;&lt;strong&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/strong&gt;So, the most important steps here are: a. Grant access to the Visio service account on the process of your web application b. When creating the Visio service App, use a dedicated App pool &lt;em&gt;and&lt;/em&gt; the dedicated Visio service account.&lt;/div&gt;&lt;div align="left"&gt;That is it! If you follow these steps you will notice that there is no need to add permission to content databases yourself. Also, there is no need to configure the unattended account or use the Secure Store and Application ID if you use SharePoint out of box without Visio tapping into external data source.&lt;/div&gt;&lt;h3&gt;Other resources&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/visio/archive/2010/03/10/visio-services-details-for-administrators.aspx" title="http://blogs.msdn.com/b/visio/archive/2010/03/10/visio-services-details-for-administrators.aspx"&gt;http://blogs.msdn.com/b/visio/archive/2010/03/10/visio-services-details-for-administrators.aspx&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ee513089.aspx" title="http://technet.microsoft.com/en-us/library/ee513089.aspx"&gt;http://technet.microsoft.com/en-us/library/ee513089.aspx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-750285171164945610?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=wfW28K5gHa4:JVq7Kv5CMDg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=wfW28K5gHa4:JVq7Kv5CMDg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=wfW28K5gHa4:JVq7Kv5CMDg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=wfW28K5gHa4:JVq7Kv5CMDg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=wfW28K5gHa4:JVq7Kv5CMDg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=wfW28K5gHa4:JVq7Kv5CMDg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=wfW28K5gHa4:JVq7Kv5CMDg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=wfW28K5gHa4:JVq7Kv5CMDg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=wfW28K5gHa4:JVq7Kv5CMDg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=wfW28K5gHa4:JVq7Kv5CMDg:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=wfW28K5gHa4:JVq7Kv5CMDg:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=wfW28K5gHa4:JVq7Kv5CMDg:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=wfW28K5gHa4:JVq7Kv5CMDg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=wfW28K5gHa4:JVq7Kv5CMDg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=wfW28K5gHa4:JVq7Kv5CMDg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/wfW28K5gHa4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/wfW28K5gHa4/visio-server-failed-to-process-request.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-vGmeE7S6yMA/TfYeNNXeiyI/AAAAAAAAClA/bvOjtPVFX5A/s72-c/Workflow_thumb%255B3%255D.png" height="72" width="72" /><feedburner:origLink>http://hermansberghem.blogspot.com/2011/04/visio-server-failed-to-process-request.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-8253576072190777304</guid><pubDate>Wed, 30 Mar 2011 12:00:00 +0000</pubDate><atom:updated>2011-04-08T12:25:34.445+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Development</category><category domain="http://www.blogger.com/atom/ns#">SP2010</category><title>Trick: use query string values to provision InfoPath form</title><description>I had a business case where a user clicks on a link to open a modal dialog showing a prepopulated InfoPath form. The default values needed to be pulled in from the query string. In this post I will outline the trick that I used.&lt;br /&gt;
The original idea actually came from an old blog post of mine (2007): &lt;br /&gt;
&lt;h5&gt;&lt;a href="http://hermansberghem.blogspot.com/2007/11/free-download-slp-infopath-extension.html" target="_blank"&gt;SLP - InfoPath extension for custom lookup pages&lt;/a&gt;&lt;/h5&gt;I decided to reuse it in a different context and supported way.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;An example&lt;/strong&gt;&lt;br /&gt;
Imagine you have a list of links and the link is formatted like:&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://url/newitem.aspx?title=StepByStep&amp;amp;BookID=12&amp;amp;Prize=25"&gt;http://url/newitem.aspx?title=StepByStep&amp;amp;BookID=12&amp;amp;Prize=25&lt;/a&gt;&lt;/blockquote&gt;Now, if you would feed this to an InfoPath form you will notice that the &lt;strong&gt;Title&lt;/strong&gt; field will be pulled from the query string as a default value to the InfoPath form field that is named Title. So far, so good. But what about the other two values?&lt;br /&gt;
&lt;br /&gt;
The &lt;strong&gt;trick&lt;/strong&gt; is to edit the page that is showing your InfoPath form, add a web part to it that contains a piece of JavaScript and let it provision your InfoPath form. There are some nasty things that we need to solve but let’s start by creating a custom InfoPath form by creating a list that will store Book Orders.&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: small;"&gt;Create the custom New Item InfoPath form&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
The quickest way of doing this is by editing the default New Item form from within the browser.&lt;br /&gt;
1. Create a &lt;strong&gt;site&lt;/strong&gt; using the Team Site template&lt;br /&gt;
&lt;br /&gt;
2. Site Actions –&amp;gt; More Options –&amp;gt; List –&amp;gt; &lt;strong&gt;Custom&lt;/strong&gt; &lt;strong&gt;List&lt;/strong&gt;. Name: BookOrders&lt;br /&gt;
&lt;br /&gt;
3. On the BookOrders list –&amp;gt; Ribbon –&amp;gt; Create Column –&amp;gt; &lt;strong&gt;BookId&lt;/strong&gt; –&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
4. Create Column –&amp;gt; &lt;strong&gt;Prize&lt;/strong&gt; –&amp;gt; OK&lt;br /&gt;
5. Ribbon –&amp;gt; Customize list section –&amp;gt; Click the &lt;a href="http://lh3.ggpht.com/_lMdXhBkQ6IA/TZCAg-Nn8fI/AAAAAAAACi0/k2eCctHC0qg/s1600-h/image3.png"&gt;&lt;img alt="image" border="0" height="21" src="http://lh4.ggpht.com/_lMdXhBkQ6IA/TZCAhOqzL3I/AAAAAAAACi4/bTnGAW8bS3c/image_thumb1.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; margin-left: 0px; margin-right: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="31" /&gt;&lt;/a&gt; icon (&lt;strong&gt;Modify Form web parts&lt;/strong&gt;)&lt;br /&gt;
&lt;br /&gt;
6. Choose &lt;strong&gt;Default new form&lt;/strong&gt; from the drop down. Your screen should look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh6.ggpht.com/_lMdXhBkQ6IA/TZCAhpOzPsI/AAAAAAAACi8/9J97iQNa4iw/s1600-h/image8.png"&gt;&lt;img alt="image" border="0" height="173" src="http://lh5.ggpht.com/_lMdXhBkQ6IA/TZCAiDukIwI/AAAAAAAACjA/4NdNaKwbO3w/image_thumb4.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="564" /&gt;&lt;/a&gt;&lt;br /&gt;
7. Leave it like this, later on we will return here to&lt;strong&gt; Add a web part&lt;/strong&gt;&lt;br /&gt;
If you would render this InfoPath form and inspect the page elements you will discover that there are no elements that contain the&lt;strong&gt; IDs&lt;/strong&gt; BookID or Prize. Instead you will see all kinds of GUID like numbers as IDs. Basically these refer to the naming containers. So how do we &lt;strong&gt;map &lt;/strong&gt;query string key value combinations to these page elements on the form? That, is our neat little trick!&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: small;"&gt;Add special tags to InfoPath form elements&lt;br /&gt;
&lt;/span&gt;&lt;/strong&gt;In this paragraph we will edit our InfoPath form using … InfoPath and add some tags to the input fields. These tags will be used to map the fields to the Query string keys.&lt;br /&gt;
&lt;br /&gt;
7. Stop editing the page and go back to your list&lt;strong&gt; BookOrders&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
8. Make sure you have the List selected so that the Ribbon shows again. From List Tools –&amp;gt; List menu select the &lt;strong&gt;Customize Form button&lt;/strong&gt; (the big purple InfoPath icon in the Ribbon)&lt;br /&gt;
&lt;br /&gt;
9. InfoPath will be launched and the form will open&lt;br /&gt;
&lt;br /&gt;
10. Right-Click on the BookId field and choose &lt;strong&gt;Text Box properties&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
11. Select the Tab &lt;strong&gt;Advanced&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
12. Under screen tip enter a special prepared&lt;strong&gt; tag&lt;/strong&gt; which consists of two parts:&lt;br /&gt;
&lt;blockquote&gt;&lt;strong&gt;&lt;span style="color: #0080ff;"&gt;=BookID:Enter your book ID here&lt;/span&gt;&lt;/strong&gt;&lt;/blockquote&gt;The first part is our &lt;strong&gt;key&lt;/strong&gt; value and the second part is our &lt;strong&gt;Title&lt;/strong&gt; field which will eventually be used as a screen tip. &lt;br /&gt;
&lt;br /&gt;
13. Repeat step 12 for the&lt;strong&gt; Prize field&lt;/strong&gt;:&lt;br /&gt;
&lt;blockquote&gt;&lt;strong&gt;&lt;span style="color: #0080ff;"&gt;=Prize:Cost per book&lt;/span&gt;&lt;/strong&gt;&lt;/blockquote&gt;14. Click on the &lt;strong&gt;Quick Publish icon&lt;/strong&gt; in the Quick Access toolbar (the lightning bolt with the arrow icon) and close InfoPath&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: small;"&gt;Add JavaScript to pull values from query string and provision Form&lt;br /&gt;
&lt;/span&gt;&lt;/strong&gt;If we would stop here, nothing would happen. If you would click Add new item and hover with your mouse over the BookID field, you would notice that the screen tip would appear just like we entered above: =BookID:Enter your BookID here. Now, let us add a web part to our custom InfoPath New Item page which will contain our JavaScript. We will use a content editor web part for that.&lt;br /&gt;
15. Go back to your BookOrders list.&amp;nbsp; From the ribbon select the &lt;strong&gt;Modify form web parts&lt;/strong&gt; icon and from the drop down select &lt;strong&gt;(Item) New Form&lt;/strong&gt; as shown below.&lt;br /&gt;
&lt;a href="http://lh3.ggpht.com/_lMdXhBkQ6IA/TZCAii6o0vI/AAAAAAAACjE/uAvPZE76nXs/s1600-h/image11.png"&gt;&lt;img alt="image" border="0" height="210" src="http://lh5.ggpht.com/_lMdXhBkQ6IA/TZCAjJXoiJI/AAAAAAAACjI/_qUujlRXbBw/image_thumb5.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="184" /&gt;&lt;/a&gt;16. Click &lt;strong&gt;Add Web part&lt;/strong&gt; in the top most zone and add a Content Editor web part to the page.&lt;br /&gt;
&lt;br /&gt;
17. Select the web part. From the ribbon select the &lt;strong&gt;HTML&lt;/strong&gt; icon as shown below&lt;br /&gt;
&lt;a href="http://lh3.ggpht.com/_lMdXhBkQ6IA/TZCAjtHEDTI/AAAAAAAACjM/CQBDrDb6pjQ/s1600-h/image14.png"&gt;&lt;img alt="image" border="0" height="120" src="http://lh5.ggpht.com/_lMdXhBkQ6IA/TZCAj9NVADI/AAAAAAAACjQ/4-pJjM6O4EM/image_thumb6.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="152" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
18. Select &lt;strong&gt;Edit HTML source&lt;/strong&gt; from the drop down. A popup dialog shows where you can enter the HTML.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="border-bottom: #cccccc 3px inset; border-left: #cccccc 3px inset; border-right: #cccccc 3px inset; border-top: #cccccc 3px inset; filter: progid:dximagetransform.microsoft.gradient(gradienttype=0,startcolorstr=#eeeeee,endcolorstr=#ffffff); height: 300px; overflow: auto; width: 100%; word-wrap: normal;"&gt;&lt;pre style="color: black; font-size: 11px; word-wrap: normal;"&gt;&lt;img cursor="hand" onclick="window.clipboardData.setData('Text',this.parentNode.innerText);" src="http://hermansberghem.googlepages.com/copy.png" /&gt;&lt;div class="code"&gt;&lt;pre class="csharp" style="font-family: monospace;"&gt;&lt;pre class="code"&gt;&lt;span style="color: darkgreen;"&gt;// The following code just contains snippets. The rest you'll have to figure out yourself
// I can only share what is common sense
// That however, should be quite easy

&lt;/span&gt;&lt;span style="color: blue;"&gt;function &lt;/span&gt;PasteQS() {

&lt;span style="color: darkgreen;"&gt;// Get a collection of all INPUT elements on the page
&lt;/span&gt;&lt;span style="color: blue;"&gt;var &lt;/span&gt;inputFieldCollection = document.getElementsByTagName(&lt;span style="color: maroon;"&gt;"input"&lt;/span&gt;);

&lt;span style="color: darkgreen;"&gt;// Loop through INPUT elements on the page
&lt;/span&gt;&lt;span style="color: blue;"&gt;for &lt;/span&gt;(itemIndex = 0; itemIndex &amp;lt; inputFieldCollection.length; itemIndex++) {

&lt;span style="color: darkgreen;"&gt;// Some code skipped ...

// For all elements which have a TITLE attribute
&lt;/span&gt;&lt;span style="color: blue;"&gt;if &lt;/span&gt;(inputItem.title) {

&lt;span style="color: darkgreen;"&gt;// Does the TITLE property contain a value with a '=' in it
&lt;/span&gt;&lt;span style="color: blue;"&gt;var &lt;/span&gt;valuePos = titleValue.indexOf(&lt;span style="color: maroon;"&gt;"="&lt;/span&gt;);
&lt;span style="color: blue;"&gt;if &lt;/span&gt;(valuePos != -1) {

&lt;span style="color: darkgreen;"&gt;// Some code skipped ...
// Remember your constructued field is something like =KEY:TITLE
// keyValue = So fetch the KEY value, this you use to pull the right value from the Querystring
// titleValue = Also fetch the TITLE value, this you use to set the overwrite the TITLE field of the INPUT element
//    we don't want users to see our =KEY:TITLE value when they hover their mouse right?

// Paste the value from the Querystring into your form
&lt;/span&gt;inputItem.value = queryString(keyValue);
}
}
}
}

&lt;span style="color: blue;"&gt;function &lt;/span&gt;PageQuery(q) {
&lt;span style="color: blue;"&gt;if &lt;/span&gt;(q.length &amp;gt; 1) {
&lt;span style="color: blue;"&gt;this&lt;/span&gt;.q = q.substring(1, q.length);
}
&lt;span style="color: blue;"&gt;else &lt;/span&gt;{
&lt;span style="color: blue;"&gt;this&lt;/span&gt;.q = &lt;span style="color: blue;"&gt;null&lt;/span&gt;;
}
&lt;span style="color: blue;"&gt;this&lt;/span&gt;.keyValuePairs = &lt;span style="color: blue;"&gt;new &lt;/span&gt;Array();
&lt;span style="color: blue;"&gt;if &lt;/span&gt;(q) {
&lt;span style="color: blue;"&gt;for &lt;/span&gt;(&lt;span style="color: blue;"&gt;var &lt;/span&gt;i = 0; i &amp;lt; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.q.split(&lt;span style="color: maroon;"&gt;"&amp;amp;"&lt;/span&gt;).length; i++) {
&lt;span style="color: blue;"&gt;this&lt;/span&gt;.keyValuePairs[i] = &lt;span style="color: blue;"&gt;this&lt;/span&gt;.q.split(&lt;span style="color: maroon;"&gt;"&amp;amp;"&lt;/span&gt;)[i];
}
}
&lt;span style="color: blue;"&gt;this&lt;/span&gt;.getKeyValuePairs = &lt;span style="color: blue;"&gt;function &lt;/span&gt;() { &lt;span style="color: blue;"&gt;return this&lt;/span&gt;.keyValuePairs; }
&lt;span style="color: blue;"&gt;this&lt;/span&gt;.getValue = &lt;span style="color: blue;"&gt;function &lt;/span&gt;(s) {
&lt;span style="color: blue;"&gt;for &lt;/span&gt;(&lt;span style="color: blue;"&gt;var &lt;/span&gt;j = 0; j &amp;lt; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.keyValuePairs.length; j++) {
&lt;span style="color: blue;"&gt;if &lt;/span&gt;(&lt;span style="color: blue;"&gt;this&lt;/span&gt;.keyValuePairs[j].split(&lt;span style="color: maroon;"&gt;"="&lt;/span&gt;)[0] == s)
&lt;span style="color: blue;"&gt;return this&lt;/span&gt;.keyValuePairs[j].split(&lt;span style="color: maroon;"&gt;"="&lt;/span&gt;)[1];
}
&lt;span style="color: blue;"&gt;return false&lt;/span&gt;;
}
&lt;span style="color: blue;"&gt;this&lt;/span&gt;.getParameters = &lt;span style="color: blue;"&gt;function &lt;/span&gt;() {
&lt;span style="color: blue;"&gt;var &lt;/span&gt;a = &lt;span style="color: blue;"&gt;new &lt;/span&gt;Array(&lt;span style="color: blue;"&gt;this&lt;/span&gt;.getLength());
&lt;span style="color: blue;"&gt;for &lt;/span&gt;(&lt;span style="color: blue;"&gt;var &lt;/span&gt;j = 0; j &amp;lt; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.keyValuePairs.length; j++) {
a[j] = &lt;span style="color: blue;"&gt;this&lt;/span&gt;.keyValuePairs[j].split(&lt;span style="color: maroon;"&gt;"="&lt;/span&gt;)[0];
}
&lt;span style="color: blue;"&gt;return &lt;/span&gt;a;
}
&lt;span style="color: blue;"&gt;this&lt;/span&gt;.getLength = &lt;span style="color: blue;"&gt;function &lt;/span&gt;() { &lt;span style="color: blue;"&gt;return this&lt;/span&gt;.keyValuePairs.length; }
}

&lt;span style="color: blue;"&gt;function &lt;/span&gt;queryString(key) {
&lt;span style="color: blue;"&gt;var &lt;/span&gt;page = &lt;span style="color: blue;"&gt;new &lt;/span&gt;PageQuery(window.location.search);
&lt;span style="color: blue;"&gt;return &lt;/span&gt;unescape(page.getValue(key));
}

&lt;/pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
19. Save the page and try it yourself!&lt;br /&gt;
&lt;br /&gt;
20. Construct a link to the modified InfoPath form. Take into account that this is not the same URL as was before you started to edit the InfoPath New form page. What you can do is click on Add item and then open the dialog in a new TAB, copy the URL&lt;br /&gt;
&lt;br /&gt;
21. To test your form add something to the copied URL like: BookID=12&amp;amp;Prize=15. You will notice that the info will be provisioned automatically into your Form.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: small;"&gt;Things you need to add as well&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
22. Push your script to execute on page load using _spBodyOnLoadFunctionNames.push&lt;br /&gt;
&lt;br /&gt;
23. When you &lt;strong&gt;submit&lt;/strong&gt; the form you will discover that the data is not saved. You will need to tell InfoPath that the info on the form has changed. The easiest way to do this is after you have pasted the data into the Form, call the &lt;strong&gt;focus&lt;/strong&gt; and &lt;strong&gt;blur&lt;/strong&gt; method for each element that you changed. Do this after you have pasted the last value on the form (so build an array of elements you have changed).&lt;br /&gt;
&lt;br /&gt;
24. When testing I discovered that in a certain non IE browser, the script was already running before all page elements were rendered correctly. I was lazy and added a slight delay (window.setTimeOut) which is baaaad. However, there is more you can do (like script dependencies and so on) and if you do, please add it to this post so that I can use it. *grin*&lt;br /&gt;
&lt;br /&gt;
Well, that is it, hopefully you now see that this is really powerful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-8253576072190777304?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Yrw9enk1z9I:H72BwwMTQHU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Yrw9enk1z9I:H72BwwMTQHU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Yrw9enk1z9I:H72BwwMTQHU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Yrw9enk1z9I:H72BwwMTQHU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=Yrw9enk1z9I:H72BwwMTQHU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Yrw9enk1z9I:H72BwwMTQHU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Yrw9enk1z9I:H72BwwMTQHU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=Yrw9enk1z9I:H72BwwMTQHU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Yrw9enk1z9I:H72BwwMTQHU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Yrw9enk1z9I:H72BwwMTQHU:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=Yrw9enk1z9I:H72BwwMTQHU:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Yrw9enk1z9I:H72BwwMTQHU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Yrw9enk1z9I:H72BwwMTQHU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=Yrw9enk1z9I:H72BwwMTQHU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Yrw9enk1z9I:H72BwwMTQHU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/Yrw9enk1z9I" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/Yrw9enk1z9I/trick-use-query-string-values-to.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_lMdXhBkQ6IA/TZCAhOqzL3I/AAAAAAAACi4/bTnGAW8bS3c/s72-c/image_thumb1.png?imgmax=800" height="72" width="72" /><feedburner:origLink>http://hermansberghem.blogspot.com/2011/03/trick-use-query-string-values-to.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-3074464652532452610</guid><pubDate>Mon, 28 Mar 2011 19:00:00 +0000</pubDate><atom:updated>2011-06-13T16:28:33.749+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Development</category><category domain="http://www.blogger.com/atom/ns#">SP2010</category><title>Complete list of custom action IDs</title><description>The article &lt;a href="http://msdn.microsoft.com/en-us/library/bb802730.aspx" target="_blank"&gt;Default Custom Action Locations and IDs&lt;/a&gt; describes a table which shows the locations, custom action group IDs, and custom action IDs that are used in the Custom action element.&lt;br /&gt;
Unfortunately it does not cover everything so I decided to build are more &lt;strong&gt;complete list&lt;/strong&gt; and post it on my blog.&lt;br /&gt;
&lt;br /&gt;
So you might be wondering what this list is all about. I am using it a lot to hide actions from for instance the Site Settings or menus. In other cases you are planning to add your own actions to Ribbons, Central Admin, Site settings, Context menus etc. If you build such a feature using for instance the &lt;strong&gt;CKSDEV Hide Custom Action&lt;/strong&gt; feature, you need to enter three values: the location, the group and the action ID. And that is exactly where this list comes in handy. Enjoy!&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-VfuFh7P8PuQ/TfYegJZDjJI/AAAAAAAAClE/bFNrUAIPrJw/s1600/image%255B4%255D.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-VfuFh7P8PuQ/TfYegJZDjJI/AAAAAAAAClE/bFNrUAIPrJw/s1600/image%255B4%255D.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;&lt;strong&gt;&lt;a href="https://docs.google.com/leaf?id=0B_MCAwqhT5MjNDJhNDA3NGMtNjhjYi00ZDQ0LThjODAtNzg2YzY1MzFkYTEy&amp;amp;hl=en" target="_blank"&gt;Download: Complete list of all Custom Action IDs, Location and Group IDs&lt;/a&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-3074464652532452610?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=ZNlqYcVTO0A:0w5BacG3Ius:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=ZNlqYcVTO0A:0w5BacG3Ius:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=ZNlqYcVTO0A:0w5BacG3Ius:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=ZNlqYcVTO0A:0w5BacG3Ius:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=ZNlqYcVTO0A:0w5BacG3Ius:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=ZNlqYcVTO0A:0w5BacG3Ius:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=ZNlqYcVTO0A:0w5BacG3Ius:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=ZNlqYcVTO0A:0w5BacG3Ius:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=ZNlqYcVTO0A:0w5BacG3Ius:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=ZNlqYcVTO0A:0w5BacG3Ius:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=ZNlqYcVTO0A:0w5BacG3Ius:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=ZNlqYcVTO0A:0w5BacG3Ius:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=ZNlqYcVTO0A:0w5BacG3Ius:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=ZNlqYcVTO0A:0w5BacG3Ius:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=ZNlqYcVTO0A:0w5BacG3Ius:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/ZNlqYcVTO0A" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/ZNlqYcVTO0A/complete-list-of-custom-action-ids.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-VfuFh7P8PuQ/TfYegJZDjJI/AAAAAAAAClE/bFNrUAIPrJw/s72-c/image%255B4%255D.png" height="72" width="72" /><feedburner:origLink>http://hermansberghem.blogspot.com/2011/03/complete-list-of-custom-action-ids.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-4170568575469445291</guid><pubDate>Sun, 27 Mar 2011 21:00:00 +0000</pubDate><atom:updated>2011-04-08T12:26:13.674+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SP2010</category><category domain="http://www.blogger.com/atom/ns#">Configuration</category><title>Hiding site templates</title><description>According to the article “&lt;a href="http://support.microsoft.com/kb/898631"&gt;Supported and unsupported scenarios for working with custom site definitions and custom area definitions in SharePoint 2003, 2007 and 2010&lt;/a&gt;”, modifying the webtemp*.xml files is not supported by Microsoft. &lt;br /&gt;
&lt;br /&gt;
That raises the question how to hide site templates that you do not want to offer to the business. A method that was often used is to edit the webtemp*.xml files and change the attribute to hidden. Well, basically, that is still the technique on how to do it but by using copies of the original files. SharePoint will merge the files and you change will override the original setting.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh6.ggpht.com/_lMdXhBkQ6IA/TYx8f4AOFGI/AAAAAAAACg0/AZY0u-cI6kY/s1600-h/image%5B4%5D.png"&gt;&lt;img alt="Some site templates are hidden" border="0" height="373" src="http://lh6.ggpht.com/_lMdXhBkQ6IA/TYx8ginb1mI/AAAAAAAACg4/k3MucfOLuBY/image_thumb%5B2%5D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="Some site templates are hidden" width="526" /&gt;&lt;/a&gt;&lt;br /&gt;
It is no rocket science. This is how to do it:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Create a Visual Studio &lt;strong&gt;Empty SharePoint project&lt;/strong&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Add a &lt;strong&gt;mapped folder&lt;/strong&gt; to the SharePoint root&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Add folders for 1033 and XML&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Add an empty XML file the XML folder called &lt;strong&gt;webtempHide.xml&lt;/strong&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Copy &amp;lt;template&amp;gt; and &amp;lt;configuration&amp;gt; definitions from the existing webtemp*.xml files that you want to hide from you 14\TEMPLATE\1033\XML\ location&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Make sure the attribute ‘&lt;strong&gt;Hidden&lt;/strong&gt;’ is set to &lt;strong&gt;TRUE&lt;/strong&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploy&lt;/strong&gt; solution&lt;/li&gt;
&lt;/ol&gt;Example – Hide Access related site templates:  &lt;br /&gt;
&lt;div style="border-bottom: #cccccc 3px inset; border-left: #cccccc 3px inset; border-right: #cccccc 3px inset; border-top: #cccccc 3px inset; filter: progid:dximagetransform.microsoft.gradient(gradienttype=0,startcolorstr=#eeeeee,endcolorstr=#ffffff); height: 300px; overflow: auto; width: 100%; word-wrap: normal;"&gt;&lt;pre style="color: black; font-size: 11px; word-wrap: normal;"&gt;&lt;img cursor="hand" onclick="window.clipboardData.setData('Text',this.parentNode.innerText);" src="http://hermansberghem.googlepages.com/copy.png" /&gt;&lt;div class="code"&gt;&lt;pre class="csharp" style="font-family: monospace;"&gt;&lt;pre class="code"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Template &lt;/span&gt;&lt;span style="color: red;"&gt;Name&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;ACCSRV&lt;/span&gt;" &lt;span style="color: red;"&gt;SetupPath&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;SiteTemplates\AccSrv&lt;/span&gt;" &lt;span style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;2764&lt;/span&gt;"&lt;span style="color: blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Configuration &lt;/span&gt;&lt;span style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;0&lt;/span&gt;" &lt;span style="color: red;"&gt;Title&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Access Services Site&lt;/span&gt;" &lt;span style="color: red;"&gt;Hidden&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;TRUE&lt;/span&gt;" &lt;span style="color: red;"&gt;ImageUrl&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;/_layouts/images/bsprev.png&lt;/span&gt;" &lt;span style="color: red;"&gt;Description&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Microsoft Access Server&lt;/span&gt;" &lt;span style="color: red;"&gt;DisplayCategory&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Collaboration&lt;/span&gt;" &lt;span style="color: blue;"&gt;&amp;gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Configuration&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Configuration &lt;/span&gt;&lt;span style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;1&lt;/span&gt;" &lt;span style="color: red;"&gt;Title&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Assets Web Database&lt;/span&gt;" &lt;span style="color: red;"&gt;Hidden&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;TRUE&lt;/span&gt;" &lt;span style="color: red;"&gt;ImageUrl&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;/_layouts/images/AccessAssets.png&lt;/span&gt;" &lt;span style="color: red;"&gt;Description&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Create an assets database to keep track of assets, including asset details and owners.&lt;/span&gt;" &lt;span style="color: red;"&gt;DisplayCategory&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Web Databases&lt;/span&gt;" &lt;span style="color: red;"&gt;VisibilityFeatureDependency&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;1CC4B32C-299B-41AA-9770-67715EA05F25&lt;/span&gt;" &lt;span style="color: red;"&gt;SubWebOnly&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;TRUE&lt;/span&gt;" &lt;span style="color: red;"&gt;ProvisionAssembly&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Microsoft.Office.Access.Server.Application, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&lt;/span&gt;" &lt;span style="color: red;"&gt;ProvisionClass&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Microsoft.Office.Access.Server.Template.TemplateProvisioningProvider&lt;/span&gt;" &lt;span style="color: red;"&gt;ProvisionData&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Assets.accdt&lt;/span&gt;" &lt;span style="color: blue;"&gt;&amp;gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Configuration&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Configuration &lt;/span&gt;&lt;span style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;3&lt;/span&gt;" &lt;span style="color: red;"&gt;Title&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Charitable Contributions Web Database&lt;/span&gt;" &lt;span style="color: red;"&gt;Hidden&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;TRUE&lt;/span&gt;" &lt;span style="color: red;"&gt;ImageUrl&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;/_layouts/images/AccessCharitableContributions.png&lt;/span&gt;" &lt;span style="color: red;"&gt;Description&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Create a database to track information about fundraising campaigns including donations made by contributors, campaign related events, and pending tasks.&lt;/span&gt;" &lt;span style="color: red;"&gt;DisplayCategory&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Web Databases&lt;/span&gt;" &lt;span style="color: red;"&gt;VisibilityFeatureDependency&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;1CC4B32C-299B-41AA-9770-67715EA05F25&lt;/span&gt;" &lt;span style="color: red;"&gt;SubWebOnly&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;TRUE&lt;/span&gt;" &lt;span style="color: red;"&gt;ProvisionAssembly&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Microsoft.Office.Access.Server.Application, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&lt;/span&gt;" &lt;span style="color: red;"&gt;ProvisionClass&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Microsoft.Office.Access.Server.Template.TemplateProvisioningProvider&lt;/span&gt;" &lt;span style="color: red;"&gt;ProvisionData&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;CharitableContributions.accdt&lt;/span&gt;" &lt;span style="color: blue;"&gt;&amp;gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Configuration&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Configuration &lt;/span&gt;&lt;span style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;4&lt;/span&gt;" &lt;span style="color: red;"&gt;Title&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Contacts Web Database&lt;/span&gt;" &lt;span style="color: red;"&gt;Hidden&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;TRUE&lt;/span&gt;" &lt;span style="color: red;"&gt;ImageUrl&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;/_layouts/images/AccessContacts.png&lt;/span&gt;" &lt;span style="color: red;"&gt;Description&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Create a contacts database to manage information about people that your team works with, such as customers and partners.&lt;/span&gt;" &lt;span style="color: red;"&gt;DisplayCategory&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Web Databases&lt;/span&gt;" &lt;span style="color: red;"&gt;VisibilityFeatureDependency&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;1CC4B32C-299B-41AA-9770-67715EA05F25&lt;/span&gt;" &lt;span style="color: red;"&gt;SubWebOnly&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;TRUE&lt;/span&gt;" &lt;span style="color: red;"&gt;ProvisionAssembly&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Microsoft.Office.Access.Server.Application, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&lt;/span&gt;" &lt;span style="color: red;"&gt;ProvisionClass&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Microsoft.Office.Access.Server.Template.TemplateProvisioningProvider&lt;/span&gt;" &lt;span style="color: red;"&gt;ProvisionData&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Contacts.accdt&lt;/span&gt;" &lt;span style="color: blue;"&gt;&amp;gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Configuration&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Configuration &lt;/span&gt;&lt;span style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;6&lt;/span&gt;" &lt;span style="color: red;"&gt;Title&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Issues Web Database&lt;/span&gt;" &lt;span style="color: red;"&gt;Hidden&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;TRUE&lt;/span&gt;" &lt;span style="color: red;"&gt;ImageUrl&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;/_layouts/images/AccessIssues.png&lt;/span&gt;" &lt;span style="color: red;"&gt;Description&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Create an issues database to manage a set of issues or problems. You can assign, prioritize, and follow the progress of issues from start to finish.&lt;/span&gt;" &lt;span style="color: red;"&gt;DisplayCategory&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Web Databases&lt;/span&gt;" &lt;span style="color: red;"&gt;VisibilityFeatureDependency&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;1CC4B32C-299B-41AA-9770-67715EA05F25&lt;/span&gt;" &lt;span style="color: red;"&gt;SubWebOnly&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;TRUE&lt;/span&gt;" &lt;span style="color: red;"&gt;ProvisionAssembly&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Microsoft.Office.Access.Server.Application, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&lt;/span&gt;" &lt;span style="color: red;"&gt;ProvisionClass&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Microsoft.Office.Access.Server.Template.TemplateProvisioningProvider&lt;/span&gt;" &lt;span style="color: red;"&gt;ProvisionData&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Issues.accdt&lt;/span&gt;" &lt;span style="color: blue;"&gt;&amp;gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Configuration&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Configuration &lt;/span&gt;&lt;span style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;5&lt;/span&gt;" &lt;span style="color: red;"&gt;Title&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Projects Web Database&lt;/span&gt;" &lt;span style="color: red;"&gt;Hidden&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;TRUE&lt;/span&gt;" &lt;span style="color: red;"&gt;ImageUrl&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;/_layouts/images/AccessProjects.png&lt;/span&gt;" &lt;span style="color: red;"&gt;Description&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Create a project tracking database to track multiple projects, and assign tasks to different people.&lt;/span&gt;" &lt;span style="color: red;"&gt;DisplayCategory&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Web Databases&lt;/span&gt;" &lt;span style="color: red;"&gt;VisibilityFeatureDependency&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;1CC4B32C-299B-41AA-9770-67715EA05F25&lt;/span&gt;" &lt;span style="color: red;"&gt;SubWebOnly&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;TRUE&lt;/span&gt;" &lt;span style="color: red;"&gt;ProvisionAssembly&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Microsoft.Office.Access.Server.Application, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&lt;/span&gt;" &lt;span style="color: red;"&gt;ProvisionClass&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Microsoft.Office.Access.Server.Template.TemplateProvisioningProvider&lt;/span&gt;" &lt;span style="color: red;"&gt;ProvisionData&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Projects.accdt&lt;/span&gt;" &lt;span style="color: blue;"&gt;&amp;gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Configuration&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Template&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;

&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
SharePoint will still merge existing webtemp*.xml files with your additions where you addition will overwrite existing definitions. No need for modifying existing webtemp*.xml files anymore.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-4170568575469445291?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=7eGG-pF4WSM:XtttJBve8ds:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=7eGG-pF4WSM:XtttJBve8ds:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=7eGG-pF4WSM:XtttJBve8ds:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=7eGG-pF4WSM:XtttJBve8ds:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=7eGG-pF4WSM:XtttJBve8ds:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=7eGG-pF4WSM:XtttJBve8ds:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=7eGG-pF4WSM:XtttJBve8ds:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=7eGG-pF4WSM:XtttJBve8ds:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=7eGG-pF4WSM:XtttJBve8ds:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=7eGG-pF4WSM:XtttJBve8ds:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=7eGG-pF4WSM:XtttJBve8ds:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=7eGG-pF4WSM:XtttJBve8ds:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=7eGG-pF4WSM:XtttJBve8ds:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=7eGG-pF4WSM:XtttJBve8ds:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=7eGG-pF4WSM:XtttJBve8ds:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/7eGG-pF4WSM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/7eGG-pF4WSM/hiding-site-templates.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_lMdXhBkQ6IA/TYx8ginb1mI/AAAAAAAACg4/k3MucfOLuBY/s72-c/image_thumb%5B2%5D.png?imgmax=800" height="72" width="72" /><feedburner:origLink>http://hermansberghem.blogspot.com/2011/03/hiding-site-templates.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-1773131470498852326</guid><pubDate>Wed, 02 Mar 2011 11:06:00 +0000</pubDate><atom:updated>2011-04-08T12:26:49.091+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Authentication</category><category domain="http://www.blogger.com/atom/ns#">SP2010</category><category domain="http://www.blogger.com/atom/ns#">Excel</category><title>Excel Services could not obtains a Windows Identity</title><description>The &lt;b&gt;SP2010 Kerberos guide&lt;/b&gt; is really helpful. Sometimes though you just forget to execute a step. Which of course leads to happy accidents.&lt;br /&gt;
I do not necessarily say it happens to &lt;i&gt;me&lt;/i&gt; *evil grin* but let me explain the issue and show you the step from the guide that I, uhh, someone missed....&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;The issue&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
If you have a workbook with some &lt;b&gt;external data&lt;/b&gt; in it and you refresh the data in the sheet (Data -&amp;gt; Refresh all connections), you might see the following messages appearing in the ULS and Event logs:&lt;br /&gt;
&lt;br /&gt;
Message in browser:&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- The data connection uses Windows Authentication and user credentials could not be delegated&lt;br /&gt;
&lt;br /&gt;
ULS entry start:&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- Metadata: Product = Excel Services Application, Category = Excel Calculation Services, Level = Medium&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- Message: starting request of type RefreshAll&lt;br /&gt;
&lt;br /&gt;
ULS entry first error:&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- Metadata: Product = SharePoint Foundation, Category = Claims Authentication&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- Message: &lt;b&gt;Could not retrieve a valid windows identity&lt;/b&gt; for NTName='DOMAIN\USERNAME', UPN='USERNAME@FQDN'&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- Message: Token could not be zero&lt;br /&gt;
&lt;br /&gt;
ULS entry second error:&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- Metadata: Product = Excel Services Application, Category = Excel Calculation Services&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- Message: Failed to get WindowsIdentity from IClaimsIdentity&lt;br /&gt;
&lt;br /&gt;
Windows Event Viewer entry:&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- Metadata: eventId = 5252, Task Category = External Data&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;- Message: &lt;b&gt;Credential delegation failed&lt;/b&gt; because Excel Services Application was unable to obtain a Windows Identity&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;The solution&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Log onto the servers which are running C2WTS and give the C2WTS the following permissions:&lt;br /&gt;
&lt;br /&gt;
a.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Add the service account to the local &lt;b&gt;Administrators Groups&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
b.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;In &lt;b&gt;local security policy&lt;/b&gt; (secpol.msc) under user rights assignment give the service account the following permissions:&lt;br /&gt;
&lt;br /&gt;
i.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Act as part of the operating system&lt;br /&gt;
ii.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Impersonate a client after authentication&lt;br /&gt;
iii.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Log on as a service (if you have started it before from within Central Admin, this may already be the case)&lt;br /&gt;
&lt;br /&gt;
c.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Safe side? Restart IIS&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-1773131470498852326?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Cxn6A8MCXlA:5D0OqKZmi0I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Cxn6A8MCXlA:5D0OqKZmi0I:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Cxn6A8MCXlA:5D0OqKZmi0I:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Cxn6A8MCXlA:5D0OqKZmi0I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=Cxn6A8MCXlA:5D0OqKZmi0I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Cxn6A8MCXlA:5D0OqKZmi0I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Cxn6A8MCXlA:5D0OqKZmi0I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=Cxn6A8MCXlA:5D0OqKZmi0I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Cxn6A8MCXlA:5D0OqKZmi0I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Cxn6A8MCXlA:5D0OqKZmi0I:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=Cxn6A8MCXlA:5D0OqKZmi0I:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Cxn6A8MCXlA:5D0OqKZmi0I:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Cxn6A8MCXlA:5D0OqKZmi0I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=Cxn6A8MCXlA:5D0OqKZmi0I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=Cxn6A8MCXlA:5D0OqKZmi0I:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/Cxn6A8MCXlA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/Cxn6A8MCXlA/excel-services-could-not-obtains.html</link><author>noreply@blogger.com (Servé Hermans)</author><feedburner:origLink>http://hermansberghem.blogspot.com/2011/03/excel-services-could-not-obtains.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-5212231347332538819</guid><pubDate>Thu, 03 Feb 2011 12:41:00 +0000</pubDate><atom:updated>2011-04-08T12:27:10.101+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SP2010</category><category domain="http://www.blogger.com/atom/ns#">Architecture</category><title>SP2010 Do we need to Load balance the Topology Service Application</title><description>&lt;div&gt;This post is dedicated to the discussion around whether if you need to load balance the Topology service app in a multi farm scenario where you have a farm that consumes Services from another farm. &lt;/div&gt;&lt;div&gt;I will try to reference the various blog posts that are about the same subject and at the same time show you a detailed diagram that outlines some of it.&lt;/div&gt;&lt;div&gt;The discussion I would like to trigger here is two fold: &lt;/div&gt;&lt;ul&gt;&lt;li&gt;First of all do we need to &lt;strong&gt;load&lt;/strong&gt; &lt;strong&gt;balance&lt;/strong&gt; the topology service to achieve higher availibility?&lt;/li&gt;
&lt;li&gt;Secondly, I have seen contradictions in the blog articles. Some people claim the Topology service is responsible for load balancing across service app instances whereas other people claim that these end point urls are stored in the &lt;strong&gt;cache&lt;/strong&gt; of the service app proxies on the consumer farm.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Now let me stop throwing terms and start right there at the beginning by describing a common real world scenario.&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;Real World Scenario: cross farm services&lt;/h2&gt;Assume you want to &lt;strong&gt;centralize&lt;/strong&gt; your Search, User profiles and Corporate taxonomies. What would you do? Maybe you are planning to host different farms like a &lt;strong&gt;dedicated&lt;/strong&gt; farm for your intranet, a &lt;strong&gt;specialized&lt;/strong&gt; farm for your Departments where they can launch apps and a &lt;strong&gt;commodity&lt;/strong&gt; farm for basic, standard&amp;nbsp;team sites. To allow these farms to share the services you will need to introduce another farm often referred to as the &lt;strong&gt;Enterprise&lt;/strong&gt; &lt;strong&gt;services&lt;/strong&gt; farm.&lt;br /&gt;
Imagine you have created an Enterprise services farm which has two Application servers. Take an example: the managed metadata service app. Typically you will have a &lt;strong&gt;service&lt;/strong&gt; &lt;strong&gt;instance&lt;/strong&gt; running on each Application server. Both URIs will be published by the Topology service app to each consuming farm. Secondly the consuming farms will push there URIs to the URI cache of each Service App proxy. This may sound complicated but if you look at the diagram below you might be better able to understand it.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Example: detailed overview Shared Services&lt;/h2&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_lMdXhBkQ6IA/TUqb0xm9c7I/AAAAAAAACf4/Q7QXxte4kvg/s1600/Cross_Farm_Services.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="208" s5="true" src="http://4.bp.blogspot.com/_lMdXhBkQ6IA/TUqb0xm9c7I/AAAAAAAACf4/Q7QXxte4kvg/s320/Cross_Farm_Services.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
There are some steps involved because you are able to consume services between farms. You will need to setup a &lt;strong&gt;trust&lt;/strong&gt; and next &lt;strong&gt;publish&lt;/strong&gt; the services.&lt;br /&gt;
After you have done that you are able to consume the services on the Consuming farm. &lt;br /&gt;
&lt;br /&gt;
To illustrate: if you have a webpart that makes a call to the &lt;strong&gt;managed&lt;/strong&gt; &lt;strong&gt;metadata&lt;/strong&gt; service app, it will use the service app proxy to determine the end-point of the app. The first time the service app proxy will retrieve the URIs from the topology service app at the Publishing farm. After that it will cache the end points in its own &lt;strong&gt;URI&lt;/strong&gt; &lt;strong&gt;cache&lt;/strong&gt;. Its own &lt;strong&gt;load&lt;/strong&gt; &lt;strong&gt;balancing&lt;/strong&gt; &lt;strong&gt;component&lt;/strong&gt; is using both URIs. In case one of them does not respond, the URI will be taken offline.&lt;br /&gt;
&lt;br /&gt;
Secondly there is a &lt;strong&gt;timer&lt;/strong&gt; &lt;strong&gt;job&lt;/strong&gt;, called the &lt;strong&gt;Application&lt;/strong&gt; &lt;strong&gt;address&lt;/strong&gt; &lt;strong&gt;refresh&lt;/strong&gt; which calls the Topology service app on the Publishing farm every 15 mins. On the Publishing farm, the Topology service app discovers which end point URLs are available and returns those URLs to the Consuming farm. At the Consuming farm these URLs are pushed to the local Service App proxies in case they are updated or deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;The Contradictions&lt;/h2&gt;If you are reading some blog posts you might already be wondering if I am telling you the truth. Fact is, I have stumbled upon some &lt;strong&gt;contradictions&lt;/strong&gt;. &lt;br /&gt;
&lt;br /&gt;
The post written by &lt;strong&gt;Russ&lt;/strong&gt; &lt;strong&gt;Maxwell&lt;/strong&gt;: &lt;a href="http://blogs.msdn.com/b/russmax/archive/2010/05/06/sharepoint-2010-shared-service-architecture-part-2.aspx"&gt;http://blogs.msdn.com/b/russmax/archive/2010/05/06/sharepoint-2010-shared-service-architecture-part-2.aspx&lt;/a&gt;, shows you that after the proxies have cached the URIs locally, they reach out directly to the Service Apps, not requesting the URIs first through the Topology service app.&lt;br /&gt;
&lt;br /&gt;
However, some posts like the ones from &lt;strong&gt;Steve&lt;/strong&gt; &lt;strong&gt;Peschka&lt;/strong&gt;: &lt;a href="http://blogs.technet.com/b/speschka/archive/2011/01/04/additional-info-on-load-balancing-the-sharepoint-2010-topology-service.aspx"&gt;http://blogs.technet.com/b/speschka/archive/2011/01/04/additional-info-on-load-balancing-the-sharepoint-2010-topology-service.aspx&lt;/a&gt;&amp;nbsp;and the one from Josh Gave: &lt;a href="http://blogs.msdn.com/b/besidethepoint/archive/2010/12/08/load-balancing-the-sharepoint-2010-topology-service.aspx"&gt;http://blogs.msdn.com/b/besidethepoint/archive/2010/12/08/load-balancing-the-sharepoint-2010-topology-service.aspx&lt;/a&gt;&amp;nbsp;make it appear if the Topology service is called every time a Service app proxy needs to connect to the Publishing farm. If that would be the case then we might have a single point of failure!&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Single point of failure&lt;/h2&gt;The topology service is often published using a server &lt;strong&gt;NETBIOS&lt;/strong&gt; name and a &lt;strong&gt;port&lt;/strong&gt; &lt;strong&gt;number&lt;/strong&gt; (32844 I believe).. That would indeed mean that we have a single point of failure. &lt;br /&gt;
&lt;br /&gt;
Now, what happens if this service app goes down? To my opinion it means that the Application address refresh job will not be able to update the URI endpoints anymore. Secondly, you would not be able to publish new Service Apps to consuming farms anymore. Finally, at the consuming farm, Service apps would still be running fine as the Service app endpoint URLs are fetched from the URI cache of the proxy. The internal load balance component of the Service App proxy would recognize if an endpoint is down and take it offline automaticaly.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Summarized&lt;/span&gt;&lt;br /&gt;
What does this all mean? To my opinion it would mean that if the Toplogy service app on the Publishing farm goes down you would still have some time to fix the issue&amp;nbsp;and bring it back online. I do not think that the&amp;nbsp;Service Apps that are consumed will be interupted. Although I must admit I haven't tried it out myself yet.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Your input here!&lt;/h2&gt;The question is, do we need to load balance the Topology service app on the Publishing farm? Personally, I would say that if your farm is offering services globally 24x7, then yes. You probably do not want to get out of bed in case things go wrong. On the other hand it all depends on your service level and the decision is up to you.&lt;br /&gt;
Also, the contradictions still remain: is the Topology service being called every time by the Service app proxies on the consuming farm, or do they rely on their URI cache.&lt;br /&gt;
&lt;br /&gt;
Fact is, I may have it all wrong! ;-) To be on the safe side, I will go through the tests of bringing down the Topology service and have a close look on the ULS log, filter: category = Topology, message = WcfSendrequest..&lt;br /&gt;
&lt;br /&gt;
I have written this blog post to get your input on this! Did you try this out yourself? What are your experiences? Input is more than welcome. Thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-5212231347332538819?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UlcB00FeySE:BdHX14eeIdY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UlcB00FeySE:BdHX14eeIdY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UlcB00FeySE:BdHX14eeIdY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UlcB00FeySE:BdHX14eeIdY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=UlcB00FeySE:BdHX14eeIdY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UlcB00FeySE:BdHX14eeIdY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UlcB00FeySE:BdHX14eeIdY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=UlcB00FeySE:BdHX14eeIdY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UlcB00FeySE:BdHX14eeIdY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UlcB00FeySE:BdHX14eeIdY:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=UlcB00FeySE:BdHX14eeIdY:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UlcB00FeySE:BdHX14eeIdY:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UlcB00FeySE:BdHX14eeIdY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=UlcB00FeySE:BdHX14eeIdY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=UlcB00FeySE:BdHX14eeIdY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/UlcB00FeySE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/UlcB00FeySE/sp2010-do-we-need-to-load-balance.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_lMdXhBkQ6IA/TUqb0xm9c7I/AAAAAAAACf4/Q7QXxte4kvg/s72-c/Cross_Farm_Services.png" height="72" width="72" /><feedburner:origLink>http://hermansberghem.blogspot.com/2011/02/sp2010-do-we-need-to-load-balance.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-3457940950524984022</guid><pubDate>Wed, 05 Jan 2011 19:25:00 +0000</pubDate><atom:updated>2011-04-08T12:27:25.216+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">TripleNeo</category><title>New logo has arrived!</title><description>Dear readers, thanks for all the votes on the logo design contest! I have selected the nr. 1 logo from the poll and the result you can see at the top.&lt;br /&gt;
&lt;br /&gt;
I received more than &lt;b&gt;216 entries&lt;/b&gt;! In just three days.... That was awesome. So on my blog you will find the black variation whereas on my &lt;a href="http://www.tripleneo.com/"&gt;TripleNeo&lt;/a&gt; site you will see the main variation which is on a white background and has the word Neo colored.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-3457940950524984022?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=jFDXjcW9-mA:Lgxc4Zs6ecg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=jFDXjcW9-mA:Lgxc4Zs6ecg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=jFDXjcW9-mA:Lgxc4Zs6ecg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=jFDXjcW9-mA:Lgxc4Zs6ecg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=jFDXjcW9-mA:Lgxc4Zs6ecg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=jFDXjcW9-mA:Lgxc4Zs6ecg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=jFDXjcW9-mA:Lgxc4Zs6ecg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=jFDXjcW9-mA:Lgxc4Zs6ecg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=jFDXjcW9-mA:Lgxc4Zs6ecg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=jFDXjcW9-mA:Lgxc4Zs6ecg:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=jFDXjcW9-mA:Lgxc4Zs6ecg:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=jFDXjcW9-mA:Lgxc4Zs6ecg:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=jFDXjcW9-mA:Lgxc4Zs6ecg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=jFDXjcW9-mA:Lgxc4Zs6ecg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=jFDXjcW9-mA:Lgxc4Zs6ecg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/jFDXjcW9-mA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/jFDXjcW9-mA/new-logo-has-arrived.html</link><author>noreply@blogger.com (Servé Hermans)</author><feedburner:origLink>http://hermansberghem.blogspot.com/2011/01/new-logo-has-arrived.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-9209106396738055856</guid><pubDate>Mon, 03 Jan 2011 11:11:00 +0000</pubDate><atom:updated>2011-04-08T12:27:41.460+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">TripleNeo</category><title>Please help me selecting a logo for my new company</title><description>Dear readers, as you probably know I have started as a freelance SharePoint consultant. After 8 years working as the Lead SharePoint architect within global pharmaceutical companies like Organon BioSciences, Schering-Plough and Merck (MSD in Europe).&lt;br /&gt;
&lt;br /&gt;
My new company is called TripleNeo and I am looking for a new logo. I have started a contest on 99designs where designers can submit logos and people can rate and eventually the winning design wins the money.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;I NEED YOUR HELP!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Please have a look below and let me know what you like most. You can go to the website, use the rating controls, or just add a comment to this blog post.&lt;br /&gt;
&lt;br /&gt;
&lt;script src="http://99designs.com/widgets/poll.js?lid=61148&amp;amp;t=195vr7&amp;amp;layout=grid"&gt;
&lt;/script&gt;Custom &lt;a href="http://99designs.com/logo-design"&gt;Logo Design&lt;/a&gt; at 99designs&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-9209106396738055856?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=cosDf5W_d1M:3UYlC3Oq0AQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=cosDf5W_d1M:3UYlC3Oq0AQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=cosDf5W_d1M:3UYlC3Oq0AQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=cosDf5W_d1M:3UYlC3Oq0AQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=cosDf5W_d1M:3UYlC3Oq0AQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=cosDf5W_d1M:3UYlC3Oq0AQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=cosDf5W_d1M:3UYlC3Oq0AQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=cosDf5W_d1M:3UYlC3Oq0AQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=cosDf5W_d1M:3UYlC3Oq0AQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=cosDf5W_d1M:3UYlC3Oq0AQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=cosDf5W_d1M:3UYlC3Oq0AQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=cosDf5W_d1M:3UYlC3Oq0AQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=cosDf5W_d1M:3UYlC3Oq0AQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=cosDf5W_d1M:3UYlC3Oq0AQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=cosDf5W_d1M:3UYlC3Oq0AQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/cosDf5W_d1M" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/cosDf5W_d1M/please-help-me-selecting-logo-for-my.html</link><author>noreply@blogger.com (Servé Hermans)</author><feedburner:origLink>http://hermansberghem.blogspot.com/2011/01/please-help-me-selecting-logo-for-my.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-3991552479769926739</guid><pubDate>Mon, 15 Nov 2010 19:58:00 +0000</pubDate><atom:updated>2011-04-08T12:28:19.118+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Blog</category><title>New look and feel</title><description>Today I decided to change the look and feel of my blog. Why?&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Maybe because it is so tightly integrated with Blogger.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Maybe because most of the Apps I use nowadays have these fancy Black GUI's.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Or maybe because this style gives me more horizontal space?&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;It also means that this blog is now more like my other blogs.... Other blogs? Yes, if you are into Game Development, which is a hobby of mine, have a look at &lt;a href="http://servehermans.blogspot.com/"&gt;servehermans.blogspot.com&lt;/a&gt; and enjoy. On that blog I am mostly babbling about iPhone and iPad game development.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-3991552479769926739?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=_jhEVS_RxgI:zJO3mn5-VSI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=_jhEVS_RxgI:zJO3mn5-VSI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=_jhEVS_RxgI:zJO3mn5-VSI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=_jhEVS_RxgI:zJO3mn5-VSI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=_jhEVS_RxgI:zJO3mn5-VSI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=_jhEVS_RxgI:zJO3mn5-VSI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=_jhEVS_RxgI:zJO3mn5-VSI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=_jhEVS_RxgI:zJO3mn5-VSI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=_jhEVS_RxgI:zJO3mn5-VSI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=_jhEVS_RxgI:zJO3mn5-VSI:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=_jhEVS_RxgI:zJO3mn5-VSI:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=_jhEVS_RxgI:zJO3mn5-VSI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=_jhEVS_RxgI:zJO3mn5-VSI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=_jhEVS_RxgI:zJO3mn5-VSI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=_jhEVS_RxgI:zJO3mn5-VSI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/_jhEVS_RxgI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/_jhEVS_RxgI/new-look-and-feel.html</link><author>noreply@blogger.com (Servé Hermans)</author><feedburner:origLink>http://hermansberghem.blogspot.com/2010/11/new-look-and-feel.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-5868052751326245098</guid><pubDate>Thu, 16 Sep 2010 14:17:00 +0000</pubDate><atom:updated>2011-06-13T16:29:30.422+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">AJAX</category><category domain="http://www.blogger.com/atom/ns#">SP2010</category><category domain="http://www.blogger.com/atom/ns#">Architecture</category><title>Technology stack overview</title><description>In this post I will try to give you a &lt;strong&gt;schematic&lt;/strong&gt; &lt;strong&gt;overview&lt;/strong&gt; of technologies, principles and protocols and how they relate to each other. The ones that I will describe are &lt;strong&gt;AJAX&lt;/strong&gt;, &lt;strong&gt;JSON&lt;/strong&gt;, &lt;strong&gt;REST&lt;/strong&gt;, &lt;strong&gt;SOAP&lt;/strong&gt; and &lt;strong&gt;JQUERY&lt;/strong&gt;. I will also add a staccato description of these for dummies and maybe if I have some time left I will add an example. So let’s start with the nice picture! ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-0YBHQnpOAUQ/TfYewRyZ6dI/AAAAAAAAClI/vDy2sTD84pI/s1600/image_thumb%255B2%255D.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="324" src="http://1.bp.blogspot.com/-0YBHQnpOAUQ/TfYewRyZ6dI/AAAAAAAAClI/vDy2sTD84pI/s640/image_thumb%255B2%255D.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h3&gt;AJAX&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;• PRESENTATION: HTML&amp;nbsp; or XHTML and CSS   &lt;br /&gt;
• DYNAMIC DISPLAY AND INTERACTION: Document Object Model and JavaScript    &lt;br /&gt;
• EXCHANGE OF DATA AND MANIPULATION: XML and XSLT, also JSON possible    &lt;br /&gt;
• ASYNCHRONOUS COMMUNICATION: XMLHttpRequest    &lt;br /&gt;
• GLUE: JavaScript (sometimes VBScript)    &lt;br /&gt;
• COLLECTION: of technologies &lt;br /&gt;
&lt;h3&gt;JSON&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;• INTERCHANGE OF DATA: lightweight text-based format, alternative to XML   &lt;br /&gt;
• BASIC TYPES: String, Integer, Boolean, Array and Objects    &lt;br /&gt;
• VERIFICATION: goes trough JSON Schema to verify the contents of an object    &lt;br /&gt;
• SAME ORIGIN POLICY: the reply must come from the same DNS domain as where the request was made. JSONP / JavaScript / JSONRequest are workarounds.    &lt;br /&gt;
• SECURITY CONCERNS: returning script instead of JSON data. Workaround: use a JSON parser. Unless browser supports native JSON like IE8, Firefox 3.5, Opera 10.5, Chrome, Safari. Else, use libraries like JQUERY     &lt;br /&gt;
• ALTERNATIVES: XML although XML tends to be larger    &lt;br /&gt;
• DISADVANTAGES: no binary representations possible, unless encoded as text, no standard path notation like XPath. &lt;br /&gt;
&lt;h3&gt;REST&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;• PRINCIPLE: an application can interact with a resource by knowing the identifier of the resource and the action required like GET, PUT or DELETE. The resource returns a representation of the requested data which can be HTML, XML, JSON etc.    &lt;br /&gt;
• ARCHITECTURE: REST is an architecture and is not a standard.    &lt;br /&gt;
• CLIENT-SERVER: clients are separated by the server. Clients don't care about data storage, servers don't care about presentation.    &lt;br /&gt;
• STATELESS: any state is held in the client. Client context is not stored on the server.    &lt;br /&gt;
• CACHEABLE: responses may be cached    &lt;br /&gt;
• UNIFORM ARCHITECTURE: between client and servers decouples the architecture. Each one can evolve on its own.    &lt;br /&gt;
• SECURITY RISKS: Code on Demand by returning java applets or JavaScript.     &lt;br /&gt;
• RESTFUL WEB SERVICE: a simple web service using HTTP and using the principles or REST. The web service is built around the URI to the resource, the MIME type of the data supported by the web service and the ACTION like put, get, delete and post.    &lt;br /&gt;
• FRAMEWORK IMPLEMENTATIONS: MS WCF Data Services, PHP Symphony and many others    &lt;br /&gt;
• ALTERNATIVE: SOAP which is a protocol, not an architectural principle &lt;br /&gt;
&lt;h3&gt;SOAP&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;• PROTOCOL: to exchange data in a structured manner, providing a basic messaging framework upon web services can been built.   &lt;br /&gt;
• ALTERNATIVE: built RESTful web service as these correctly make use of the HTTP defined methods &lt;br /&gt;
&lt;h3&gt;JQUERY&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;• FRAMEWORK: JavaScript framework to manipulate DOM, CSS and to communicate with SERVER (AJAX)   &lt;br /&gt;
• CHARACTERISTICS: work with DOM cross browser with support of CSS 1.3. Use of events, effects, AJAX and is extensible. &lt;br /&gt;
&lt;h3&gt;Example&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="wp_syntax" style="padding-bottom: 15px;"&gt;&lt;img cursor="hand" onclick="window.clipboardData.setData('Text',this.parentNode.innerText);" src="http://hermansberghem.googlepages.com/copy.png" /&gt;    &lt;br /&gt;
&lt;div class="code"&gt;&lt;pre class="csharp" style="font-family: monospace;"&gt;&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DOCTYPE &lt;/span&gt;&lt;span style="color: red;"&gt;HTML PUBLIC &lt;/span&gt;&lt;span style="color: blue;"&gt;"-//W3C//DTD HTML 4.0 Transitional//EN"&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;html&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;head&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;title&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;Show content from page&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;title&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;

&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;script &lt;/span&gt;&lt;span style="color: red;"&gt;src&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js" &lt;/span&gt;&lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;="text/javascript"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;script&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;

&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;script &lt;/span&gt;&lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;="text/javascript"&amp;gt;
&lt;/span&gt;$(document).ready(&lt;span style="color: blue;"&gt;function&lt;/span&gt;() {

$.getJSON(&lt;span style="color: #a31515;"&gt;"http://yourserver/_vti_bin/ListData.svc/Pages/"&lt;/span&gt;,&lt;span style="color: blue;"&gt;function&lt;/span&gt;(data) {

&lt;span style="color: blue;"&gt;var &lt;/span&gt;count = 0;
$.each(data.d.results, &lt;span style="color: blue;"&gt;function&lt;/span&gt;(i,result) {
&lt;span style="color: blue;"&gt;var &lt;/span&gt;title = result.Title;
html = &lt;span style="color: #a31515;"&gt;"&amp;lt;table border='0' style='float: left'&amp;gt; \
&amp;lt;tr&amp;gt;&amp;lt;td style='color:blue'&amp;gt;" &lt;/span&gt;+ title +&lt;span style="color: #a31515;"&gt;"&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; \
&amp;lt;/table&amp;gt;"&lt;/span&gt;;
$(&lt;span style="color: #a31515;"&gt;'#resultarea'&lt;/span&gt;).append($(html));
});
});
});

&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;script&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;

&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;head&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;body&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;div &lt;/span&gt;&lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;="resultarea"&amp;gt;
&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;div&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;body&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;html&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;In the example as shown above I have demonstrated how to call a RESTful webservice, the listdata.svc from SharePoint, get data through an asynchronous call, get back JSON data and use JQuery to display it. All of course done using AJAX technologies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-5868052751326245098?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=9L1OKq2mVtc:B0YkBXT2lOg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=9L1OKq2mVtc:B0YkBXT2lOg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=9L1OKq2mVtc:B0YkBXT2lOg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=9L1OKq2mVtc:B0YkBXT2lOg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=9L1OKq2mVtc:B0YkBXT2lOg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=9L1OKq2mVtc:B0YkBXT2lOg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=9L1OKq2mVtc:B0YkBXT2lOg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=9L1OKq2mVtc:B0YkBXT2lOg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=9L1OKq2mVtc:B0YkBXT2lOg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=9L1OKq2mVtc:B0YkBXT2lOg:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=9L1OKq2mVtc:B0YkBXT2lOg:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=9L1OKq2mVtc:B0YkBXT2lOg:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=9L1OKq2mVtc:B0YkBXT2lOg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=9L1OKq2mVtc:B0YkBXT2lOg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=9L1OKq2mVtc:B0YkBXT2lOg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/9L1OKq2mVtc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/9L1OKq2mVtc/technology-stack-overview.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-0YBHQnpOAUQ/TfYewRyZ6dI/AAAAAAAAClI/vDy2sTD84pI/s72-c/image_thumb%255B2%255D.png" height="72" width="72" /><feedburner:origLink>http://hermansberghem.blogspot.com/2010/09/technology-stack-overview.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-839261761530480796</guid><pubDate>Wed, 28 Jul 2010 12:00:00 +0000</pubDate><atom:updated>2011-04-08T12:29:04.169+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Web Content Management</category><category domain="http://www.blogger.com/atom/ns#">SP2010</category><title>Push or pull publishing pages from SharePoint 2010</title><description>Sometimes when you build a large Internet facing site you need to push or pull content to or from other systems. It could be that you are working with external content providers who will provide for instance daily news articles. Or maybe you have to send out e-mail campaigns and you would like to pull content from your site into your newsletters. In these cases you might wonder if it is possible to use for instance the new RESTful services which uses HTTP to get or send information to your pages libraries.&lt;br /&gt;
In this article I will perform a small POC to see if that is possible and what the alternatives are.&lt;br /&gt;
&lt;h3&gt;The ListData.svc WCF web service&lt;/h3&gt;The ListData.svc web service did not exist with SharePoint 2007. You can access it through the _vti_bin virtual directoy like:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;http://www.company.com/en-us/news/_vti_bin/ListData.svc&lt;/pre&gt;&lt;br /&gt;
So what does it provide:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;It provides an &lt;strong&gt;ATOM feed&lt;/strong&gt; of all the lists and links to URL’s that provide more data. As you can see below it will show you for instance a list of collections. The pages library would be one of them. Now, if you would attach the HFRD attribute to your query it would give you access to all of the content within the pages library. &lt;a href="http://lh5.ggpht.com/_lMdXhBkQ6IA/TFAbv7m93dI/AAAAAAAACcw/wlWU_EzLtLE/s1600-h/image9.png"&gt;&lt;img alt="image" border="0" height="199" src="http://lh6.ggpht.com/_lMdXhBkQ6IA/TFAbwqNvgOI/AAAAAAAACc0/9PkFoyRN1_g/image_thumb5.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="image" width="240" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Next to that you can &lt;strong&gt;Query &lt;/strong&gt;the content by appending your query to the URL, including filtering, sorting and paging. An example would be something like:&lt;/li&gt;
&lt;/ul&gt;&lt;div class="wp_syntax" style="padding-bottom: 0px;"&gt;&lt;img cursor="hand" onclick="window.clipboardData.setData('Text',this.parentNode.innerText);" src="http://hermansberghem.googlepages.com/copy.png" /&gt;&lt;br /&gt;
&lt;div class="code"&gt;&lt;br /&gt;
&lt;pre class="code" style="font-family: monospace;"&gt;http:&lt;span style="color: green;"&gt;//.../_vti_bin/ListData.svc/Pages?$filter=(Country eq 'Netherlands')&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code" face="monospace"&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;But that is not all! You can actually &lt;strong&gt;add, delete or update&lt;/strong&gt; content. So if your HTTP Header contains the verb DELETE you could delete the second item by calling the same URL but then with:&lt;/li&gt;
&lt;/ul&gt;&lt;div class="wp_syntax" style="padding-bottom: 0px;"&gt;&lt;img cursor="hand" onclick="window.clipboardData.setData('Text',this.parentNode.innerText);" src="http://hermansberghem.googlepages.com/copy.png" /&gt;&lt;br /&gt;
&lt;div class="code"&gt;&lt;br /&gt;
&lt;pre class="csharp" style="font-family: monospace;"&gt;&lt;pre class="code"&gt;&lt;span style="color: green;"&gt;http://.../_vti_bin/ListData.svc/Pages(1)&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;And even better, &lt;strong&gt;caching&lt;/strong&gt; and &lt;strong&gt;security&lt;/strong&gt; has been taken care of as well.&lt;/li&gt;
&lt;li&gt;And if you use ASP.NET Ajax 4 you can query WCF Data Services like the ListData.svc natively and it will give you the benefit of using templates.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Publishing page returned by ListData&lt;/h3&gt;Now, what about the information you get back from the ListData.svc when querying a &lt;strong&gt;pages&lt;/strong&gt; &lt;strong&gt;library&lt;/strong&gt;?&lt;br /&gt;
Imagine you &lt;strong&gt;content type &lt;/strong&gt;is called &lt;strong&gt;Company News&lt;/strong&gt; and is inheriting from the out of the box content type &lt;strong&gt;article page&lt;/strong&gt;.&lt;br /&gt;
If you would query the page through the ListData web service it would give you either the ATOM XML feed or the JSON data feed (depends on your type of request).&lt;br /&gt;
Have a look at the columns below. As you can see some of the columns are “system” columns like Content Type ID, some of the are from the article page like “Page Content” and some are defined by yourself like “Publisher”.&lt;br /&gt;
&lt;table border="1" cellpadding="2" cellspacing="0"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td valign="top"&gt;&lt;strong&gt;ContentTypeID&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top"&gt;0x01000C568D50A14D9……&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td valign="top"&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top"&gt;MyNews.aspx&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td valign="top"&gt;&lt;strong&gt;Title&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top"&gt;Company X has announced new campaign&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td valign="top"&gt;&lt;strong&gt;PageLayout&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="280"&gt;&lt;a href="http://www.company.com/_catalogs/masterpage/mynewslayout.aspx"&gt;http://www.company.com/_catalogs/masterpage/mynewslayout.aspx&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td valign="top"&gt;&lt;strong&gt;Publisher&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top"&gt;Reuters&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td valign="top"&gt;&lt;strong&gt;&lt;strike&gt;&lt;span style="color: red;"&gt;Page Content&lt;/span&gt;&lt;/strike&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top"&gt;Today it was announced that Company X has …..&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;h3&gt;Not everything will be returned&lt;/h3&gt;You have probably already noticed that &lt;strong&gt;Page Content&lt;/strong&gt; as shown in the table above, has been removed and colored red. To me it was a little surprise that it was not being returned by the ListData web service. After doing some tests I discovered that:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Site columns of type Publishing HTML are not returned by ListData&lt;/li&gt;
&lt;li&gt;Site columns of type Publishing Image are not returned by ListData&lt;/li&gt;
&lt;li&gt;possibly more columns are being omitted (haven’t checked all of them yet) that are publishing specific&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Can I use ListData with Publishing pages&lt;/h3&gt;The answer is probably: Yes in a limited way. As you don’t have the ability to change for instance the Page Content, you could still update the list item fields like the Title, Publishing Date, or custom fields like the Number of Times Read and so forth. It depends if you have need for that. &lt;br /&gt;
To give you a &lt;strong&gt;real world example&lt;/strong&gt;: if you would to add something like “Did this article answer your question” you could add a counter to your article called “Usefulness” and increase that by one if someone clicks on a button “yes”, entirely through Javascript by calling the ListData web service.&lt;br /&gt;
&lt;h3&gt;Are there alternatives?&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;CMIS: &lt;/strong&gt;CMIS stands for Content Management Interoperability Specification. It is an "interoperability specification for interacting with document-centric content repositories via HTTP-based protocols.".&lt;br /&gt;
&lt;br /&gt;
It is a new standard driven by Alfresco, Day, EMC, Fatwire, IBM, Microsoft and Open Text.&lt;br /&gt;
&lt;br /&gt;
Now, Microsoft has released a connector for CMIS for SharePoint 2010. Is it important? Yes! As we can more easily integrate SharePoint 2010 with other systems through an official standard. This comes with the connector:&lt;br /&gt;
&lt;br /&gt;
· A CMIS Producer for SharePoint that makes SharePoint lists and document libraries available to other systems using the CMIS interfaces.&lt;br /&gt;
&lt;br /&gt;
· A CMIS Consumer Web Part, enabling content from other CMIS supported repositories to be displayed and edited within SharePoint. The &lt;strong&gt;downside&lt;/strong&gt; is that CMIS does not support WCM in its first release.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Client side object model&lt;/strong&gt;: this does not support Publishing webs to create a page&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ListItemCollection.asmx&lt;/strong&gt;: this would allow you to create a content type with Publishing HTML site columns but you cannot get Rich markup across the wire.&lt;/li&gt;
&lt;li&gt;Your own &lt;strong&gt;custom wrapper&lt;/strong&gt;. It would basically mean that you create your own web service that allows for pushing content into SharePoint and your code would take care of creating the publishing page.&lt;/li&gt;
&lt;/ul&gt;Your own code could be something like this:&lt;br /&gt;
&lt;div class="wp_syntax" style="padding-bottom: 15px;"&gt;&lt;img cursor="hand" onclick="window.clipboardData.setData('Text',this.parentNode.innerText);" src="http://hermansberghem.googlepages.com/copy.png" /&gt;&lt;br /&gt;
&lt;div class="code"&gt;&lt;br /&gt;
&lt;pre class="csharp" style="font-family: monospace;"&gt;&lt;pre class="code"&gt;SPSite site = &lt;span style="color: blue;"&gt;new &lt;/span&gt;SPSite(Properties.Settings.Default.rootSiteUrl + Properties.Settings.Default.targetURL);
SPWeb web = site.OpenWeb();
PublishingWeb pubWeb = PublishingWeb.GetPublishingWeb(web);
PublishingPage newPubPage = pubWeb.GetPublishingPages().Add(pageName, GetPageLayout());
SPListItem newPage = newPubPage.ListItem;
SPList PagesLibrary = newPage.ParentList;
newPage[&lt;span style="color: #a31515;"&gt;"Title"&lt;/span&gt;] = pageTitle;
newPage[&lt;span style="color: #a31515;"&gt;"Page Content"&lt;/span&gt;] = Microsoft.SharePoint.Utilities.SPEncode.HtmlDecode(pageContent);
newPage[&lt;span style="color: #a31515;"&gt;"Article Date"&lt;/span&gt;] = articleDate;
newPage.Update();
newPage.File.CheckIn(&lt;span style="color: #a31515;"&gt;""&lt;/span&gt;);
newPage.File.Publish(&lt;span style="color: #a31515;"&gt;"Published on creation"&lt;/span&gt;);
newPage.File.Approve(&lt;span style="color: #a31515;"&gt;"Approved on creation"&lt;/span&gt;);&lt;/pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h3&gt;Summary&lt;/h3&gt;Working with SharePoint 2010 Publishing Pages through the ListData.svc is very limited, hence could be useful in some cases. Most of the publishing related site columns are not being returned by the web service. Other methods fail for the same reason. It looks like a custom web service is the only solution.&lt;br /&gt;
&lt;strong&gt;Any feedback or working solution is appreciated!&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-839261761530480796?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pIogjhGPde0:upsCClaVjwo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pIogjhGPde0:upsCClaVjwo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pIogjhGPde0:upsCClaVjwo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pIogjhGPde0:upsCClaVjwo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=pIogjhGPde0:upsCClaVjwo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pIogjhGPde0:upsCClaVjwo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pIogjhGPde0:upsCClaVjwo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=pIogjhGPde0:upsCClaVjwo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pIogjhGPde0:upsCClaVjwo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pIogjhGPde0:upsCClaVjwo:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=pIogjhGPde0:upsCClaVjwo:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pIogjhGPde0:upsCClaVjwo:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pIogjhGPde0:upsCClaVjwo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=pIogjhGPde0:upsCClaVjwo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=pIogjhGPde0:upsCClaVjwo:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/pIogjhGPde0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/pIogjhGPde0/push-or-pull-publishing-pages-from.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_lMdXhBkQ6IA/TFAbwqNvgOI/AAAAAAAACc0/9PkFoyRN1_g/s72-c/image_thumb5.png?imgmax=800" height="72" width="72" /><feedburner:origLink>http://hermansberghem.blogspot.com/2010/07/push-or-pull-publishing-pages-from.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-5124013263250311592</guid><pubDate>Fri, 04 Jun 2010 10:42:00 +0000</pubDate><atom:updated>2011-04-08T12:29:25.712+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Web Content Management</category><category domain="http://www.blogger.com/atom/ns#">SP2010</category><title>SharePoint 2010 Web Content Management vs. Tridion</title><description>Where SharePoint 2007 was lacking a number WCM capabilities, SP2010 WCM starts to look promising. Time get a high level overview of SP2010 WCM capabilities and compare them against the market leader Tridion (according to Gartner and Forester research).&lt;br /&gt;
&lt;h3&gt;WCM Solutions&lt;/h3&gt;Although this post will focus on SP2010 and Tridion, it is good to know that there is more out there. Take for instance Fatwire, Autonomy Interwoven, Opentext, Day Communique, Vignette, Oracle, IBM, EMC, Ektron, SiteCore, Drupal, EZ and so on.   &lt;br /&gt;
I am only able to focus on Tridion and SharePoint as I have developed and designed internet facing site for both tools.&lt;br /&gt;
Research agencies like Gartner and Forrester not only focus on high level capabilities but take into account other aspects as well like strategy, ability to deliver, marketing, customer reviews and so on. This post will only focus on the high level capabilities.&lt;br /&gt;
&lt;h3&gt;High Level Capabilities&lt;/h3&gt;The following list shows you a number of capability groups. There may be more but I think that most of the detailed WCM capabilities will fit into one of those categories:&lt;br /&gt;
&lt;div align="center"&gt;&lt;table align="center" border="1" cellpadding="2" cellspacing="0" style="width: 550px;"&gt;&lt;tbody&gt;
&lt;tr&gt;         &lt;td valign="top" width="548"&gt;&lt;strong&gt;Content Management&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;
&lt;tr&gt;         &lt;td valign="top" width="548"&gt;&lt;strong&gt;Dynamic Contextual Delivery&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;
&lt;tr&gt;         &lt;td valign="top" width="548"&gt;&lt;strong&gt;Globalization and Localization&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;
&lt;tr&gt;         &lt;td valign="top" width="548"&gt;&lt;strong&gt;Insights&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;
&lt;tr&gt;         &lt;td valign="top" width="548"&gt;&lt;strong&gt;Content Deployment&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;
&lt;tr&gt;         &lt;td valign="top" width="548"&gt;&lt;strong&gt;Integration&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;
&lt;tr&gt;         &lt;td valign="top" width="548"&gt;&lt;strong&gt;Social Computing&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;
&lt;tr&gt;         &lt;td valign="top" width="548"&gt;&lt;strong&gt;Marketing Instruments&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;
&lt;tr&gt;         &lt;td valign="top" width="548"&gt;&lt;strong&gt;Accessibility&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;h3&gt;Detailed capabilities&lt;/h3&gt;Now let me zoom in a little bit on the ones I defined above.&lt;br /&gt;
►&lt;strong&gt;Content management     &lt;br /&gt;
&lt;/strong&gt;• Usability (true in line vs. in-context) •E diting (integration with Desktop tools) •Template based •Content review and approval • Change Management • Metadata • Library services • Digital asset management (audio, video, images) • Site structure management • Navigation management&lt;br /&gt;
►&lt;strong&gt;Dynamic Contextual Delivery&lt;/strong&gt;    &lt;br /&gt;
• Audience targeting • Algorithm based recommendations • Personalization rules • Managing segments • Content filtering (tags, categories, navigation) • Content aggregation (rollup) • Multichannel delivery (mobile, print)    &lt;br /&gt;
&lt;br /&gt;
►&lt;strong&gt;Globalization and localization&lt;/strong&gt;     &lt;br /&gt;
• Content inheritance (multilingual) • Layout inheritance (multi brand) • Translation services (workflow, 3rd party integration) • Language aware components • Managing translations (resources, labels, taxonomies) • Multi lingual GUI • Global Assets libraries • Scalability across the WAN&lt;br /&gt;
►&lt;strong&gt;Insights&lt;/strong&gt;    &lt;br /&gt;
• Native Web Analytics • 3rd party analytics integration • Track and traceability • Data warehousing    &lt;br /&gt;
&lt;br /&gt;
►&lt;strong&gt;Content deployment&lt;/strong&gt;     &lt;br /&gt;
• Multi site / channel • Multi lingual • Staging / Authoring environments • Content hubs • Replication of content and or features    &lt;br /&gt;
&lt;br /&gt;
►&lt;strong&gt;Integration      &lt;br /&gt;
&lt;/strong&gt;• Hybrid user profiles • Content feed management outside-in and inside-out • Federation model • Client side APIs • LoB connectivity&lt;br /&gt;
►&lt;strong&gt;Social computing&lt;/strong&gt;    &lt;br /&gt;
• User generated content (tagging, rating, comments) • Integration with Social Network Providers • Provisioning models (for Community sites, Forums) • Activity feeds&lt;br /&gt;
►&lt;strong&gt;Accessibility&lt;/strong&gt;    &lt;br /&gt;
• Registration •Authorization •Authentication • Validation • WCAG 2.0 AA+ • Cross browser&lt;br /&gt;
The list above is probably not complete but I think I have a pretty nice list to start with. So if you are comparing WCM solutions try to keep these things in mind and be honest about it.   &lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;SharePoint 2007 WCM weaknesses&lt;/h3&gt;So let us be honest about SharePoint 2007. Although I saw a lot of nice internet facing sites, SharePoint 2007 was lacking some capabilities:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Content targeting&lt;/strong&gt;: although you could use the Content Query web part or audiences to target content to visitors, it was lacking real contextual, even rules based driven content delivery. Imagine someone registering on your web site, but not having the ability to instantly compile the audiences. Good luck with your targeting. Also, people quickly extended the Content Query web part so that it could use at least query string parameters and so on. But still the filtering was limited.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web Content management and reuse &lt;/strong&gt;(try to add a web part as part of your rich text, use folders inside page libraries, usage of taxonomies)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multilingualism &lt;/strong&gt;(multi lingual GUI, translations API, translatable metadata)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Content Deployment&lt;/strong&gt;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Replication&lt;/li&gt;
&lt;li&gt;Multi farm Synchronization&lt;/li&gt;
&lt;li&gt;Stability (ask&amp;nbsp; you editors to go wild when you content deployment is running, and add some variations on top of that)&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;strong&gt;Marketing tools &lt;/strong&gt;(Analytics, overlays, business rules, organizing content)&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;SharePoint 2010 WCM strengths&lt;/h3&gt;►Social computing   &lt;br /&gt;
• Rating, tagging, commenting, integration with Social Network providers&lt;br /&gt;
►Insights   &lt;br /&gt;
• Web Analytics • Developers dashboard&lt;br /&gt;
►Content deployment   &lt;br /&gt;
• Improvements to support massive exports using snapshots • Improved variations using timer job • Side by side page differences • Usage of content hub for pushing out changes to content types and taxonomies • Managed metadata services for defining taxonomies • Inline editing has improved a lot. Try to add multimedia like videos or images and web parts right inside your rich text field.&lt;br /&gt;
►Scalability   &lt;br /&gt;
• Large page libraries now support folders • Consuming service applications&lt;br /&gt;
►Reliability   &lt;br /&gt;
• Quality checks: spelling and checks for page assets that are not published&lt;br /&gt;
► Multi lingual features   &lt;br /&gt;
• Multi lingual GUI • Translatable taxonomies • Language aware components (take for instance the refinement panel that shows drill down capabilities for multi lingual taxonomies) • Import and export of translations • Translatable columns • Translation services API    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;What about Tridion?&lt;/h3&gt;To my opinion, Tridion is really strong in the area of Blue printing, something I think you can mimic with SharePoint but is not quite the same. Blueprinting layout is like defining master pages and page layouts that are reused across web sites. You could build for instance the same site in different languages. Blueprinting content is like content deployment and variations where you push out content to different web sites where you can reuse them or start localizing them. Discovering localized items, content dependencies etc is more advanced.   &lt;br /&gt;
&lt;br /&gt;
Tridion has some integration points with SharePoint in terms of storing assets in SharePoint and publishing them to Tridion.     &lt;br /&gt;
&lt;br /&gt;
But the real strong point here is that Tridion is filling in the gap of marketing tools. Where SharePoint has been focusing a lot on the content management aspect. Tridion has some nice features that are really useful for the web marketeers. Take for&amp;nbsp; instance the overlay feature that add color overlays to your web page so that you can instantly see the most used components on your web page.&lt;br /&gt;
So Tridion is better on the delivery, analysis and optimization of content consumption. The so called &lt;strong&gt;Marketing tools&lt;/strong&gt; capabilities and the &lt;strong&gt;Blue Printing&lt;/strong&gt;.&lt;br /&gt;
But on the other side you could add for instance Google Analytics or Yahoo Analytics to your master page (piece of script) and get some nice results as well. Btw. Google Urchin might be an option as well.   &lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Summary&lt;/h3&gt;SharePoint 2010 fills in on a number of WCM capabilities when compared to SP2007. The fact that SP2010 has a large developers community out there and it’s extensibility makes it an interesting choice for future internet facing sites. Tridion, when compared to SP2010 is stronger in the area of marketing tools and blueprinting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-5124013263250311592?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=iSVUqPZux7A:1Wzk9pNp-A0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=iSVUqPZux7A:1Wzk9pNp-A0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=iSVUqPZux7A:1Wzk9pNp-A0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=iSVUqPZux7A:1Wzk9pNp-A0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=iSVUqPZux7A:1Wzk9pNp-A0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=iSVUqPZux7A:1Wzk9pNp-A0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=iSVUqPZux7A:1Wzk9pNp-A0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=iSVUqPZux7A:1Wzk9pNp-A0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=iSVUqPZux7A:1Wzk9pNp-A0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=iSVUqPZux7A:1Wzk9pNp-A0:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=iSVUqPZux7A:1Wzk9pNp-A0:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=iSVUqPZux7A:1Wzk9pNp-A0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=iSVUqPZux7A:1Wzk9pNp-A0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=iSVUqPZux7A:1Wzk9pNp-A0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=iSVUqPZux7A:1Wzk9pNp-A0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/iSVUqPZux7A" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/iSVUqPZux7A/sharepoint-2010-web-content-management.html</link><author>noreply@blogger.com (Servé Hermans)</author><feedburner:origLink>http://hermansberghem.blogspot.com/2010/06/sharepoint-2010-web-content-management.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-32937725.post-6660854382720945570</guid><pubDate>Fri, 28 May 2010 14:23:00 +0000</pubDate><atom:updated>2011-04-08T12:30:46.624+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Web Content Management</category><category domain="http://www.blogger.com/atom/ns#">SP2010</category><title>Location aware content rollup</title><description>In this post I will show you how to roll up content from the site you are currently on using the content query web part on a &lt;strong&gt;page layout on SharePoint 2010&lt;/strong&gt;.    &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;a href="http://lh4.ggpht.com/_lMdXhBkQ6IA/S__R69mBnAI/AAAAAAAACcg/wB6JzlBENWs/s1600-h/image%5B21%5D.png"&gt;&lt;img align="right" alt="image" border="0" height="242" src="http://lh4.ggpht.com/_lMdXhBkQ6IA/S__R7cTTYyI/AAAAAAAACck/bY316OjTOZw/image_thumb%5B15%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px 0px 0px 10px;" title="image" width="260" /&gt;&lt;/a&gt; &lt;br /&gt;
As you can see on the right you can tell the Content Query web part to roll up content from the whole site collection, or a specific site or a specific list. The question people often ask is where can I define to rollup content from the &lt;strong&gt;current site&lt;/strong&gt;.&lt;br /&gt;
The reason is they want to add the Content Query web part to a page layout and not as a provisioned web part to a web part zone on a page. The answer is simple. You cannot type in relative paths. If you do so SharePoint will tell you to define paths that start with a forward slash. That would mean that you have to define the exact location. Not nice, especially if you need thise to work on a multilingual site.&lt;br /&gt;
Let us inspect the properties using SharePoint Designer.&lt;br /&gt;
&lt;a href="http://lh4.ggpht.com/_lMdXhBkQ6IA/S__R7og6iFI/AAAAAAAACco/8EH8tHvv0vY/s1600-h/image%5B20%5D.png"&gt;&lt;img align="left" alt="image" border="0" height="77" src="http://lh3.ggpht.com/_lMdXhBkQ6IA/S__R71bEHVI/AAAAAAAACcs/RaONZJLmsc8/image_thumb%5B14%5D.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px 10px 0px 0px;" title="image" width="260" /&gt;&lt;/a&gt; &lt;br /&gt;
As you can see, the Web URL is translating the forward slash to ~SiteCollection/. So what about if we change that to &lt;strong&gt;~Site/&lt;/strong&gt;. Try it yourself and you will discover that it actually works quite well.&lt;br /&gt;
If you add it like that to your &lt;strong&gt;page layout&lt;/strong&gt; outside your webpart zone, you can just start creating pages using that page layout and by default it will start to roll up content from the site you are on.&lt;br /&gt;
I have seen posts that do basically the same using custom code and overriding the web url on load but this is the same and does not require you to release a new version of the content query web part. However, if you want end users to be able to use it like this you have two options:&lt;br /&gt;
1. You can use Visual Studio to override the Web URL property on Load. Waldek has a nice post about that (sorry for the URL, will probably add a reference later on)   &lt;br /&gt;
2. You can export the web part properties, change the XML, upload the web part to the site and drag it onto the page. Same effect.&lt;br /&gt;
&lt;h3&gt;Summary&lt;/h3&gt;By using SharePoint Designer and changing the Web URL property of the Conten Query webpart to ~Site/ you can have a default page layout that has a content query webpar that will rollup content from the current site. This is what I call &lt;strong&gt;location aware&lt;/strong&gt; content rollup.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32937725-6660854382720945570?l=hermansberghem.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=LcIEUbPzv2o:c7PMos39034:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=LcIEUbPzv2o:c7PMos39034:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=LcIEUbPzv2o:c7PMos39034:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=LcIEUbPzv2o:c7PMos39034:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=LcIEUbPzv2o:c7PMos39034:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=LcIEUbPzv2o:c7PMos39034:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=LcIEUbPzv2o:c7PMos39034:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=LcIEUbPzv2o:c7PMos39034:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=LcIEUbPzv2o:c7PMos39034:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=LcIEUbPzv2o:c7PMos39034:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=LcIEUbPzv2o:c7PMos39034:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=LcIEUbPzv2o:c7PMos39034:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=LcIEUbPzv2o:c7PMos39034:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?i=LcIEUbPzv2o:c7PMos39034:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/HermansBerghem?a=LcIEUbPzv2o:c7PMos39034:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/HermansBerghem?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HermansBerghem/~4/LcIEUbPzv2o" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/HermansBerghem/~3/LcIEUbPzv2o/location-aware-content-rollup.html</link><author>noreply@blogger.com (Servé Hermans)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_lMdXhBkQ6IA/S__R7cTTYyI/AAAAAAAACck/bY316OjTOZw/s72-c/image_thumb%5B15%5D.png?imgmax=800" height="72" width="72" /><feedburner:origLink>http://hermansberghem.blogspot.com/2010/05/location-aware-content-rollup.html</feedburner:origLink></item></channel></rss>

