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

<channel>
	<title>ThePointyHeads.com</title>
	<atom:link href="http://thepointyheads.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://thepointyheads.com</link>
	<description></description>
	<lastBuildDate>Thu, 29 Jul 2010 09:09:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Be careful with SPSite.OpenWeb()</title>
		<link>http://thepointyheads.com/2010/07/be-careful-with-spsite-openweb/</link>
		<comments>http://thepointyheads.com/2010/07/be-careful-with-spsite-openweb/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 09:09:43 +0000</pubDate>
		<dc:creator>ciaranc</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Gotcha]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://thepointyheads.com/2010/07/be-careful-with-spsite-openweb/</guid>
		<description><![CDATA[Sigh. This post explains nicely why i just deleted every web in my whole site collection. Basically OpenWeb() with no parameter passed will return the first valid web in the URL string passed to open the SPSite object! So it kept walking up the hierarchy, returning every level to my recursive delete function. Ah well, [...]]]></description>
			<content:encoded><![CDATA[<p>Sigh.</p>
<p><a href="http://stsadm.blogspot.com/2009/03/why-i-dont-use-openweb.html" target="_blank">This post</a> explains nicely why i just deleted every web in my whole site collection.</p>
<p>Basically OpenWeb() with no parameter passed will return the first valid web in the URL string passed to open the SPSite object! So it kept walking up the hierarchy, returning every level to my recursive delete function.</p>
<p>Ah well, at least it wasn’t production….</p>
]]></content:encoded>
			<wfw:commentRss>http://thepointyheads.com/2010/07/be-careful-with-spsite-openweb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 lays a smackdown on IE6!</title>
		<link>http://thepointyheads.com/2010/07/sharepoint-2010-lays-a-smackdown-on-ie6/</link>
		<comments>http://thepointyheads.com/2010/07/sharepoint-2010-lays-a-smackdown-on-ie6/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 10:00:56 +0000</pubDate>
		<dc:creator>ciaranc</dc:creator>
				<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Compatibility]]></category>
		<category><![CDATA[IE6]]></category>

		<guid isPermaLink="false">http://thepointyheads.com/2010/07/sharepoint-2010-lays-a-smackdown-on-ie6/</guid>
		<description><![CDATA[another reason to love SharePoint 2010 (as if you didn&#8217;t already) &#8211; no support for IE6!! Web developers throughout the land rejoice! The long overdue beginning of the end&#8230;]]></description>
			<content:encoded><![CDATA[<p>another reason to love SharePoint 2010 (as if you didn&#8217;t already) &#8211; no support for IE6!! </p>
<p><a href="http://thepointyheads.com/wp-content/uploads/2010/07/sps2010_ie6.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sps2010_ie6" border="0" alt="sps2010_ie6" src="http://thepointyheads.com/wp-content/uploads/2010/07/sps2010_ie6_thumb.jpg" width="244" height="93" /></a> </p>
<p>Web developers throughout the land rejoice! The long overdue beginning of the end&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://thepointyheads.com/2010/07/sharepoint-2010-lays-a-smackdown-on-ie6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HttpModule &#8211; developing outside the product box</title>
		<link>http://thepointyheads.com/2010/06/httpmodule-developing-outside-the-product-box/</link>
		<comments>http://thepointyheads.com/2010/06/httpmodule-developing-outside-the-product-box/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 16:46:08 +0000</pubDate>
		<dc:creator>ciaranc</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[HTTPModule]]></category>
		<category><![CDATA[SharePoint Learning]]></category>

		<guid isPermaLink="false">http://thepointyheads.com/2010/06/httpmodule-developing-outside-the-product-box/</guid>
		<description><![CDATA[It could just be coincidence that recently i’ve solved 2 tricky SharePoint dev problems using HTTPModules, or it could be a case of once you find a good solution to something, you try and shoehorn apply it to all other problems…. either way, I thought it would be worth going over the examples and why [...]]]></description>
			<content:encoded><![CDATA[<p>It could just be coincidence that recently i’ve solved 2 tricky SharePoint dev problems using HTTPModules, or it could be a case of once you find a good solution to something, you try and <span style="text-decoration: line-through;">shoehorn</span> apply it to all other problems…. either way, I thought it would be worth going over the examples and why this approach is useful to developers who work with ‘product’ apps such as SharePoint.</p>
<p>Quick overview of HTTModule and HTTPHandler can be found <a href="http://msdn.microsoft.com/en-us/library/bb398986.aspx" target="_blank">here</a>.</p>
<h2>The benefits of using HTTPModules</h2>
<p>A HTTPModule works well with 3rd party products as you do not have access to the source code and / or you are not able to change core files. You need some other way of hooking into the page event lifecycle. Of course there are many available ways of doing this already (Event Hooks, SharePoint Event Handlers, etc.) but sometimes these just don’t cut it.</p>
<p>See below for examples.</p>
<h2>Example 1 – Custom Authorization Provider for SharePoint 2010</h2>
<p>I’m working on a project where SharePoint will be a repository for storing wiki &amp; blog sites and a few other web based structures, while the main application itself exists independent of SharePoint. This app has it’s own custom Authentication and Authorization processes which store all user session data in a custom database.</p>
<p>The Authentication piece of this is very interesting too as we are using a custom Claims Provider for SharePoint 2010 but that’s another blog post.</p>
<p>For the Authorization piece, we need a way to intercept each page request to the SharePoint environment and verify that the user has sufficient permissions to access this resource. Obviously, we don&#8217;t want to have to make this webservice call for each page request (or fractions of pages &#8211; some SharePoint pages i have seen can make over 30 separate authorization calls for different page controls on first load!!) so we need a way to verify user access level initially and then cache this for a period.</p>
<p>The initial road i went down here was to produce our own custom ‘AccessDenied.aspx’ page which all users would automatically reach if they attempt to access a resource they do not have permissions to. This worked really well as we could wait for the pipeline to finish processing and intercept the process at the very end when we were sure the auth had failed.</p>
<p>The problem with this is you can’t touch SharePoint default files. MS get very cross on support calls if you dare and tell you to go away until you put the system back the way it was. So i can’t hack into the ‘accessdenied’ page <img src='http://thepointyheads.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>This is where the HTTPModule came in. I initially thought I could jump in at the ‘AuthorizeRequest’ event of every page call so i could provide seamless authorization to the user. But because of the number of times this would be called (not just for pages but for page elements), I was very concerned about the detrimental effect this code might have on overall load times. I settled on combining both earlier ideas -  I can detect when the context URL contains ‘/_layouts/accessdenied.aspx’, insert some custom code for these requests only then redirect if the user passes our auth check!</p>
<h3>Authorization Caching</h3>
<p>The solution to the user auth caching is to add the user to the relevant SharePoint group with access level set, but in tandem, write a secure cookie (encrypted using machine key of server) to the client machine which has a hard expiration of 20 minutes (hard expiration to stop hackers indefinitely extending the life of a sliding session by maintaining an open connection by periodically pinging server).</p>
<h2>Example 2 – Override Core SharePoint JavaScript functions</h2>
<p>The majority of SharePoint’s javascript is called from a file called ‘core.js’ which is included in the MasterPages as a script link. The MS recommended approach is to create a custom Master page and change this link, but what if the page you want to modify is also a core SharePoint file (in this case ‘versions.aspx) and you can’t touch it to change the Master Page link? HTTPModule again! Detect this URL and forward the user on to your version of this page which calls the customised javascript file. Et voila.</p>
<p>Of course it’s never that simple – i had a lot of messing to do with relative URLs to get it to work but the principal is there.</p>
<h2>Downsides to using HTTPModules</h2>
<p>As the HTTPModule code will be called for every request through the page pipeline, poorly designed code can have a massive effect on performance. Think very carefully about what extra processing you are adding before doing it.</p>
]]></content:encoded>
			<wfw:commentRss>http://thepointyheads.com/2010/06/httpmodule-developing-outside-the-product-box/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL querying remote &#8216;Linked Server&#8217; problem &#8211; &#8216;Named Pipes Provider: Could not open a connection to SQL Server&#8217;</title>
		<link>http://thepointyheads.com/2010/04/sql-querying-remote-linked-server-problem-named-pipes-provider-could-not-open-a-connection-to-sql-server/</link>
		<comments>http://thepointyheads.com/2010/04/sql-querying-remote-linked-server-problem-named-pipes-provider-could-not-open-a-connection-to-sql-server/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 15:13:19 +0000</pubDate>
		<dc:creator>ciaranc</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Triggers]]></category>

		<guid isPermaLink="false">http://thepointyheads.com/2010/04/sql-querying-remote-linked-server-problem-named-pipes-provider-could-not-open-a-connection-to-sql-server/</guid>
		<description><![CDATA[Came across this problem today when trying to call a trigger on a remote database. I had added a linked server instance using the following command: EXEC master.dbo.sp_addlinkedserver @server = N&#8217;&#60;remoteserverinstancename&#62;&#8217;, @srvproduct=N&#8217;SQL Server&#8217; This seemed ok – i could connect to the remote master database ok: SELECT COUNT(*) FROM [&#60;remoteserverinstancename&#62;].[master].[sys].[tables] But trying to run a [...]]]></description>
			<content:encoded><![CDATA[<p>Came across this problem today when trying to call a trigger on a remote database.</p>
<p>I had added a linked server instance using the following command:</p>
<p>EXEC master.dbo.sp_addlinkedserver @server = N&#8217;&lt;remoteserverinstancename&gt;&#8217;, @srvproduct=N&#8217;SQL Server&#8217;</p>
<p>This seemed ok – i could connect to the remote master database ok:</p>
<p>SELECT COUNT(*) FROM [&lt;remoteserverinstancename&gt;].[master].[sys].[tables]</p>
<p>But trying to run a query against any other database failed with this error:</p>
<p>Named Pipes Provider: Could not open a connection to SQL Server [53]</p>
<p>The way i finally solved this (none of the swathe of MSDN articles related to this helped me), was to:</p>
<p>1) Create a local SQL user account (Windows accounts don’t seem to work) on the server to connect to, called something like: &#8216;&lt;servername&gt;_linked_server_user&#8217; with a specified password.</p>
<p>2) Grant this user permissions on the database i want to connect to.</p>
<p>3) Update the Linked server connection on the server which runs the query through the GUI; update the security properties to make all connections use this security context as shown:</p>
<p><a href="http://thepointyheads.com/wp-content/uploads/2010/04/linked_server_remote_login.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="linked_server_remote_login" src="http://thepointyheads.com/wp-content/uploads/2010/04/linked_server_remote_login_thumb.jpg" border="0" alt="linked_server_remote_login" width="244" height="221" /></a></p>
<p>Quick test:</p>
<p>Run the query:</p>
<p>‘SELECT top 10 * FROM [&lt;remoteserverinstancename&gt;].[&lt;databaseToConnectTo&gt;].[dbo].[&lt;tableToConnectTo&gt;]’</p>
<p>and see if it works.</p>
]]></content:encoded>
			<wfw:commentRss>http://thepointyheads.com/2010/04/sql-querying-remote-linked-server-problem-named-pipes-provider-could-not-open-a-connection-to-sql-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Branding Part III</title>
		<link>http://thepointyheads.com/2010/03/sharepoint-branding-part-iii/</link>
		<comments>http://thepointyheads.com/2010/03/sharepoint-branding-part-iii/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 11:37:19 +0000</pubDate>
		<dc:creator>Nicky</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[SharePoint Learning]]></category>

		<guid isPermaLink="false">http://thepointyheads.com/?p=331</guid>
		<description><![CDATA[SharePoint branding without accessibility requirements If a SharePoint site has to be branded but is not required to meet any accessibility standard, the next consideration is whether the proposed branding style is radically different from the default look of SharePoint (or any of its associated built-in styles). If the branding is exactly the same except [...]]]></description>
			<content:encoded><![CDATA[<p><strong>SharePoint branding without accessibility requirements</strong></p>
<p>If a SharePoint site has to be branded but is not required to meet any accessibility standard, the next consideration is whether the proposed branding style is radically different from the default look of SharePoint (or any of its associated built-in styles).</p>
<p>If the branding is exactly the same except for a change of colour, a new site theme should be created or an existing theme should be copied and modified.</p>
<p>If there are small structure and colour changes required to a built-in style for a SharePoint, the built-in SharePoint style should be copied and modified.</p>
<p>If the branding of the proposed SharePoint site is quite different from any of the built-in styles, a new branding will have to be created from scratch.</p>
<p>An example of changes that would qualify as regarding a complete build of master pages would be a custom navigation menu.</p>
<p><strong>General considerations when creating a completely new branding for SharePoint</strong></p>
<p>If the design of the site is going to be radically different from built-in SharePoint sites, the best practice is to create static web pages of the site design. This is the case for both accessible and non-accessible site designs.</p>
<p>The static pages should work well across a variety of browsers and pass accessibility testing if this is a requirement for the final SharePoint branding. This task of creating the static web pages could be done by an external party such as a web design agency. There are guidelines that should be followed when creating static pages for a branding for SharePoint that are outside the scope of this document.</p>
<p>Once these static pages have been created, these static pages will need to be cut up into separate ASP.NET files that SharePoint will use as the layout. This is a developer task.</p>
<p>Custom development of code and website files are also required when creating a new SharePoint branding.</p>
<p>Sites with accessibility requirements will require a lot more coding than those without. The development required really depends on the requirements of the site content.</p>
<p><strong>SharePoint Designer</strong></p>
<p>SharePoint designer is a free programme from Microsoft that can be used to customize the appearance of SharePoint whether it is WSS only or MOSS. Although some parts of the designer may be useful such as the workflow wizard, it is not suitable for any significant branding of SharePoint.</p>
<p><strong>Accessibility standards overview</strong></p>
<p>Website accessibility standards are specified by the Web Accessibility Initiative (WAI) which is a sub group of the W3C. The most common accessibility level to aim for is Double-A.</p>
<p>The main goals to achieve Double-A conformance is to produce clean HTML where the layout is controlled by CSS.</p>
<p>Aside from producing reasonably clean HTML, other considerations for accessible sites include providing:</p>
<ul>
<li>alternate text for images</li>
<li>alternate content for media such as flash or navigation that depends on JavaScript</li>
<li>meaningful titles for links on the page</li>
</ul>
<p>Some of the standards for accessibility are the responsibility of the content editor such as providing alternate means of accessing content.</p>
<p>There are programs such as Total Validator which can automatically validate a web page against an accessibility level.</p>
]]></content:encoded>
			<wfw:commentRss>http://thepointyheads.com/2010/03/sharepoint-branding-part-iii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Branding Part II</title>
		<link>http://thepointyheads.com/2010/03/sharepoint-branding-part-ii/</link>
		<comments>http://thepointyheads.com/2010/03/sharepoint-branding-part-ii/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 11:32:00 +0000</pubDate>
		<dc:creator>Nicky</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[SharePoint Learning]]></category>

		<guid isPermaLink="false">http://thepointyheads.com/?p=326</guid>
		<description><![CDATA[Considerations when branding MOSS SharePoint sites With MOSS 2007 the following can be achieved: Colour scheme changes Major layout and appearance changes, making the site unrecognisable as a SharePoint Sites that conform to accessibility guidelines (though not without considerable effort) The first consideration when branding a MOSS sites is whether the site has to conform [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Considerations when branding MOSS SharePoint sites</strong></p>
<p>With MOSS 2007 the following can be achieved:</p>
<ul>
<li>Colour scheme changes</li>
<li>Major layout and appearance changes, making the site unrecognisable as a SharePoint</li>
<li>Sites that conform to accessibility guidelines (though not without considerable effort)</li>
</ul>
<p>The first consideration when branding a MOSS sites is whether the site has to conform to accessibility guidelines.</p>
<p>By default, SharePoint does not come close to conforming to accessibility guidelines but it can be re-worked with a variety of techniques to produce accessible content with (at least) 3 caveats.</p>
<p>These caveats are:</p>
<ul>
<li>Accessibility can only be achieved when a user is accessing a site in a read-only style mode</li>
<li>Many advanced features of SharePoint cannot be used. These include:
<ul>
<li>Almost all web parts</li>
<li>Web part zones (a type of layout that allows flexibility in placement of modules)</li>
<li>Built-in brandings and themes that come with SharePoint</li>
<li>The default content editor</li>
</ul>
</li>
<li>It takes lots of work! Custom development is almost certainly required.</li>
</ul>
<p>The NSU Safe network site is an example of a SharePoint site that conforms to Double-A compliancy.</p>
<p><a href="http://thepointyheads.com/wp-content/uploads/2010/03/clip_image0021.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" src="http://thepointyheads.com/wp-content/uploads/2010/03/clip_image002_thumb1.jpg" border="0" alt="clip_image002" width="415" height="327" /></a></p>
<p>There are 2 notable frameworks that have been created to assist with making SharePoint accessible.</p>
<p><strong>The Accessibility Kit for SharePoint (AKS)</strong></p>
<p>There is an accessibility framework produced by a HiSoft in association with Microsoft. The framework is currently at version 2.0 at this time.</p>
<p>The kit includes more accessible versions of the built-in SharePoint themes and layouts though using any of these is a token gesture towards accessibility.</p>
<p>From investigation, a lot of development is still required to create an accessible site and the AKS does not provide much help towards this.</p>
<p><strong>The Alternative Rendering Framework (ARF)</strong></p>
<p>ARF is an open source framework to assist with creating accessible SharePoint sites. One of the core concepts of the framework is to keep using SharePoint lists and document libraries as the data store for a site but providing an alternative method for customizing the display of this data.</p>
<p>The ARF has proved very useful for creating accessible sites is used in the NSU Safe Network site.</p>
]]></content:encoded>
			<wfw:commentRss>http://thepointyheads.com/2010/03/sharepoint-branding-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Branding Part I</title>
		<link>http://thepointyheads.com/2010/03/sharepoint-branding-part-i/</link>
		<comments>http://thepointyheads.com/2010/03/sharepoint-branding-part-i/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 11:28:13 +0000</pubDate>
		<dc:creator>Nicky</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Administrator]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[SharePoint Learning]]></category>

		<guid isPermaLink="false">http://thepointyheads.com/?p=320</guid>
		<description><![CDATA[This article is only relevant for WSS 3.0 and MOSS 2007. When there is a requirement to customise the appearance of a SharePoint site, the first consideration is the version being used. Branding WSS sites If the SharePoint version is WSS (free to install if you have Windows Server 2003), colour and image changes are [...]]]></description>
			<content:encoded><![CDATA[<p>This article is only relevant for WSS 3.0 and MOSS 2007.</p>
<p>When there is a requirement to customise the appearance of a SharePoint site, the first consideration is the version being used.</p>
<p><strong>Branding WSS sites</strong></p>
<p>If the SharePoint version is WSS (free to install if you have Windows Server 2003), colour and image changes are possible along with minor layout changes. It is not possible to use WSS to produce an accessible SharePoint site.</p>
<p>The default theme of SharePoint looks like the following</p>
<p><a href="http://thepointyheads.com/wp-content/uploads/2010/03/clip_image002.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" src="http://thepointyheads.com/wp-content/uploads/2010/03/clip_image002_thumb.jpg" border="0" alt="clip_image002" width="465" height="309" /></a></p>
<p>Other built-in themes that have different colours and images only are available</p>
<p><a href="http://thepointyheads.com/wp-content/uploads/2010/03/clip_image004.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image004" src="http://thepointyheads.com/wp-content/uploads/2010/03/clip_image004_thumb.jpg" border="0" alt="clip_image004" width="470" height="365" /></a></p>
<p>Microsoft released 10 new themes for SharePoint in March 2009 and one of these could be used. Again, the structure of the site is the same and only colour and images have changed.</p>
<p><a href="http://thepointyheads.com/wp-content/uploads/2010/03/clip_image006.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image006" src="http://thepointyheads.com/wp-content/uploads/2010/03/clip_image006_thumb.jpg" border="0" alt="clip_image006" width="473" height="307" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://thepointyheads.com/2010/03/sharepoint-branding-part-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Ignite Training, cont&#8217;d.</title>
		<link>http://thepointyheads.com/2010/01/sharepoint-2010-ignite-training-contd/</link>
		<comments>http://thepointyheads.com/2010/01/sharepoint-2010-ignite-training-contd/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 09:50:58 +0000</pubDate>
		<dc:creator>Davey</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://thepointyheads.com/?p=311</guid>
		<description><![CDATA[Below are the rest of my observations on SharePoint 2010. Apologies for the delay in publishing these, I’ve been running a .NET training course internally in work. Team sites now have a pages library Wiki linking is built into pages. You can now wiki link to pages, lists, items and docs Silverlight is built-in to [...]]]></description>
			<content:encoded><![CDATA[<p>Below are the rest of my observations on SharePoint 2010. Apologies for  the delay in publishing these, I’ve been running a .NET training course internally in work.</p>
<ul>
<li>Team sites now have a pages library</li>
<li>Wiki linking is built into pages. You can now wiki link to pages, lists,  items and docs</li>
<li>Silverlight is built-in to SharePoint’s ‘Create’ dialog. Apparently SL can  be made accessible. Not sure if this is the case with this Silverlight dialog.  Need to check accessibility</li>
<li>Pages check for changes every minute and auto save if you have made any.</li>
<li>Built-in Rich Text Editor has multiple levels of undo</li>
<li>Versioning is on by default.</li>
<li>New master pages exist. v4 is the latest. Changes here are carried through  to site settings pages. Also have a minimal (no ribbon), simple (for error  pages) and default (legacy)</li>
<li>Accessibility is covered by everything being AA and XHTML. Not sure if this  applies to central admin though.</li>
<li>Text editors all render to XHTML</li>
<li>You can add buttons to the SP Ribbon. I tried this and it’s a nightmare….</li>
<li>You can associate more forms with lists, rather than New, Edit &amp;  Display. This includes InfoPath forms. Done through SPD</li>
<li>XLSTViewWebPart is used for all list data now. More efficient and custom XSL  can be supplied.</li>
<li>Ajax settings can be configured on lists, i.e. refresh interval, manual  refresh button, enable/disable Ajax etc.</li>
<li>Lists can support inline editing (enabled in SPD) and a rating column (think  star’s *****) , although InfoPath doesn’t support the latter in it’s designer.</li>
<li>2 versions of InfoPath are being banded about, a designer and a ‘Filler’</li>
<li>A new post processing synchronous event now exists for lists that can be  used to give feedback to a user after an item has been added.</li>
<li>Cancelled events can redirect to a custom page that displays within a SP  Modal Dialog</li>
<li>Event submitters can be determined. In WSS sometimes the event owner would  be assigned to a workflow/system account. MSF holds details on who raised what  event.</li>
<li>Built-in SP Explorer doesn’t expose bound list events. This is poor. No  visibility if a list has 34 events already bound to it.</li>
<li>Lists now support referential integrity (master detail) and cascading  deletes.</li>
<li>List joins can be made through queries (join up to 6 lists). Limit of 800kb  for return results</li>
<li>Projected fields now exist within lists, i.e. on a child list display a  field from the parent, i.e. parent:company name</li>
<li>MSF (Microsoft SharePoint Foundation) now supports 50m list items</li>
<li>Throttling available from central admin for list queries. Can be time based  (i.e. only allow this quota between 9-5pm). Settings available to allow/deny  overrides via the object model. Administrator has a lot of control on query  results.</li>
<li>Unique column constraints available on column types. Company name can be  made unique. Requires indexing and depends on SQL Collation</li>
<li>Linq To SharePoint removes CAML Pain, but you need to generate SP Class  Entities via a tool in the 14 hive called SP Metal. Basically point SP Metal at  your SP Site and it generates a load of strongly typed C# classes.</li>
<li>Lists are still stored as STP files, despite site templates being converted  to WSP’s.</li>
<li>Columns now have validation. Syntax similar to Excel, i.e.  [CompanyEmployees] &gt;= 50</li>
</ul>
<p><strong>Client Object Model</strong></p>
<ul>
<li>Consistent interface across .NET, Silverlight, Javascript. Same (to a  degree) method names. Obviously some differences in type support, i.e. JS’s NAN</li>
<li>‘Client Context’ used to batch operations</li>
<li>All communications go through a client.svc WCF Service</li>
<li>Requests appear to be sent as XML, responses as JSON</li>
<li>New Silverlight webpart. XAP files deployed to webparts folder. XAP file is  simple a zip for cross platform operation</li>
<li>LINQ To SP not provided within Silverlight. ADO.NET Data services used  instead</li>
<li>Uploading an office theme for use in SP2010 doesnt work in this beta.</li>
<li>SharePoint ‘Web application service’ service under central admin is used to  sync your WFE servers. It’s dangerous though because it starts deleting your IIS  files when you stop it. It will recreate them when restarting but any web.config  changes etc you’ve made are gone</li>
</ul>
<p><strong>Workflows</strong></p>
<ul>
<li>Workflows can now run against a site &amp; list items. Event handlers needed  to initialise</li>
<li>Workflows can listen to notifications from external systems before resuming  excution. Uses EDE (external data exchange). Long winded and complicated process</li>
<li>Workflows can now be added &amp; deployed via the new Feature packager</li>
<li>Workflows can be created in Visio, exported to SPD and then again brought  into VS2010. You can move between Visio &amp; SPD easy enough but it seems that  when it enters VS2010 it can’t be exported again to the others</li>
<li>No version control in SPD other than SP2010’s list version control.</li>
<li>New workflow events (started, completed)</li>
<li>New visio web plugin displays visually the workflow path. It’s ok. Doesnt  center workflow properly on load. Bit like page viewer web part</li>
<li>SSP is gone, replaced by Service Providers. These can be load balanced &amp;  moved across servers as required.</li>
<li>New Word automation service can be used to convert docs to PDF, Word 2003  etc. Word Open XML SDK intended for doc manipulation. Will still need Aspose.Net  for Word 2003 docs</li>
<li>Developers can create their own Service Providers. Looks reasonably  complicated. Specific usage scenarios, i.e. intense calculations etc</li>
</ul>
<p><strong>BCS</strong></p>
<ul>
<li>BCS is the new BDC</li>
<li>Entities are now ECT’s, External Content Types</li>
<li>BCS is now supports read/write to external systems</li>
<li>SPD used quite well to create connections and CRUD screens</li>
<li>SP2010 now has external lists that can expose data from external systems.  Appears that workflows now support for these list types</li>
<li>SSO details now stored in new Secure Store Service</li>
<li>Groove (SP Workspace) seemed decent enough. Change I made in Groove went  back to SP2010 and then on out to external system (SQL DB)</li>
</ul>
<p><strong>ECM</strong></p>
<ul>
<li>Folders now supported in Page Libraries</li>
<li>new content deployment option ’snapshot’. Time based snapshot sent between  servers. Requires Enterprise SQL ‘05 or ‘08.</li>
<li>New web analytics &amp; reports. Looked ok but definitely not google  contenders. Didn’t appear to be a means to export</li>
<li>End users can now tag metadata to content themselves in addition to standard  method<br />
Record management now possible ‘outside’ record center</li>
<li>New ‘Unique Document Id’ service. Every document given a unique ID. Stays  with it even if moved. Apparently has limited configuration options. This ID  when used in conjunction with a specific URL (by sticking the ID on the query  string) will take people to the document regardless if it is moved within the  same document library or across libraries within a site collection</li>
<li>Hold actions no longer tied to record center</li>
<li>New document set. Content type composed on sub content types. ‘Document Set’  feature needed to be activated for it to work.</li>
<li>Doc sets have versions and workflows can be run against them and  constituents. Possible use is WF to check that all docs have been completed  before moving to next stage.</li>
</ul>
<p><strong>Search</strong></p>
<ul>
<li>3 Levels of Search for SP Foundation Server
<ul>
<li>
<ul>
<li>Basic – Search Server Express 2010</li>
<li>Intermediate – SharePoint search 2010 (Index outside SP &amp; Filestores)</li>
<li>Advanced – FAST can accept ‘push’ updates from code</li>
</ul>
</li>
</ul>
</li>
<li>JDBC Support now included</li>
<li>SP2010 has search connectors for Exchange, Notes, Documentum, FileNet,  Opentext &amp; custom .NET connector</li>
<li>Support for search attachments</li>
<li>Search web parts now unsealed. Can be overridden.</li>
<li>New ability to override a query before its executed and results before  display to users</li>
<li>Search can have multiple levels of ranking models. Can be manipulated via  PowerShell</li>
</ul>
<p><strong>BI</strong></p>
<ul>
<li>BI Includes status indicators (as before, i.e. red amber green), chart web  part, Performance Point Services, Excel Services, BI Search, Visio Services  (Visual representation of KPI’s in Visio)</li>
<li>Reporting Services doesn’t ship with 2010. Separate download</li>
<li>BI Search adds Excel &amp; Reporting services to search. Search for  ‘delivery’ &amp; spreadsheets with query are returned &amp; filtered on query</li>
<li>BI Centre template – Starting point with BI Portals</li>
<li>New server product ‘Gemini’ provides in memory olap manipulation. Seamless  for developers, no need to touch it.</li>
<li>Little change is PerformancePoint Services</li>
<li>Office Excel Web app looks decent.</li>
</ul>
<p><strong>Sandbox Solutions</strong></p>
<ul>
<li>Site collection owners have power to deploy WSP’s to the sites sandbox,  which is called ’solution gallery’<br />
Sandbox basically uses a cut down SP2010  Object model.</li>
<li>Code executes in a separate process ‘Microsoft SharePoint Foundation User  Code Service’</li>
<li>A validation framework exists that can scan &amp; validate wsp’s that are  uploaded to the sandbox. Validators can revoke permission for the wsp to execute</li>
<li>Sandboxed solutions are isolated to their own site collection.<br />
Two  versions of the Microsoft.SharePoint.dll exist. The full version and the subset.</li>
<li>When you create a new VS2010 project, you’re prompted if you want full trust  of sandbox. If you select sandbox it ’still’ uses the full dll. No compile time  checking that you should be using a restricted sharepoint dll.</li>
<li>Sandbox apps use quotas. These are configurable and cover a varied number of  scenarios such as process memory, db calls etc. For example, 20 db calls = 1  resource point. It you hit the max quote your web part/code is halted by  SharePoint</li>
<li>A timer job resets quotas at the end of the day.</li>
<li>Doesn’t appear to be a means to determine what caused your quota to max out</li>
<li>Quotas set via central admin or powershell</li>
<li>I feel that setting quotas could be a dark art. Users * web parts *  queries/cpu executions etc</li>
<li>No means to promote from sandbox to live. Would require a removal &amp;  redeployment</li>
<li>At runtime, sandbox wsps are retrieved from the solution gallery. Any  required dll’s are extracted to a temp folder, loaded into memory and  immediately deleted.</li>
<li>It doesn’t look like you can debug sandboxed apps. There’s A) no place for  PDB files and B) the user code service is a SP Service under central admin. No  way to attach to it as far as I can see.</li>
<li>Sandboxed apps can be load balanced</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://thepointyheads.com/2010/01/sharepoint-2010-ignite-training-contd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Way to find a SharePoint field&#8217;s internal name</title>
		<link>http://thepointyheads.com/2010/01/quick-way-to-find-a-sharepoint-fields-internal-name/</link>
		<comments>http://thepointyheads.com/2010/01/quick-way-to-find-a-sharepoint-fields-internal-name/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 16:39:23 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://thepointyheads.com/2010/01/quick-way-to-find-a-sharepoint-fields-internal-name/</guid>
		<description><![CDATA[While working on the Timer job I talked about in my previous post, I also had a problem retrieving the value of a particular field. I needed to get the value from a field called ‘Company’, but when I tried to get the value for Company through my code it brought back the value for [...]]]></description>
			<content:encoded><![CDATA[<p>While working on the Timer job I talked about in my previous post, I also had a problem retrieving the value of a particular field.</p>
<p>I needed to get the value from a field called ‘Company’, but when I tried to get the value for Company through my code it brought back the value for the field ‘Position’.</p>
<p>In my case, I found out this was because these where not the original field names. In SharePoint a field has an <strong>internal name. </strong>This internal name of a field is set to the fields title when it is originally created and never changes.</p>
<p>There is an easy way to find a field’s internal name without resorting to code. If you sort a list by a field, the url will contain the fields internal name as the ‘SortField’ Parameter.</p>
<p>When I sorted the list by ‘Company’ I found it had an internal name of ‘Linktitle’:</p>
<p>http://…/All%20Open%20Items.aspx?<strong>SortField=LinkTitle</strong>&amp;SortDir=Asc</p>
<p>and when I sorted by Position:</p>
<p>http://…/All%20Open%20Items.aspx?<strong>SortField=Company</strong>&amp;SortDir=Asc</p>
<p>This explains why the code was returning the Position and not the Company.</p>
<p>I changed the code to pick up the value of field ‘LinkTitle’ and everything now works fine.</p>
]]></content:encoded>
			<wfw:commentRss>http://thepointyheads.com/2010/01/quick-way-to-find-a-sharepoint-fields-internal-name/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Timer job running twice / multiple times</title>
		<link>http://thepointyheads.com/2010/01/timer-job-running-twice-multiple-times/</link>
		<comments>http://thepointyheads.com/2010/01/timer-job-running-twice-multiple-times/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 16:12:54 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://thepointyheads.com/2010/01/timer-job-running-twice-multiple-times/</guid>
		<description><![CDATA[Just a tip for anyone who may be working on a SharePoint Timer job, this could save you a lot of hassle and head scratching… I have been recently working on a simple enough Timer job. The timer job runs once a day and checks a date field for every item within a list. if [...]]]></description>
			<content:encoded><![CDATA[<p>Just a tip for anyone who may be working on a SharePoint Timer job, this could save you a lot of hassle and head scratching…</p>
<p>I have been recently working on a simple enough Timer job. The timer job runs once a day and checks a date field for every item within a list.</p>
<p>if the checked items date is the same as the current date, a notification email is sent to the user who owns / created the item. As I said, simple.</p>
<p>Unfortunately I found out the Timer job runs twice in quick succession instead of once. I thought I must have activated it twice in the code, but after much debugging I found that It had only been deployed and activated once.</p>
<p>Eventually I found that the problem was being caused by a property called <font color="#0080c0">SPJobLockType.</font></p>
<p>This property defines how the instance of a timer job runs.</p>
<p>The value set in the timer job was <font color="#0080c0">SPJobLockType</font>.ContentDatabase. This value causes the timer job to be run once for every content database on the farm. We have 2 content databases on the farm, therefore the job was running twice.</p>
<p>I changed the value to <font color="#0080c0">SPJobLockType</font>.Job. This locks the job and doesn’t allow it to run more than once on a server and solved my problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://thepointyheads.com/2010/01/timer-job-running-twice-multiple-times/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.915 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-07-29 14:50:10 -->
