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

<channel>
	<title>novolocus.com &#187; 2008 &#187; July</title>
	<atom:link href="http://www.novolocus.com/2008/07/feed" rel="self" type="application/rss+xml" />
	<link>http://www.novolocus.com</link>
	<description>Whatever Andy Burns is working on...</description>
	<pubDate>Tue, 18 Nov 2008 12:00:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>SharePoint Web Services and UTC time fun and games</title>
		<link>http://www.novolocus.com/2008/07/31/sharepoint-web-services-and-utc-time-fun-and-games/</link>
		<comments>http://www.novolocus.com/2008/07/31/sharepoint-web-services-and-utc-time-fun-and-games/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 11:48:16 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Dates]]></category>

		<category><![CDATA[Timezones]]></category>

		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=726</guid>
		<description><![CDATA[SharePoint is designed that people can use it from multiple time zones. For example, you might have offices in London, Paris and New York. 0700 hours in New York is not the same time as 0700 in Paris, as many transatlantic telephone calls will attest to. Further, many nations have a &#8217;summer&#8217; and &#8216;winter&#8217; time, [...]]]></description>
			<content:encoded><![CDATA[<p>SharePoint is designed that people can use it from multiple time zones. For example, you might have offices in London, Paris and New York. 0700 hours in New York is not the same time as 0700 in Paris, as many transatlantic telephone calls will attest to. Further, many nations have a &#8217;summer&#8217; and &#8216;winter&#8217; time, which seems to have been introduced to annoy dairy farmers and computer programmers.</p>
<p>Thus, SharePoint needs a common way to store these times. It does this using <a href="http://en.wikipedia.org/wiki/Coordinated_Universal_Time">UTC time (Coordinated Universal Time)</a>. This is, near enough, GMT, and it&#8217;s also called Zulu by pilots, the military, and pedants. 0700Z (the <em>Z</em> represents &#8216;Zulu&#8217; as in <a href="http://en.wikipedia.org/wiki/ISO_8601">ISO8601</a>) is the same time whether you&#8217;re in London or Sydney - just in Sydney, 0700 Zulu is actually in the evening.</p>
<p>Now, you don&#8217;t need to worry about this, &#8216;cos SharePoint is smart enough to translate your local time to UTC when you set a date and time, and to translate it back again when displaying the date to you. Thus, 0700 in New York would be stored as 1100Z in the SharePoint database, and then when you looked at that document&#8217;s properties, it would be converted back to 0700. If you looked at the document in, say, London, it would convert 1100Z to 1200. <em>(Well, all this is as happens today - summer/winter time makes things really hairy).</em></p>
<p>So where am I going with this? I have an application where you fill in a date and time, and submit it to SharePoint. When I get the dates back, though, the time is out by an hour. I&#8217;m in the UK and it&#8217;s summertime, so my timezone is actually UTC+1; therefore, time conversions seem likely to be the issue.<span id="more-726"></span></p>
<p>I fill in the date to set on a document in SharePoint via my application.</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/field.png"><img class="alignnone size-medium wp-image-727" title="Date Field in My App" src="http://www.novolocus.com/wp-content/uploads/2008/07/field-300x23.png" alt="" width="300" height="23" /></a></p>
<p>We&#8217;re going to use the web services to update this. This page implies I need to submit a UTC time - indeed, most of the information I&#8217;ve found shows submitting a UTC. So, I do my UTC time conversion - watching in Visual Studio, you can see the adjustment by an hour in to UTC time:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/in-visual-studio.png"><img class="alignnone size-medium wp-image-728" title="Date being processed in Visual Studio" src="http://www.novolocus.com/wp-content/uploads/2008/07/in-visual-studio-300x61.png" alt="Date being processed in Visual Studio" width="300" height="61" /></a></p>
<p>Okay, that&#8217;s correct. That time is submitted via the Lists.UpdateListItems method - but looking in SharePoint, the time appears as an hour too early.</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/in-sp.png"><img class="alignnone size-medium wp-image-729" title="Date In SharePoint" src="http://www.novolocus.com/wp-content/uploads/2008/07/in-sp.png" alt="Date In SharePoint - Note it is 1 hour out" width="130" height="36" /></a></p>
<p>So, I broke out my trusty SharePoint Manager - and it shows the time as an hour too early too:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/in-spm.png"><img class="alignnone size-medium wp-image-730" title="Date In SharePoint Manager" src="http://www.novolocus.com/wp-content/uploads/2008/07/in-spm-300x86.png" alt="Date In SharePoint Manager - Although this is supposed to be UTC, it is the same as the local time" width="300" height="86" /></a></p>
<p>Note that by formatting the date with a Z at the end it&#8217;s saying that this time is UTC. However, I just didn&#8217;t believe it - SharePoint isn&#8217;t showing me UTC time, it&#8217;s showing Local (UTC+1 remember), so they can&#8217;t both read 22:59. To check then, I decided to look in the database. (I wasn&#8217;t changing anything, so I figured this would be okay).</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/in-sql-server.png"><img class="alignnone size-medium wp-image-731" title="Date In SQL Server" src="http://www.novolocus.com/wp-content/uploads/2008/07/in-sql-server.png" alt="Date In SQL Server - note it has been adjusted by 2 hours from my original value" width="218" height="85" /></a></p>
<p>Right, now <em>that </em>is the UTC time - and it&#8217;s been adjusted for my time zone <em>twice</em>.</p>
<p>Therefore, even though when I submit the time to the Web Service I&#8217;m using UTC time, and saying that I&#8217;m using UTC time as I&#8217;m formatting the datetime with Z, the date time is being converted to UTC a second time. When I then view the time, it&#8217;s being converted back once.</p>
<p>And SharePoint Manager is just wrong; it&#8217;s displaying the local time, not the UTC one.</p>
<p>Still with me?</p>
<p>So, I decided to look into the <a href="http://msdn.microsoft.com/en-us/library/lists.lists.updatelistitems.aspx"><strong>UpdateListItems </strong></a>call - is there a way of specifying what the timezone being used is? In other words, can I force the web service to recognise that I&#8217;m using UTC time?</p>
<p>Looking through the MSDN documentation, all the examples seem to use UTC time. Eventually, I found information on the <a href="http://msdn.microsoft.com/en-us/library/ms437580.aspx">Field</a> element description:</p>
<blockquote><p><strong>StorageTZ </strong><br />
Specifies how date/time values are stored. When StorageTZ is set to UTC, the date/time is handled as Coordinated Universal Time (UTC). To denote that a date/time value refers to &#8220;abstract&#8221; time, meaning that the date/time is stored in the database as entered by the user without conversion or storage of the local time zone, omit the StorageTZ attribute.</p></blockquote>
<p>If that doesn&#8217;t make any sense to you, well, it doesn&#8217;t make sense to me either. From that I don&#8217;t know what I need to set <strong>StorageTZ </strong>to - do I need to say that I&#8217;m using UTC &#8216;cos I&#8217;m using UTC, or do I have to omit it &#8216;cos I don&#8217;t want any conversion? I have no idea from that documentation.</p>
<p>So, what happens if I don&#8217;t convert my datetime to UTC before submitting it over the Web Service? Well, it works - <strong>BUT </strong>I still have to format the date time as <code>yyyy-MM-ddTHH:mm:ss<strong>Z</strong></code> ! If you format the time as just  <code>yyyy-MM-ddTHH:mm:ss</code> then the Web Service returns an exception. So <strong>I have to declare my datetime as being UTC even when it isn&#8217;t and SharePoint isn&#8217;t treating it as one!</strong></p>
<p>I&#8217;d be quite infuriated now then! I&#8217;ve just wasted a half day &#8216;cos some moron doesn&#8217;t get the idea of <em>Universal Time</em>, and didn&#8217;t wonder what that <strong>Z</strong> on the end of the string meant&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/31/sharepoint-web-services-and-utc-time-fun-and-games/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Inserting Images into Word for the Document Conversion Service</title>
		<link>http://www.novolocus.com/2008/07/30/inserting-images-into-word-for-the-document-conversion-service/</link>
		<comments>http://www.novolocus.com/2008/07/30/inserting-images-into-word-for-the-document-conversion-service/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 11:47:24 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Admin]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Office]]></category>

		<category><![CDATA[Document Conversion]]></category>

		<category><![CDATA[Word]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=715</guid>
		<description><![CDATA[Previously, I&#8217;ve mentioned how the Document Conversion Service doesn&#8217;t extract images and about how you have to insert them as linked objects. Well, it turns out that there are easier ways to link objects in than I&#8217;d explained previously.
In this example, I&#8217;m going to insert an image into my document first as an embedded object, [...]]]></description>
			<content:encoded><![CDATA[<p>Previously, I&#8217;ve mentioned how the <a href="http://www.novolocus.com/2008/04/18/document-conversion-service-and-images/">Document Conversion Service doesn&#8217;t extract images and about how you have to insert them as </a><em><a href="http://www.novolocus.com/2008/04/18/document-conversion-service-and-images/">linked objects</a>.</em> Well, it turns out that there are easier ways to link objects in than I&#8217;d explained previously.<span id="more-715"></span></p>
<p>In this example, I&#8217;m going to insert an image into my document first as an embedded object, then as a linked object. The image itself has been uploaded to an images Library.</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/a.png"><img class="alignnone size-medium wp-image-716" title="Images Library" src="http://www.novolocus.com/wp-content/uploads/2008/07/a-300x76.png" alt="Images Library showing source image" width="300" height="76" /></a></p>
<p>The image itself has to be in a library or on a webserver so that the converted page can refer to it by a URL.</p>
<p>In Word 2007 I go to the <strong>Insert Picture</strong> button:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/1.png"><img class="alignnone size-medium wp-image-717" title="Insert Picture Button" src="http://www.novolocus.com/wp-content/uploads/2008/07/1.png" alt="Insert Picture Button" width="206" height="129" /></a></p>
<p>This opens a file selection dialog. I entered the URL to my images library, and got the following view:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/2.png"><img class="alignnone size-medium wp-image-718" title="File Selection Dialog" src="http://www.novolocus.com/wp-content/uploads/2008/07/2-300x145.png" alt="File Selection from Images Library" width="300" height="145" /></a></p>
<p>I&#8217;m sure that there is a way to add things like the images library to the &#8216;My SharePoint Sites&#8217; section of the dialog, but I don&#8217;t know how to do that off the top of my head. Anyway, I did a normal insert of the image into my document:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/3.png"><img class="alignnone size-medium wp-image-719" title="Word document with image" src="http://www.novolocus.com/wp-content/uploads/2008/07/3-299x300.png" alt="Word document with image" width="299" height="300" /></a></p>
<p>Fine. I saved it, checked it in, and converted it. The result I got was:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/5.png"><img class="alignnone size-medium wp-image-720" title="Converted Page without image" src="http://www.novolocus.com/wp-content/uploads/2008/07/5-237x300.png" alt="Converted Page without image" width="237" height="300" /></a></p>
<p>No image - which is what we expected with embedded images. So next I repeated the process, but this time on the save dialog instead of just hitting <strong>Insert</strong>, I chose <strong>Link to File</strong> :</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/11.png"><img class="alignnone size-medium wp-image-721" title="File Selection Dialog" src="http://www.novolocus.com/wp-content/uploads/2008/07/11-300x192.png" alt="Inserting a Link to a File" width="300" height="192" /></a></p>
<p>I saved this, checked it in, converted it, and got the output of:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/12.png"><img class="alignnone size-medium wp-image-722" title="Converted Page with Image" src="http://www.novolocus.com/wp-content/uploads/2008/07/12-256x300.png" alt="Converted Page with Image" width="256" height="300" /></a></p>
<p>Fantastic! The image is still being referred to after conversion. Now, who happens if I download a copy of the source document, and try and open it up offline. Say I&#8217;m a salesman on the road or something, what would I see?</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/13.png"><img class="alignnone size-medium wp-image-723" title="Document Opened offline" src="http://www.novolocus.com/wp-content/uploads/2008/07/13-209x300.png" alt="Document Opened offline showing no image" width="209" height="300" /></a></p>
<p>Ah. The document itself has no image. Damn. Okay, lets try again, but this time choose the <strong>Insert and Link</strong> option:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/21.png"><img class="alignnone size-medium wp-image-724" title="Insert File and Link option" src="http://www.novolocus.com/wp-content/uploads/2008/07/21-300x82.png" alt="" width="300" height="82" /></a></p>
<p>Saved, converted, etc., and I get a working page:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/12.png"><img class="alignnone size-medium wp-image-722" title="Converted Page with Image" src="http://www.novolocus.com/wp-content/uploads/2008/07/12-256x300.png" alt="Converted Page with Image" width="256" height="300" /></a></p>
<p>And now if I open up the document offline I see:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/22.png"><img class="alignnone size-medium wp-image-725" title="Offline Word document showing Linked and Embedded image" src="http://www.novolocus.com/wp-content/uploads/2008/07/22-214x300.png" alt="Offline Word document showing Linked and Embedded image" width="214" height="300" /></a></p>
<p>Hurrah! A working document and a working page after conversion. It&#8217;s just a pain that it&#8217;s more complex that users are used to - they will make mistakes. It&#8217;s a real shame that the document conversion service can&#8217;t extract the images and put them into an images library for you.</p>
<p><em>(Side note - this was me at a friends party trying to use helium balloons to float a beer can. It took a surprising number of balloons)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/30/inserting-images-into-word-for-the-document-conversion-service/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Creating a SiteMapProvider for SharePoint</title>
		<link>http://www.novolocus.com/2008/07/29/creating-a-sitemapprovider-for-sharepoint/</link>
		<comments>http://www.novolocus.com/2008/07/29/creating-a-sitemapprovider-for-sharepoint/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 11:07:06 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Breadcrumbs]]></category>

		<category><![CDATA[Navigation]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=714</guid>
		<description><![CDATA[Interesting stuff about creating a SiteMapProvider on &#8216;Tomblog&#8217; (but Tom who?)
Note 1 - I guess he inherited from SPNavigationProvider or SPXmlContentMapProvider as SPSiteMapProvider and SPContentMapProvider are both sealed.
Note 2 - He doesn&#8217;t mention caching. I kind of wonder how that would work.
Still, interesting stuff - might have a look sometime as part of my &#8216;one [...]]]></description>
			<content:encoded><![CDATA[<p>Interesting stuff about <a href="http://tomblog.insomniacminds.com/2007/10/25/sharepoint-branding-issues-breadcrumb/">creating a SiteMapProvider</a> on &#8216;Tomblog&#8217; (but Tom who?)</p>
<p><strong>Note 1 </strong>- I guess he inherited from <strong>SPNavigationProvider </strong>or <strong>SPXmlContentMapProvider </strong>as <strong>SPSiteMapProvider </strong>and <strong>SPContentMapProvider </strong>are both sealed.</p>
<p><strong>Note 2 </strong>- He doesn&#8217;t mention caching. I kind of wonder how that would work.</p>
<p>Still, interesting stuff - might have a look sometime as part of my &#8216;one breadcrumb only&#8217; campaign.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/29/creating-a-sitemapprovider-for-sharepoint/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Content Roll-up options - Conclusions</title>
		<link>http://www.novolocus.com/2008/07/24/content-roll-up-options-conclusions/</link>
		<comments>http://www.novolocus.com/2008/07/24/content-roll-up-options-conclusions/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 12:00:09 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Content Rollup]]></category>

		<category><![CDATA[Web Parts]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=705</guid>
		<description><![CDATA[So, what what content roll-up web part to choose? Well, typically (for SharePoint) it depends.
Bamboo&#8217;s List Roll-up Web Part is the most feature rich, but a bit tricky - certainly it&#8217;s a bit too complex if you&#8217;re wanting to allow users to set up their own roll-up. The use of CAML is also a big [...]]]></description>
			<content:encoded><![CDATA[<p>So, what what content roll-up web part to choose? Well, typically (for SharePoint) it depends.</p>
<p>Bamboo&#8217;s <a href="http://www.novolocus.com/2008/07/23/content-roll-up-options-part-v-bamboos-list-rollip-web-part/">List Roll-up Web Part</a> is the most feature rich, but a bit tricky - certainly it&#8217;s a bit too complex if you&#8217;re wanting to allow users to set up their own roll-up. The use of CAML is also a big no-no for allowing basic users to set up their own. It&#8217;s a shame; it really is let down by this complexity, although it&#8217;s still simpler than using SharePoint Designer.</p>
<p>Using the <a href="http://www.novolocus.com/2008/07/21/content-roll-up-options-part-iii-data-view-web-part/">Dataview Web Part</a> directly has the same problem as Bamboo&#8217;s List Roll-up - complexity. It also requires SharePoint Designer. It&#8217;s harder to generate the Data View Web Part, but to be honest (given that you can do the same things as Bamboo&#8217;s List Roll-up web part) I suspect that most organisations would be fairly willing to live with that.</p>
<p>For me, it&#8217;s main problem is that it doesn&#8217;t pick up new lists automatically; you have to modify the data view web part to add the new lists. For that reason, I think you can only use this approach when you have a fixed set of lists to aggregate over.</p>
<p>The <a href="http://www.novolocus.com/2008/07/18/content-roll-up-options-part-ii-content-query-web-part/">Content Query Web Part</a> is pretty good, and there is a reason that it&#8217;s so often discussed in SharePoint Solutions. The web part itself is fairly straight forward to use - but using custom metadata in the display is a bit too complicated. Again, I think this solution is out of the range of the ability of typical users. I don&#8217;t like the lack of pagination options, either.</p>
<p><a href="http://www.novolocus.com/2008/07/22/content-roll-up-options-part-iv-lightning-tools-conductor/">Lightning Conductor</a> is the only one of the web parts that struck me as being simple enough that a non-technical person would be able to set up and use for content roll-up. It had many of the more complex features that we&#8217;ve seen (e.g. using XSL for formatting the results), but you didn&#8217;t have to use them, and the user interface exposes things that seem missing from the CQWP - like the ability to select the fields you want in the display! I&#8217;ve got to say, this is my favourite of the solutions I looked at.</p>
<p>So which one should you use? Well, as I said, it depends. The main factors involved seem to be:</p>
<ul>
<li>Are you wanting to aggregate across site collections?</li>
<li>Are the source lists fixed, or will they be changing?</li>
<li>Will the roll up be configured by technical or non-technical staff?</li>
</ul>
<p>I guess you weigh those up and take your choice.</p>
<p><strong>Edit:</strong> One questions I was asked was if it&#8217;d be difficult to write your own. Well, there&#8217;s no reason why you couldn&#8217;t; with the <a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spsitedataquery.aspx"><strong>SPSiteDataQuery</strong> </a>it wouldn&#8217;t even be hard. Programming around the configuration would take longer, and as we&#8217;ve seen, this can make a big difference to the usability of your solution. What I would observe is that both the 3rd party solutions were pretty cheap; it&#8217;d be diffult to write your own for as small a cost.</p>
<p><span id="more-705"></span></p>
<p>| <a href="http://www.novolocus.com/2008/07/17/content-roll-up-options-part-i-introduction/">Introduction</a> | <a href="http://www.novolocus.com/2008/07/18/content-roll-up-options-part-ii-content-query-web-part/">Content Query Web Part</a> | <a href="http://www.novolocus.com/2008/07/21/content-roll-up-options-part-iii-data-view-web-part/">Data View Web Part</a> |</p>
<p>| <a href="http://www.novolocus.com/2008/07/22/content-roll-up-options-part-iv-lightning-tools-conductor/">Lightning Conductor Web Part</a> | <a href="http://www.novolocus.com/2008/07/23/content-roll-up-options-part-v-bamboos-list-rollip-web-part/">Bamboo&#8217;s List Roll-Up Web Part</a> | <a href="http://www.novolocus.com/2008/07/24/content-roll-up-options-conclusions/">Conclusions</a> |</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/24/content-roll-up-options-conclusions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Content Roll-up options Part V - Bamboo&#8217;s List Roll-up Web Part</title>
		<link>http://www.novolocus.com/2008/07/23/content-roll-up-options-part-v-bamboos-list-rollip-web-part/</link>
		<comments>http://www.novolocus.com/2008/07/23/content-roll-up-options-part-v-bamboos-list-rollip-web-part/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 12:00:16 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Bamboo]]></category>

		<category><![CDATA[Content Rollup]]></category>

		<category><![CDATA[Web Parts]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=704</guid>
		<description><![CDATA[And the final content roll-up web part I examined is Bamboo Solutions List Roll-up Web Part.
This web part is a little strange; indeed, I&#8217;m not sure how to describe it. As I understand it, basically it&#8217;s a web part to generate a data-view web part, and add it to the page. Sound strange? Well, it [...]]]></description>
			<content:encoded><![CDATA[<p>And the final content roll-up web part I examined is <a href="http://store.bamboosolutions.com/">Bamboo Solutions</a> List Roll-up Web Part.</p>
<p>This web part is a little strange; indeed, I&#8217;m not sure how to describe it. As I understand it, basically it&#8217;s a web part to generate a data-view web part, and add it to the page. Sound strange? Well, it is a little bit. Let&#8217;s have a look:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/bamboo-webpart-for-generating-other-web-parts.png"><img class="alignnone size-medium wp-image-712" title="bamboo-webpart-for-generating-other-web-parts" src="http://www.novolocus.com/wp-content/uploads/2008/07/bamboo-webpart-for-generating-other-web-parts-300x209.png" alt="Web Part for generating other web parts" width="300" height="209" /></a></p>
<p>As you can see, this is a <em>big</em> web part on page. It&#8217;s user interface is much more complicated than the Lightning Conductor. I couldn&#8217;t help but notice that to do filtering by metadata column values appears to require writing CAML - which really is a bit much for many users.</p>
<p>This web part then generates an output Dataview Web Part:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/bamboo-generated.png"><img class="alignnone size-medium wp-image-713" title="bamboo-generated" src="http://www.novolocus.com/wp-content/uploads/2008/07/bamboo-generated-300x78.png" alt="Generated Dataview Web Part" width="300" height="78" /></a></p>
<p><em>(In that example, it&#8217;s only aggregating from one list - &#8216;cos I forgot that gave my lists different names, and then told the view to roll-up by list name).</em></p>
<p>So, it&#8217;s advantages:</p>
<ul>
<li>Can consolidate across Multiple Site Collections (which isn&#8217;t possible through the Out-of-box options)</li>
<li>Can consolidate a single site collection,  a site and it&#8217;s subsites or a specific list.</li>
<li>Can also consolidate sibling sites - which isn&#8217;t something I&#8217;ve seen elsewhere.</li>
<li>Can filter by list type</li>
<li>Can filter by content type or meta data fields</li>
<li>Can Group results</li>
<li>Has user definable sorting</li>
<li>Has Pagination of results</li>
<li>Fine control over caching</li>
</ul>
<p>And it&#8217;s disadvantages:</p>
<ul>
<li>More complex to use</li>
<li>More complex user interface</li>
<li>Probably requires writing CAML</li>
<li>Costs money (though I think is still a bargain compared to developer time)</li>
<li>Could be a tough sell to customers (&#8221;<em>But SharePoint already has the Content Query Web Part</em>&#8220;)</li>
</ul>
<p>In short: Probably the most powerful and feature rich of the web parts, but not as easy to use as some of the others. Really, more of a developer tool than a user tool.</p>
<p>So, on to the <a href="http://www.novolocus.com/2008/07/24/content-roll-up-options-conclusions/">conclusions&#8230;</a></p>
<p><span id="more-704"></span></p>
<p>| <a href="http://www.novolocus.com/2008/07/17/content-roll-up-options-part-i-introduction/">Introduction</a> | <a href="http://www.novolocus.com/2008/07/18/content-roll-up-options-part-ii-content-query-web-part/">Content Query Web Part</a> | <a href="http://www.novolocus.com/2008/07/21/content-roll-up-options-part-iii-data-view-web-part/">Data View Web Part</a> |</p>
<p>| <a href="http://www.novolocus.com/2008/07/22/content-roll-up-options-part-iv-lightning-tools-conductor/">Lightning Conductor Web Part</a> | <a href="http://www.novolocus.com/2008/07/23/content-roll-up-options-part-v-bamboos-list-rollip-web-part/">Bamboo&#8217;s List Roll-Up Web Part</a> | <a href="http://www.novolocus.com/2008/07/24/content-roll-up-options-conclusions/">Conclusions</a> |</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/23/content-roll-up-options-part-v-bamboos-list-rollip-web-part/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Content Roll-up options Part IV - Lightning Tools Conductor</title>
		<link>http://www.novolocus.com/2008/07/22/content-roll-up-options-part-iv-lightning-tools-conductor/</link>
		<comments>http://www.novolocus.com/2008/07/22/content-roll-up-options-part-iv-lightning-tools-conductor/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 12:00:30 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Content Rollup]]></category>

		<category><![CDATA[Lightning Tools]]></category>

		<category><![CDATA[Web Parts]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=703</guid>
		<description><![CDATA[From Lightning Tools, the folks who brought us the BDC Metaman (awful name, good product) comes their &#8216;Lightning Conductor&#8217; web part. Again, a slightly strange name (it isn&#8217;t copper and it doesn&#8217;t poke out from the top of a church roof). So what does it look like:

Okay, so it looks similar to the data view [...]]]></description>
			<content:encoded><![CDATA[<p>From <a href="http://www.lightningtools.com/">Lightning Tools</a>, the folks who brought us the BDC Metaman (awful name, good product) comes their &#8216;Lightning Conductor&#8217; web part. Again, a slightly strange name (it isn&#8217;t copper and it doesn&#8217;t poke out from the top of a church roof). So what does it look like:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/lightning-conductor-web.png"><img class="alignnone size-medium wp-image-709" title="lightning-conductor-web" src="http://www.novolocus.com/wp-content/uploads/2008/07/lightning-conductor-web-300x125.png" alt="Lightning Conductor Web Part" width="300" height="125" /></a></p>
<p>Okay, so it looks similar to the data view web part (apart from the &#8216;trial version&#8217; message!), but it has the same sorts of roll up options to the Content Query web part. One of the things that impressed me about this web part was actually the configuration screens in SharePoint:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/lightning-conductor-administration-screen.png"><img class="alignnone size-medium wp-image-710" title="lightning-conductor-administration-screen" src="http://www.novolocus.com/wp-content/uploads/2008/07/lightning-conductor-administration-screen-239x300.png" alt="" width="239" height="300" /></a></p>
<p>The main settings form is a well laid out, clear (if somewhat long) form. It just looks right.</p>
<p>The other significant administration screen with it is selection what columns you want to show, and their order, and any sorting or grouping.</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/lightning-conductor-field-administration-screen.png"><img class="alignnone size-medium wp-image-711" title="lightning-conductor-field-administration-screen" src="http://www.novolocus.com/wp-content/uploads/2008/07/lightning-conductor-field-administration-screen-224x300.png" alt="Selecting columns and ordering for the Lightning conductor Web Part" width="224" height="300" /></a></p>
<p>Now that is much easier than displaying extra columns in the Content Query Web Part (or the Data View Web Part, come to that. Again, quite a long form, but clear, and trust me, easier than writing XSL <img src='http://www.novolocus.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I did have a couple of little problems with it, though. Firstly, for some reason it didn&#8217;t seem to want to show me my Project or Project Status columns in the &#8216;Filters&#8217; section, so I couldn&#8217;t restrict my view by these fields. I may have configured something wrongly that this wasn&#8217;t possible.</p>
<p>The other thing that struck me was that while the web part does have column headings that the user can click to sort by, there is no icon to tell them what column they&#8217;re sorting by already, or whether it is sorting ascending or descending.</p>
<p>So, it&#8217;s advantages:</p>
<ul>
<li>Good user interface. I could imagine non-technical people being able to set up their own views.</li>
<li>Can consolidate across Multiple Site Collections (which isn&#8217;t possible through the Out-of-box options)</li>
<li>Can consolidate a single site collection,  a site and it&#8217;s subsites or a specific list.</li>
<li>Can filter by list type</li>
<li>Can filter by content type or meta data fields (though I had a problem with them)</li>
<li>Can Group results</li>
<li>Has user definable sorting (but needs a little arrow to show which column is being sorted, and in what order)</li>
<li>Has Pagination of results.</li>
<li>Can define view by XSL if you really want to.</li>
</ul>
<p>It&#8217;s disadvantages:</p>
<ul>
<li>Costs money (though I think is still a bargain compared to developer time)</li>
<li>Could be a tough sell to customers (&#8221;<em>But SharePoint already has the Content Query Web Part</em>&#8220;)</li>
</ul>
<p><strong>In short:</strong> It&#8217;s what everyone really wished that the Content Query Web Part actually was.</p>
<p>So, I&#8217;m quite impressed by the Lightning Conductor Web Part, but what of the other commercial option I&#8217;m reviewing - <a href="http://www.novolocus.com/2008/07/23/content-roll-up-options-part-v-bamboos-list-rollip-web-part/">Bamboo&#8217;s List Roll-Up Web Part</a>?</p>
<p><span id="more-703"></span></p>
<p>| <a href="http://www.novolocus.com/2008/07/17/content-roll-up-options-part-i-introduction/">Introduction</a> | <a href="http://www.novolocus.com/2008/07/18/content-roll-up-options-part-ii-content-query-web-part/">Content Query Web Part</a> | <a href="http://www.novolocus.com/2008/07/21/content-roll-up-options-part-iii-data-view-web-part/">Data View Web Part</a> |</p>
<p>| <a href="http://www.novolocus.com/2008/07/22/content-roll-up-options-part-iv-lightning-tools-conductor/">Lightning Conductor Web Part</a> | <a href="http://www.novolocus.com/2008/07/23/content-roll-up-options-part-v-bamboos-list-rollip-web-part/">Bamboo&#8217;s List Roll-Up Web Part</a> | <a href="http://www.novolocus.com/2008/07/24/content-roll-up-options-conclusions/">Conclusions</a> |</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/22/content-roll-up-options-part-iv-lightning-tools-conductor/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Content Roll-up options Part III - Data View Web Part</title>
		<link>http://www.novolocus.com/2008/07/21/content-roll-up-options-part-iii-data-view-web-part/</link>
		<comments>http://www.novolocus.com/2008/07/21/content-roll-up-options-part-iii-data-view-web-part/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 12:00:52 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Content Rollup]]></category>

		<category><![CDATA[Dataview]]></category>

		<category><![CDATA[Web Parts]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=702</guid>
		<description><![CDATA[The Data View Web Part is sort of the Swiss-army knife of displaying data in SharePoint. It&#8217;s an Out-of-Box web part, and while it is typically focussed on showing items from a single list, it is capable of showing data from merged lists.
Here&#8217;s an example of a Data View Web Part showing the same data [...]]]></description>
			<content:encoded><![CDATA[<p>The Data View Web Part is sort of the Swiss-army knife of displaying data in SharePoint. It&#8217;s an Out-of-Box web part, and while it is typically focussed on showing items from a single list, it is capable of showing data from merged lists.</p>
<p>Here&#8217;s an example of a Data View Web Part showing the same data as our examples from the Content Query Web Part</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/sharepoint-designer-generated-rollup.png"><img class="alignnone size-medium wp-image-708" title="sharepoint-designer-generated-rollup" src="http://www.novolocus.com/wp-content/uploads/2008/07/sharepoint-designer-generated-rollup-300x131.png" alt="Data View Web Part showing Merged data" width="300" height="131" /></a></p>
<p>It&#8217;s advantages are:</p>
<ul>
<li>Can show a view with user defined filtering, grouping and sorting.</li>
<li>Has pagination of results</li>
<li>Showing extra columns of data is easy to add</li>
<li>Can filter the results by Content Type, or Metadata field values</li>
<li>Cheap (Out-of-box)</li>
<li>Designing the view is easy</li>
</ul>
<p>It&#8217;s disadvantages are:</p>
<ul>
<li>Requires SharePoint Designer - and therefore a suitably technical user</li>
<li>Can only query and merge results from a fixed set of sites - there is no  &#8216;All Site collection&#8217; or &#8216;This site and subsites option&#8217;</li>
<li>Limited by site collection boundary</li>
</ul>
<p><strong>In Short:</strong> Flexible in the views it presents, but it&#8217;s actual ability to roll up data is limited and could require constant maintenance. Requires someone fairly technical with <em>SharePoint Designer</em> to set view up.<span id="more-702"></span></p>
<p>| <a href="http://www.novolocus.com/2008/07/17/content-roll-up-options-part-i-introduction/">Introduction</a> | <a href="http://www.novolocus.com/2008/07/18/content-roll-up-options-part-ii-content-query-web-part/">Content Query Web Part</a> | <a href="http://www.novolocus.com/2008/07/21/content-roll-up-options-part-iii-data-view-web-part/">Data View Web Part</a> |</p>
<p>| <a href="http://www.novolocus.com/2008/07/22/content-roll-up-options-part-iv-lightning-tools-conductor/">Lightning Conductor Web Part</a> | <a href="http://www.novolocus.com/2008/07/23/content-roll-up-options-part-v-bamboos-list-rollip-web-part/">Bamboo&#8217;s List Roll-Up Web Part</a> | <a href="http://www.novolocus.com/2008/07/24/content-roll-up-options-conclusions/">Conclusions</a> |</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/21/content-roll-up-options-part-iii-data-view-web-part/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Content Roll-up options Part II - Content Query Web Part</title>
		<link>http://www.novolocus.com/2008/07/18/content-roll-up-options-part-ii-content-query-web-part/</link>
		<comments>http://www.novolocus.com/2008/07/18/content-roll-up-options-part-ii-content-query-web-part/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 10:00:50 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Content Rollup]]></category>

		<category><![CDATA[CQWP]]></category>

		<category><![CDATA[Web Parts]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=701</guid>
		<description><![CDATA[The Content Query Web Part is the Out-of-Box content roll-up web part in MOSS, and consequently it&#8217;s one of the most widely used.
Here&#8217;s an example of one rollup up the &#8216;Project Documents&#8217; type:
It&#8217;s advantages are:

Can select from an entire Site Collection, a Site and it&#8217;s Sub-Sites, or from a List
Can select by List type
Can filter [...]]]></description>
			<content:encoded><![CDATA[<p>The Content Query Web Part is the Out-of-Box content roll-up web part in MOSS, and consequently it&#8217;s one of the most widely used.</p>
<p>Here&#8217;s an example of one rollup up the &#8216;Project Documents&#8217; type:<a href="http://www.novolocus.com/wp-content/uploads/2008/07/cqwp.png"><img class="alignnone size-medium wp-image-707" title="cqwp" src="http://www.novolocus.com/wp-content/uploads/2008/07/cqwp-300x123.png" alt="Standard content query web part" width="300" height="123" /></a></p>
<p>It&#8217;s advantages are:</p>
<ul>
<li>Can select from an entire Site Collection, a Site and it&#8217;s Sub-Sites, or from a List</li>
<li>Can select by List type</li>
<li>Can filter the results by Content Type, or Metadata field values</li>
<li>Can be configured to do Sorting and Grouping</li>
<li>Can display custom data - but this is a little complex</li>
</ul>
<p>It&#8217;s disadvantages are:</p>
<ul>
<li>Customising the view is possible, but tricky.The view has to be defined in XSL, and the Content Query Web part configured correctly to get the data you want to display.</li>
<li>No pagination of results - it&#8217;s just truncated.</li>
<li>The user can&#8217;t select the results order, or add his own filter.</li>
<li>You can&#8217;t query across Site collections.</li>
</ul>
<p>All in all, I&#8217;d say that defining the styles for what you want to display puts this into more a &#8216;development&#8217; task, which isn&#8217;t ideal if you&#8217;re trying to push administration out to your users a bit more.</p>
<p>Also, a major issue as far as I&#8217;m concerned is the lack of pagination. You can limit the number of items shown, but without an link to the next &#8216;page&#8217; of items.</p>
<p>Here&#8217;s an example of a Content Query Web Part showing some custom data (highlighted in yellow):</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/cqwp-with-custom-data.png"><img class="alignnone size-medium wp-image-699" title="cqwp-with-custom-data" src="http://www.novolocus.com/wp-content/uploads/2008/07/cqwp-with-custom-data-299x121.png" alt="Content Query Web Part showing custom column data." width="299" height="121" /></a></p>
<p><strong>In short: </strong>Cheap, and available, but has that &#8216;just a bit awkward&#8217; feel to setting it up, and lacks some of the features you&#8217;re likely to want. Often will require someone a bit technical for customisation.<span id="more-701"></span></p>
<p>| <a href="http://www.novolocus.com/2008/07/17/content-roll-up-options-part-i-introduction/">Introduction</a> | <a href="http://www.novolocus.com/2008/07/18/content-roll-up-options-part-ii-content-query-web-part/">Content Query Web Part</a> | <a href="http://www.novolocus.com/2008/07/21/content-roll-up-options-part-iii-data-view-web-part/">Data View Web Part</a> |</p>
<p>| <a href="http://www.novolocus.com/2008/07/22/content-roll-up-options-part-iv-lightning-tools-conductor/">Lightning Conductor Web Part</a> | <a href="http://www.novolocus.com/2008/07/23/content-roll-up-options-part-v-bamboos-list-rollip-web-part/">Bamboo&#8217;s List Roll-Up Web Part</a> | <a href="http://www.novolocus.com/2008/07/24/content-roll-up-options-conclusions/">Conclusions</a> |</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/18/content-roll-up-options-part-ii-content-query-web-part/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Content Roll-up options Part I - Introduction</title>
		<link>http://www.novolocus.com/2008/07/17/content-roll-up-options-part-i-introduction/</link>
		<comments>http://www.novolocus.com/2008/07/17/content-roll-up-options-part-i-introduction/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 12:00:49 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Content Rollup]]></category>

		<category><![CDATA[Web Parts]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=700</guid>
		<description><![CDATA[Well, I&#8217;ve been asked to examine some of the options for doing content roll-up in SharePoint. I thought I&#8217;d present this as a bit of a mini-series, rather than one huge post.
What is content roll-up? Simply, it&#8217;s about pulling data from different locations in SharePoint into a single view, and presenting it to the user [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I&#8217;ve been asked to examine some of the options for doing content roll-up in SharePoint. I thought I&#8217;d present this as a bit of a mini-series, rather than one huge post.</p>
<p><strong>What is content roll-up?</strong> Simply, it&#8217;s about pulling data from different locations in SharePoint into a single view, and presenting it to the user in a consolidated form. This is a pretty common task in SharePoint. For example, think of things like roll-up of News items from the sites in your site collection. That&#8217;s actually built into the Collaboration site  template:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/content-roll-up-examples.png"><img class="alignnone size-medium wp-image-706" title="content-roll-up-examples" src="http://www.novolocus.com/wp-content/uploads/2008/07/content-roll-up-examples-300x198.png" alt="News Items - and example of content roll up" width="300" height="198" /></a></p>
<p>I&#8217;ve bracketed both the web parts being used with red and blue - otherwise it&#8217;s not clear that there are two web parts doing content roll-up here - one for the most recent headline, and another to show a list of recent News items.</p>
<p>There are lots of other examples of where this is useful - consolidation of tasks for a user is another common requirement, or rolling-up all the documents of one type or another - such as expenses, etc..</p>
<p>Anyway, over the next week or so I&#8217;ll examine some of the solutions to content roll-up that I&#8217;ve seen. It&#8217;s not meant to be an exhaustive list - there are quite a lot of solutions to content roll-up around, and you can write your own - but why reinvent the wheel?</p>
<p>| <a href="http://www.novolocus.com/2008/07/17/content-roll-up-options-part-i-introduction/">Introduction</a> | <a href="http://www.novolocus.com/2008/07/18/content-roll-up-options-part-ii-content-query-web-part/">Content Query Web Part</a> | <a href="http://www.novolocus.com/2008/07/21/content-roll-up-options-part-iii-data-view-web-part/">Data View Web Part</a> |</p>
<p>| <a href="http://www.novolocus.com/2008/07/22/content-roll-up-options-part-iv-lightning-tools-conductor/">Lightning Conductor Web Part</a> | <a href="http://www.novolocus.com/2008/07/23/content-roll-up-options-part-v-bamboos-list-rollip-web-part/">Bamboo&#8217;s List Roll-Up Web Part</a> | <a href="http://www.novolocus.com/2008/07/24/content-roll-up-options-conclusions/">Conclusions</a> |</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/17/content-roll-up-options-part-i-introduction/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Column Names when setting up the Content Query Web Part</title>
		<link>http://www.novolocus.com/2008/07/15/column-names-when-setting-up-the-content-query-web-part/</link>
		<comments>http://www.novolocus.com/2008/07/15/column-names-when-setting-up-the-content-query-web-part/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 12:00:02 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Content Rollup]]></category>

		<category><![CDATA[CQWP]]></category>

		<category><![CDATA[Web Parts]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=696</guid>
		<description><![CDATA[So, I&#8217;ve been asked to do a look at content roll up options in SharePoint, such as the Content Query Web Part (CQWP), and one of the things I&#8217;ve been asked to do is to make it display custom column data. Now, there are lots of articles about this - on MSDN (here and here), [...]]]></description>
			<content:encoded><![CDATA[<p>So, I&#8217;ve been asked to do a look at content roll up options in SharePoint, such as the Content Query Web Part (CQWP), and one of the things I&#8217;ve been asked to do is to make it display custom column data. Now, there are lots of articles about this - on MSDN (<a href="http://msdn.microsoft.com/en-us/library/aa981241.aspx">here</a> and <a href="http://msdn.microsoft.com/en-us/library/ms497457.aspx">here</a>), Steven Van de Craen <a href="http://www.microsoft.com/belux/msdn/nl/community/columns/stevenvandecraen/contentquerywebpart.mspx">has an article about it</a>, and there are lots of other articles about it (those were just the best resources I came across in a quick search). &#8216;Cos of that, I won&#8217;t repeat &#8216;em - I&#8217;ll just summarise the steps:</p>
<ol>
<li>Add extra columns to the selected data (CommonViewFields) by exporting, editing and importing the web. part.</li>
<li>Add a new display format to the ItemsStyle.xsl file.</li>
</ol>
<p>Okay, so I did this, and one of my extra columns of data I wanted to present was shown (&#8217;Project&#8217;), but the<br />
other (&#8217;Project Status&#8217;) wasn&#8217;t. What was going on?</p>
<p>Well, I sort of figured it was the space in the name - SharePoint does a funny encoding of spaces to <strong>_x0020_ </strong>which is annoying, and often causes errors. Anyway, I opened up SharePoint Manager to check what the field was called internally - and sure enough, it was called <strong>Project_x0020_Status</strong>. Fair enough, I&#8217;d got the internal name right, but using that still didn&#8217;t work.</p>
<p>I decided in the end to have a look at what the fields the CQWP was retrieving. But how to? I could define my own XSL, but I didn&#8217;t know what use to get the list of fields. Well, I found the answer on <a href="http://www.dotnet6.com/blogs/bart_callaerts/archive/2008/01/07/customizing-the-content-query-webpart.aspx">Bart Callaerts web site</a> (actually, there is another good &#8216;how to customise the CQWP article). Anyway, I&#8217;m shamelessly plagiarising just in case that page in unavailable.</p>
<p>His idea was to define an Item Style to show all the columns of the retrieved items. The code for this is:</p>
<p><code>&lt;xsl:template name="ViewFields" match="Row[@Style='ViewFields']&#8221; mode=&#8221;itemstyle&#8221;&gt;<br />
&lt;xsl:for-each select=&#8221;@*&#8221;&gt;<br />
P: &lt;xsl:value-of select=&#8221;name()&#8221; /&gt;<br />
&lt;/xsl:for-each&gt;<br />
&lt;/xsl:template&gt;</code></p>
<p>And you can <a href="http://www.novolocus.com/wp-content/uploads/2008/07/xsl-for-all-columns.txt">download a copy here</a> - copying and pasting from this page can screw up so of the characters.</p>
<p>Anyway, I used this view to see my items:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/cqwp-showing-all-columns.png"><img class="alignnone size-medium wp-image-698" title="cqwp-showing-all-columns" src="http://www.novolocus.com/wp-content/uploads/2008/07/cqwp-showing-all-columns-300x118.png" alt="" width="300" height="118" /></a></p>
<p>Looking through that list of fields, I saw that the name of my column (according to the CQWP) is now <strong>Project_x005F_x0020_Status</strong>. That&#8217;s a bit strange, and I don&#8217;t know why that&#8217;s happened. I guess that <a href="http://www.sharepointblogs.com/michael/archive/2007/06/28/customizing-the-content-query-web-part-and-custom-item-styles-best-practices.aspx">Michael Hoffer&#8217;s suggestion</a> (don&#8217;t use spaces in the names when you create the columns - add them later) is a good one - I reckon it&#8217;d have saved me this trouble!</p>
<p>Anyway, this suggestion worked nicely. I&#8217;ve highlighted my data in yellow:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/cqwp-with-custom-data.png"><img class="alignnone size-medium wp-image-699" title="cqwp-with-custom-data" src="http://www.novolocus.com/wp-content/uploads/2008/07/cqwp-with-custom-data-299x121.png" alt="Content Query Web Part showing custom column data." width="299" height="121" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/15/column-names-when-setting-up-the-content-query-web-part/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The best use of SharePoint Workflow is &#8230; sparing!</title>
		<link>http://www.novolocus.com/2008/07/14/the-best-use-of-sharepoint-workflow-is-sparing/</link>
		<comments>http://www.novolocus.com/2008/07/14/the-best-use-of-sharepoint-workflow-is-sparing/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 10:16:50 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Workflow]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=695</guid>
		<description><![CDATA[I&#8217;m with Bob Mixon - Business Process Management Does Not Equal Workflow. Go read that post now.
Like him, I hear the terms &#8216;Workflow&#8217; and &#8216;BPM&#8217; used interchangably, but he is right - workflow is a technology that can be used to support a business process. It&#8217;s not the only technology, though, and it isn&#8217;t always [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m with Bob Mixon - <a href="http://www.bobmixon.com/blog/Lists/Posts/Post.aspx?List=7c32f0f1%2D8b62%2D4d9f%2D95d0%2D77c5aa234374&amp;ID=58">Business Process Management Does Not Equal Workflow</a>. Go read that post now.</p>
<p>Like him, I hear the terms &#8216;Workflow&#8217; and &#8216;BPM&#8217; used interchangably, but he is right - workflow is a technology that can be used to support a business process. It&#8217;s not the only technology, though, and it isn&#8217;t always appropriate to use. Too often I see workflows with some horrible process in them for dealing a with a variety of edge cases where actually all the customer needs is to record that this is an exception to their normal process, and that it was sent to Joe Bloggs to deal with.</p>
<p>I&#8217;m a big fan of allowing human intelligence a role in the process. But I digress&#8230;</p>
<p>The point I was leading around to is that you don&#8217;t have to use just workflow to support a business process. You can actually achieve quite a lot with views, and you can provide some of the automation with just event handlers. Or, if you&#8217;re brave, you can use workflow - but <strong>Keep It Simple, Stupid</strong>! A lot of the example workflow projects are pretty simple, and short - keeping yours the same seems a safer plan.</p>
<p>Also, I do think keeping workflows short and simple, and having  a number of them supporting a business process is generally a good idea.</p>
<p>We did a project just after SharePoint RTM was released where I was supposed to be using workflow. I&#8217;d been trying to build this particular workflow since the Beta 1 release, but there were still a lot of issues in the TRM version, <span id="more-695"></span>such as:</p>
<ul>
<li> reading in InfoPath data from repeating sections</li>
<li>populating data into certain InfoPath form fields</li>
<li>Delay activities never returning</li>
<li>not being able to get Modification forms working</li>
</ul>
<p>&#8230;and a whole list of other minor niggles and complaints. The Delay activities thing was the killer for us though - they were essential to the process we were trying to support. In the end, we had to abandon workflow, but instead we used views and event handlers. With the correct views, users could still see what items were &#8216;late&#8217;. Event Receivers let us move items between different states. Certain users could take control of items and change statuses by hand, which mean that it dealt with exceptions well. It wasn&#8217;t as elegant as what we&#8217;d wanted to do in Workflow (which wasn&#8217;t that complicated), but it did work, and it didn&#8217;t take long to build. (That was important; the project ended up being 4 months late, which I thought was actually pretty good).</p>
<p>Actually, I built a similar system years ago. Most organisations, when you first go to see them, insist that they know all their business processes, and have them all well documented. Later, it becomes clear that their documentation is wrong, or incomplete (&#8221;Oh, yes, actually sometimes we have to do <em>Y</em> instead of <em>X</em>&#8220;), or contradictory - but this doesn&#8217;t matter as the people in this process are doing something different anyway.</p>
<p>However, we had this one particular customer who sat down with us and said &#8220;I don&#8217;t think we know our processes at all, although we think we do.&#8221; (Smart move). He went on to explain that they had a number of things that <em>had</em> to be done, and that as long as they <em>were</em> completed, nobody would really mind what order they were in. Oh, and sometimes they&#8217;d want to add other tasks that needed to be done in that specific case. We suggested a sort of &#8216;Task List&#8217; for each item, with different templates of tasks for different processes.<br />
He concurred - and it was one of the best solutions I&#8217;d written. On time, within budget, no problems.</p>
<p>So I guess the lessons there were:</p>
<ul>
<li>Be sure you really know your process</li>
<li>Only automate things that actually really benefit from it</li>
<li>Keep automation short, so your process is a bit more loose</li>
<li>Leave human intelligence in the loop to deal with exceptions. Don&#8217;t try to design in ever case - exceptions are&#8230; well, exceptional!</li>
</ul>
<p>Bob Mixon&#8217;s note about &#8216;Agility&#8217; is also worth considering when designing your solution - try to design in a way that allows future changes to your process, &#8216;cos it will change. Short automation and loose coupling really helps that.</p>
<p>Just my thoughts <img src='http://www.novolocus.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/14/the-best-use-of-sharepoint-workflow-is-sparing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Stupid Visual Studio 2005 MSDN DVD</title>
		<link>http://www.novolocus.com/2008/07/11/stupid-visual-studio-2005-msdn-dvd/</link>
		<comments>http://www.novolocus.com/2008/07/11/stupid-visual-studio-2005-msdn-dvd/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 12:00:51 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=694</guid>
		<description><![CDATA[A note for myself. The  MSDN DVD for April 2007 (Disc 3070.1) with Visual Studio 2005 on it can&#8217;t be installed directly from the DVD. The installer asks you to &#8216;Install Disk 1&#8242;, which is unfortunate, as there is no disc 1, and the DVD contains both CDs in different directories on it.
The solution [...]]]></description>
			<content:encoded><![CDATA[<p>A note for myself. The  MSDN DVD for April 2007 (Disc 3070.1) with Visual Studio 2005 on it can&#8217;t be installed directly from the DVD. The installer asks you to &#8216;Install Disk 1&#8242;, which is unfortunate, as there is no disc 1, and the DVD contains both CDs in different directories on it.</p>
<p>The solution is to copy both CDs to a single directory on the hard disc of the machine, and run the installer from there.</p>
<p>Unfortunately, for some reason my virtual machine won&#8217;t let me do that directly - it complains about copying one of the files from the DVD - but I can share a folder on the host, and copy the installation files into the VM via that folder.</p>
<p>Once you&#8217;ve copied the files on, though, the &#8216;pre-filled&#8217; licence key isn&#8217;t there anymore. You can get the key by starting installing from the DVD, writing it down, and then using it when you install from the hard disc.</p>
<p>It&#8217;s crazy the work-arounds you have to go through sometimes <img src='http://www.novolocus.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/11/stupid-visual-studio-2005-msdn-dvd/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MSI Setup projects in Visual Studio : 2005 != 2008</title>
		<link>http://www.novolocus.com/2008/07/09/setup-projects-in-visual-studio-2005-2008/</link>
		<comments>http://www.novolocus.com/2008/07/09/setup-projects-in-visual-studio-2005-2008/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 12:00:33 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Coding]]></category>

		<category><![CDATA[Office]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=693</guid>
		<description><![CDATA[I&#8217;ve been working on a project that is a shared plugin to Office 2003. I was writing this in Visual Studio 2005, but for a variety of reasons (not least of which was having a tidier dev environment), I decided to move this onto a convenient VM which happened to have a lot of the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on a project that is a shared plugin to Office 2003. I was writing this in Visual Studio 2005, but for a variety of reasons (not least of which was having a tidier dev environment), I decided to move this onto a convenient VM which happened to have a lot of the things I needed (MOSS, a domain controller, AD, exchange).</p>
<p>Unfortunately, it also had Visual Studio 2008 too. I didn&#8217;t think this would be a problem, though, and so I when I opened the project on it for the first time and it asked me to upgrade the project to 2008, I was happy do. I didn&#8217;t think there&#8217;d be a problem.</p>
<p>Well, during development, there wasn&#8217;t. Whenever I went to test my MSI installer, though, I started to have problems. Installation kept failing and I kept getting the error:</p>
<blockquote><p>Error 1937. An error occurred during the installation of assembly &#8216;Extensibility,Version=&#8221;7.0.3300.0&#8243;,Culture=&#8221;neutral&#8221;,PublicKeyToken=&#8221;B03F5F7F11D50A3A&#8221;,ProcessorArchitecture=&#8221;MSIL&#8221;&#8216;. The signature or catalog could not be verified or is not valid. HRESULT: 0&#215;80131045. assembly interface: IAssemblyCacheItem, function: Commit, component: {8C306A7E-AE8E-14F0-4168-C43060985CF4}</p></blockquote>
<p>This was surprising. <em>Extensibility.dll</em> isn&#8217;t one of mine - it&#8217;s a Microsoft one that <a href="http://www.novolocus.com/2008/03/13/problems-with-the-extensibilitydll-in-outlook-add-ins/">should&#8217;ve been in the Primary Interop Assemblies for Office</a>. Anyway, it&#8217;s not one of mine, it hadn&#8217;t changed, and it was signed correctly. So what gives? <span id="more-693"></span></p>
<p>My first investigations using the error code &#8216;0&#215;80131045&#8242; suggested that the problem lay with the operating system, and offered <a href="http://blogs.msdn.com/astebner/archive/2004/11/10/255346.aspx">some pretty terrifying solutions</a>. I tried them anyway - they didn&#8217;t work.</p>
<p>Next, I wondered if the old version of the MSI installer (compiled on Visual Studio 2005) would work on my dev machine - it did. I began to wonder if I my new MSI installer would work on another machine - it didn&#8217;t. The old version still worked, and my new MSI wouldn&#8217;t work on either machine. I was comfortable with the conclusion that the problem wasn&#8217;t the OS.</p>
<table class="displayTable" border="0">
<tbody>
<tr>
<th rowspan="2"></th>
<th colspan="2">Compiled with</th>
</tr>
<tr>
<th>VS2005</th>
<th>VS2008</th>
</tr>
<tr>
<th>Old Dev Machine</th>
<td>OK</td>
<td>Failed</td>
</tr>
<tr>
<th>New Dev Machine</th>
<td>OK</td>
<td>Failed</td>
</tr>
<tr>
<th>Random other Machine</th>
<td>OK</td>
<td>Failed</td>
</tr>
</tbody>
</table>
<p>Well, after that I consided the Installer project in Visual Studio. This is the thing that makes the MSI with my DLL in it. Perhaps upgrading the project for Visual Studio 2008 had screwed something up? Well, it sure looked the same, and looking into the actual code showed only minor differences. In fact, other than declaring themselves to be for different versions of Visual Studio, the two projects were identical. So I don&#8217;t think that the upgrade screwed anything up.</p>
<p>This left me in an unenviable position. I couldn&#8217;t see anything wrong with the installer for the latest version of my code - but it didn&#8217;t work. The error being reported back was clearly wrong - the assembly I was installing was correctly signed.</p>
<p>The only conclusion that I could come to was that packaging the MSI in Visual Studio 2008 was producing a different result than Visual Studio 2005, and that my only option was to merge my code back into the old VS2005 version of the project.</p>
<p>Fortunately, WinMerge is great.</p>
<p>Anyway, I did this. I could now compile my new code on my old VS2005 Development system, and then try installing on my MSI on my VS2008 system. It worked perfectly! Sadly, I&#8217;ve now got a fair effort to go to to build a new stable development environment.</p>
<p>So the upshot of all this is that although they might look nearly identical, and in fact might be nearly identical, there are clearly other differences in the output MSI installers for Visual Studio 2005 and Visual Studio 2008. If you get the same sort of error as me, consider using Visual Studio 2005.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/09/setup-projects-in-visual-studio-2005-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Interference between SharePoint ItemEventReceivers and Web Services</title>
		<link>http://www.novolocus.com/2008/07/07/itemeventreceivers-and-web-services/</link>
		<comments>http://www.novolocus.com/2008/07/07/itemeventreceivers-and-web-services/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 12:29:50 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[ListItem]]></category>

		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=691</guid>
		<description><![CDATA[So, I&#8217;ve been working on an application that uploads documents to SharePoint and sets metadata on the item via web services. I&#8217;ve made a note about how to do this before - although I&#8217;ve yet to vent my frustration at not having a web service call to upload a document in a single transaction that [...]]]></description>
			<content:encoded><![CDATA[<p>So, I&#8217;ve been working on an application that uploads documents to SharePoint and sets metadata on the item via web services. I&#8217;ve made<a href="http://www.novolocus.com/2008/01/07/uploading-files-to-sharepoint-using-the-web-services/"> a note about how to do this </a>before - although I&#8217;ve yet to vent my frustration at not having a web service call to upload a document in a single transaction that either fails or succeeds. Anyway, the result is that I have to upload the file and <em>then</em> set the metadata against it. Unfortunately, this wasn&#8217;t working for one of our customers - sometimes it would work, and sometimes it wouldn&#8217;t set the metadata.<span id="more-691"></span></p>
<p>The intermittent nature of the problem suggests a timing issue - something is under race conditions. Saving the same file to the same library would sometimes work, and sometimes wouldn&#8217;t. Naturally, I couldn&#8217;t reproduce the problem on my test system.</p>
<p>Looking in the logs from my application, I found that when the metadata wasn&#8217;t set, there was an exception being recorded:</p>
<blockquote><p>Your changes conflict with those made concurrently by another user. If you want your changes to be applied, click Back in your Web browser, refresh the page, and resubmit your changes. Error Code: 0&#215;81020015</p></blockquote>
<p>Interesting. How could my changes conflict with those made by another user? I&#8217;ve only just created the item!</p>
<p>Well, there is a way, actually. The customer has an event receiver on all of their Document Libraries, and it runs on the <strong>ItemAdded</strong> event. Could this be the issue? I decided to write my own <strong>ItemEventReceiver</strong> class. On the <strong>ItemAdded</strong> event, I just put in code to make the thread sleep for 3 seconds. I deployed it, and started by doing a normal upload through the SharePoint web UI.</p>
<p><img src="http://www.novolocus.com/wp-content/uploads/2008/07/upload-dialog-300x107.png" alt="SharePoint File Upload Dialog" width="300" height="107" /></p>
<p>It worked normally, although after I clicked the upload there was a delay of about 3 seconds before I was shown the Edit Item Properties page - which I&#8217;d kind of half expected (otherwise, what if the <strong>ItemEventReceiver</strong> was setting some of those properties?)</p>
<p>Next, I tried using my application to upload a file and set its metadata - and it failed. I got a response back in about a second - that&#8217;s for uploading the same file, <em>and</em> setting it&#8217;s metadata. Looking in the logs, I could see the same error as is happening on the customer&#8217;s system. Clearly, my call to <strong>Lists.UpdateListItems</strong> was being run at the same time as the <strong>ItemEventReceiver</strong> - and the event receiver had the item &#8216;locked&#8217;. I deactivated my event receiver - and my test system started to work just fine again.</p>
<p>The reason that the problem is intermittent on the customer&#8217;s system is, I think, that sometimes the event receiver has finished before I try to add the metadata - and sometimes it hasn&#8217;t. There is a race between the event receiver finishing and setting the metadata starting.</p>
<p>Not sure what to do about it though. I guess I can just keep retrying until it works. It is interesting that the user interface waits for the event receiver to finish whereas the Web services don&#8217;t</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/07/itemeventreceivers-and-web-services/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Browse Directories Permission and Webs.GetWebCollection strangeness</title>
		<link>http://www.novolocus.com/2008/07/03/browse-directories-and-webs-getwebcollection-strangeness/</link>
		<comments>http://www.novolocus.com/2008/07/03/browse-directories-and-webs-getwebcollection-strangeness/#comments</comments>
		<pubDate>Thu, 03 Jul 2008 12:00:21 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Admin]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[Permissions]]></category>

		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=681</guid>
		<description><![CDATA[I&#8217;ve had a support call from a client; an application that I&#8217;d written wasn&#8217;t letting some users see the subsites of a particular site. However, in the web browser, they could see (and navigate) to those sites. &#8220;Strange&#8221;, I thought, &#8220;they must&#8217;ve misconfigured their permissions&#8221;. Well, they hadn&#8217;t.
My app communicates with SharePoint via the Web [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a support call from a client; an application that I&#8217;d written wasn&#8217;t letting some users see the subsites of a particular site. However, in the web browser, they could see (and navigate) to those sites. &#8220;Strange&#8221;, I thought, &#8220;they must&#8217;ve misconfigured their permissions&#8221;. Well, they hadn&#8217;t.<span id="more-681"></span></p>
<p>My app communicates with SharePoint via the Web Services, and tracking through my code showed me that the problem was coming from the <a href="http://msdn.microsoft.com/en-us/library/webs.webs.getwebcollection.aspx"><strong>Webs.GetWebCollection</strong></a> call. As this problem was only affecting some users - notably, those who&#8217;d have limited rights, I wondered if this was a permission issue. It seemed strange though; users could still see the sub-sites, either in the navigation menus or in the &#8216;View all site content&#8217; page.</p>
<p>Digging further into permissions, I found that users with &#8216;Read&#8217; rights got errors with my application. I decided to set up a test system.</p>
<p>I created a site collection with three &#8216;levels&#8217; of sites (<em>Gateway, Branch, Subsite</em>). For my test, I would use the <em>Gateway </em>site, the <em>Branch A </em>site inside it, and the <em>Subsite 1</em> site inside that. Thus, they looked like:</p>
<p><em>Gateway &gt; Branch A &gt; Subsite 1</em></p>
<p>I then created four users and gave them different memberships on the different sites:</p>
<table class="displayTable" border="0">
<tbody>
<tr>
<td></td>
<th>Gateway</th>
<th>Branch A</th>
<th>Subsite 1</th>
</tr>
<tr>
<th>Alice</th>
<td>Member</td>
<td>Member</td>
<td>Member</td>
</tr>
<tr>
<th>Bob</th>
<td>Visitor</td>
<td>Member</td>
<td>Member</td>
</tr>
<tr>
<th>Chan</th>
<td>Visitor</td>
<td>Visitor</td>
<td>Member</td>
</tr>
<tr>
<th>Dina</th>
<td>Visitor</td>
<td>None</td>
<td>Visitor</td>
</tr>
</tbody>
</table>
<p>As usual, Members have <em>Contribute </em>rights and Visitors have <em>Read </em>rights</p>
<p>I tried logging into SharePoint through the web browser as the different users to see what I could see in the navigation. Alice, Bob and Chan all saw the same:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/alice-web.png"><img class="alignnone size-full wp-image-682" title="alice-web" src="http://www.novolocus.com/wp-content/uploads/2008/07/alice-web.png" alt="Alice\'s view of the navigation in the web browser" width="587" height="128" /></a></p>
<p>All these users could see and navigate to <em>Gateway, Branch A</em> and <em>Subsite 1</em> without error, although sites where they were only visitors they couldn&#8217;t make any changes, like creating new documents, etc..</p>
<p>The user Dina was a little different though. With no rights on <em>Branch A</em>, she couldn&#8217;t see it in the navigation:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/dina-web-no-brancha.png"><img class="alignnone size-full wp-image-683" title="dina-web-no-brancha" src="http://www.novolocus.com/wp-content/uploads/2008/07/dina-web-no-brancha.png" alt="Dina\'s view of the navigation in the web browser" width="586" height="123" /></a></p>
<p>She could, however, still go to Subsite 1 via it&#8217;s URL.</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/dina-web-but-can-visit-subsite1.png"><img class="alignnone size-full wp-image-684" title="dina-web-but-can-visit-subsite1" src="http://www.novolocus.com/wp-content/uploads/2008/07/dina-web-but-can-visit-subsite1.png" alt="Dina can still visit Subsite 1" width="565" height="257" /></a></p>
<p>Note that the breadcrumb shows Branch A, but clicking on it gives:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/dina-web-brancha-access-denied.png"><img class="alignnone size-medium wp-image-686" title="dina-web-brancha-access-denied" src="http://www.novolocus.com/wp-content/uploads/2008/07/dina-web-brancha-access-denied-300x253.png" alt="Dina can\'t get to Branch A - Access denied" width="300" height="253" /></a></p>
<p>So far, so good. The browser interface behaves pretty much as one would expect.</p>
<p>Next, I wrote a console app that would, as each of the users, try the <strong>Web.GetWebCollection</strong> web service call on each of those sites. The results I got were:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/console-app-no-browse-directories.png"><img class="alignnone size-full wp-image-687" title="console-app-no-browse-directories" src="http://www.novolocus.com/wp-content/uploads/2008/07/console-app-no-browse-directories.png" alt="Console App - initial results" width="500" height="259" /></a></p>
<p>Looking through the results, a pattern becomes pretty clear. Only sites where the user has <em>Contribute </em>rights work correctly, otherwise the result is an error. In other words, <em>users with Read rights aren&#8217;t able to call the <strong>Web.GetWebCollection</strong> service, even though they can see sub-sites of the site in the web browser</em>.</p>
<p>Strange.</p>
<p>So what permission is doing this? Looking at Read and Contribute perms, I noticed the <strong>Browse Directories</strong> permission:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/browse-directories-perm.png"><img class="alignnone size-medium wp-image-688" title="browse-directories-perm" src="http://www.novolocus.com/wp-content/uploads/2008/07/browse-directories-perm-300x202.png" alt="The Browse Directories permission" width="300" height="202" /></a><br />
Hmm. All I can find on google says:</p>
<blockquote><p>Enumerate files and folders in a Web site using an interface such as SharePoint Designer or Web-based Distributed Authoring and Versioning (Web DAV).</p></blockquote>
<p>Well, it looks like something related to web services. I mean, SharePoint Designer must use the web services, right? Well, one way to find out - I added that right to the &#8216;Read&#8217; permission level, and ran my application again:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/console-app-with-browse-directories.png"><img class="alignnone size-full wp-image-689" title="console-app-with-browse-directories" src="http://www.novolocus.com/wp-content/uploads/2008/07/console-app-with-browse-directories.png" alt="Console App results with Browse Directories" width="500" height="360" /></a></p>
<p>This looks better - all calls have been successful, apart from Dina&#8217;s request of <em>Branch A</em>, which is also correct - she has no rights on that site!</p>
<p>So has this affected what users can see and do in the web interface?</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/07/dina-web-still-no-brancha-with-browse-directories.png"><img class="alignnone size-full wp-image-690" title="dina-web-still-no-brancha-with-browse-directories" src="http://www.novolocus.com/wp-content/uploads/2008/07/dina-web-still-no-brancha-with-browse-directories.png" alt="Dina still can\'t get to Branch A in the web browser." width="585" height="117" /></a></p>
<p>Well, no, would be the short answer.</p>
<p>So what is the <strong>Browse Directories</strong> permission? Well, damned if I know. All I can find on Google is the same text as above. I gather that it does <a href="http://clintcherry.spaces.live.com/blog/cns!AEC0DCBC460E45B9!455.entry">somehow affect Spell-checking,</a> but that still doesn&#8217;t tell me what it does.</p>
<p>After a fair bit of testing, I can&#8217;t see any other effects.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/03/browse-directories-and-webs-getwebcollection-strangeness/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quite Impressed by Camtasia</title>
		<link>http://www.novolocus.com/2008/07/02/quite-impressed-by-camtasia/</link>
		<comments>http://www.novolocus.com/2008/07/02/quite-impressed-by-camtasia/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 12:00:38 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[General Tech]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=680</guid>
		<description><![CDATA[Okay, so many of my colleagues are away on holiday at the moment, and that can make getting everyone into one room to show them a presentation difficult.
Unfortunately, I wanted to show some of out Sales and pre-sales guys some of the &#8217;standard&#8217; customisations to search that I was working on last month. I could [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, so many of my colleagues are away on holiday at the moment, and that can make getting everyone into one room to show them a presentation difficult.</p>
<p>Unfortunately, I wanted to show some of out Sales and pre-sales guys some of the &#8217;standard&#8217; customisations to search that I was working on last month. I could do screenshots and Powerpoint - but it&#8217;s slower to create, and not as easy to see as a video.</p>
<p>Well, I&#8217;d heard of <a href="http://www.techsmith.com/camtasia.asp">Camtasia</a>, and it transpires they&#8217;ve a 30 day free, so I thought I&#8217;d give it a go. Well, it is very good. Clearly, there is a lot to the program - much more than I&#8217;ve used - but I was able to get a video recorded showing my stuff in an hour. Not bad when the film itself is 20 minutes long!</p>
<p>It has some really neat features, too, like zooming and panning to where you&#8217;ve clicked, so that if you&#8217;ve only got a small video resolution you can still see the important bits on an activity at 100% zoom.</p>
<p>What I would say is that the documentation and introductory videos do seem to gently suggest that planning what you&#8217;re going to demonstrate might be useful - and they&#8217;re right. I&#8217;d say from my short experience that planning what you&#8217;re going to do is essential. As is a decent mike - my seemed to struggle a bit.</p>
<p>Anyway, would I pay $300 for it? Well, for the company, yes, it&#8217;s a snap. It isn&#8217;t something that a &#8216;home&#8217; user is likely to pay that for, but for business quality screen recordings, I wouldn&#8217;t look any further.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/02/quite-impressed-by-camtasia/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Managed paths and folders interferring in a Virtual Directory</title>
		<link>http://www.novolocus.com/2008/07/01/managed-paths-and-folders-interferring-in-a-virtual-directory/</link>
		<comments>http://www.novolocus.com/2008/07/01/managed-paths-and-folders-interferring-in-a-virtual-directory/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 12:00:14 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
		
		<category><![CDATA[Admin]]></category>

		<category><![CDATA[IIS]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=677</guid>
		<description><![CDATA[I had a call from a colleague today. He&#8217;d created a SharePoint site collection inside an existing and working web-app, using the standard &#8217;sites&#8217; managed path (e.g. http://server/sites/newSiteCollection). It seemed to have created it okay, but if he went to it he got a HTTP 404 - yup, &#8220;Page not found&#8221;.
This seemed a bit weird, [...]]]></description>
			<content:encoded><![CDATA[<p>I had a call from a colleague today. He&#8217;d created a SharePoint site collection inside an existing and working web-app, using the standard &#8217;sites&#8217; managed path (e.g. <em>http://server/sites/newSiteCollection</em>). It seemed to have created it okay, but if he went to it he got a HTTP 404 - yup, &#8220;Page not found&#8221;.</p>
<p>This seemed a bit weird, so I went to see what he&#8217;d done wrong. I looked in Central admin - it showed his site collection as existing, but going to it, I got a 404 too. So I created my own - and after it was create, if I went to it, it 404&#8242;d too.</p>
<p><em>(The examples below use the managed path &#8216;demos&#8217; - I took the screenshot when I was reproducing the problem, having apparently fixed it for the &#8217;sites&#8217; managed path already. Trust me, this happens just the same if the items involved are using the text &#8217;sites&#8217;).</em></p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/06/1-error.png"><img class="alignnone size-medium wp-image-678" title="1-error" src="http://www.novolocus.com/wp-content/uploads/2008/06/1-error-271x300.png" alt="404 Page for the newly created site collection" width="271" height="300" /></a></p>
<p>If you look at the screenshot you&#8217;ll see that I&#8217;m trying to go to the site collection &#8216;vaa&#8217; inside the &#8216;demos&#8217; managed path.</p>
<p>Well, at this point I tried using some other managed paths to create a site collection, and they worked fine - no 404s when you try going to them just after creation. I began to wonder if it was something about this path, so I opened IIS Manager to see if anything was going on.</p>
<p>Inside my virtual directory for my web app, I found a &#8217;sites&#8217; folder (or &#8216;demos&#8217; in this screenshot):</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/06/2-spurious-dir.png"><img class="alignnone size-medium wp-image-679" title="2-spurious-dir" src="http://www.novolocus.com/wp-content/uploads/2008/06/2-spurious-dir-300x194.png" alt="Screenshot of IIS Manager showing spurious directory" width="300" height="194" /></a></p>
<p>That was a bit strange - normally I wouldn&#8217;t expect to see &#8217;sites&#8217; folder. It seemed empty, so I deleted it, and then I could access my new site collection without getting a 404. I then created a folder to interfer with one of my working managed paths (I created a folder called &#8216;demos&#8217;), and suddenly I started getting 404 errors if I tried going to it.</p>
<p>I don&#8217;t know why there was a &#8217;sites&#8217; folder in that virtual directory, but it was definitely causing problems. I guess I won&#8217;t be using a managed path of &#8216;bin&#8217; or &#8216;aspnet_client&#8217; then <img src='http://www.novolocus.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/07/01/managed-paths-and-folders-interferring-in-a-virtual-directory/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
