<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>SharePoint 2010</title>
  <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/" />
  <link rel="self" href="http://www.sharepoint2010blog.nl/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2010-07-20T16:11:32.541125+02:00</updated>
  <author>
    <name>Tam Tam</name>
  </author>
  <subtitle>SharePoint and Collaboration Stuff vNext</subtitle>
  <id>http://www.sharepoint2010blog.nl/</id>
  <generator uri="http://dasblog.info/" version="2.3.9074.18820">DasBlog</generator>
  <entry>
    <title>Moving a DocumentSet through code - pt1</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/07/20/Moving+A+DocumentSet+Through+Code+Pt1.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,2e1ddecd-aa0a-4b0c-91a5-f5e43ce032cb.aspx</id>
    <published>2010-07-20T16:09:49.6505+02:00</published>
    <updated>2010-07-20T16:11:32.541125+02:00</updated>
    <category term="Document sets" label="Document sets" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,DocumentSets.aspx" />
    <category term="PowerShell" label="PowerShell" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,PowerShell.aspx" />
    <category term="SharePoint 2010" label="SharePoint 2010" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,SharePoint2010.aspx" />
    <author>
      <name>Albert-Jan Schot</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of the new features in SharePoint 2010 are the so called DocumentSets, a sort
of folders-like option that allows you to manage multiple documents as they where
a set, setting global metadata or capturing versions and downloading multiple documents.
Since those options sounds pretty cool I recon it’s going to be a much used option
within SharePoint 2010, however once you created a DocumentSet moving it around can
be pretty hard, by default there are a few ways to move around your environment: 
</p>
        <ul>
          <li>
You can move items around in the Explorer view of your libraries, and doing so with
a DocumentSet results in the copying of a folder, losing all metadata for your DocumentSet
(and as you might have noticed once you set the ContentType back to DocumentSet it
still shows as a folder). 
</li>
          <li>
On the other hand you can use the “send-to” option you get, but that will results
in the sending of a ZIP package, still losing the information as it seems.  
</li>
          <li>
The only way by default moving around works, is by using the Site Content and Structure. 
</li>
        </ul>
        <p>
So we decided to check if we could manage it through code. In this first part there
will be some PowerShell examples on how to move a DocumentSet and where you might
find yourself trying to do so, in the next part there will be some focus on how to
move the DocumentSet through the ribbon, including all the metadata of it. 
</p>
        <p>
According to <a href="http://technet.microsoft.com/en-us/library/ff603637.aspx" target="_blank">TechNet</a> a
DocumentSet is a special type of folder, and checking out <a href="http://msdn.microsoft.com/en-us/library/microsoft.office.documentmanagement.documentsets.documentset_members.aspx" target="_blank">MSDN</a> shows
that the the DocumentSet object does <u>not</u> have any options to move it to another
location. The export function results in a packaged file (zip), but importing is a
crime, and so far i didn't get that to work. 
</p>
        <pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 560px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  1: $moveFromUrl = "<span style="color: #8b0000">aSiteUrl</span>" </pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  2: $newfolder = $site.OpenWeb().GetFolder("<span style="color: #8b0000">aFolderUrl</span>") </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  3: 
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  4: $movefromList=$site.OpenWeb().GetList($moveFromUrl)
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  5: 
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  6: $docSet = [Microsoft.Office.DocumentManagement.DocumentSets.DocumentSet]
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  7:   ::GetDocumentSet($newfolder)  
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  8: $compressedFile = $x.Export()
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  9: 
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 10: $compressedFile.GetType() 
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 11: 
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 12: $docsetID = [Microsoft.SharePoint.SPBuiltInContentTypeId]::DocumentSet
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 13: $targetFolder = $movefromList.RootFolder
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 14: $targetFolder.GetType()
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 15: $user = $site.OpenWeb().EnsureUser("<span style="color: #8b0000">aUser</span>") </pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 16: $user.GetType()
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 17: </pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 18: $properties = new-object System.Collections.Hashtable
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 19: $properties.Add("<span style="color: #8b0000">DocumentSetDescription</span>",
"<span style="color: #8b0000">Description</span>") </pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 20: 
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 21: $z = [Microsoft.Office.DocumentManagement.DocumentSets.DocumentSet]
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 22:   ::Import($compressedFile, "<span style="color: #8b0000">DocsetRestore</span>",
$targetFolder, </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 23:   $docsetID, $properties, $user);
</pre>
        </pre>
        <p>
Results in a nice error telling me nothing. 
</p>
        <pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 560px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  1: IsPublic IsSerial Name                 BaseType                                                                           
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  2: -------- -------- ----                 --------                                                                           
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  3: True     True     Byte[]               System.Array                                                                       
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  4: True     False    SPFolder             System.Object                                                                      
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  5: True     False    SPUser               Microsoft.SharePoint.SPPrincipal                                                   
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  6: 
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  7: Exception calling "<span style="color: #8b0000">Import</span>"
with "<span style="color: #8b0000">6</span>" argument(s): "<span style="color: #8b0000">DocID:
Site prefix not set.</span>" </pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  8: At :line:94 <span style="color: #0000ff">char</span>:76 </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  9: + $z = [Microsoft.Office.DocumentManagement.DocumentSets.DocumentSet]
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 10:   ::Import &lt;&lt;&lt;&lt; ($compressedFile, "<span style="color: #8b0000">Docset1Backup</span>",
$targetFolder, </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 11:   $docsetID, $properties, $user);
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 12: </pre>
        </pre>
        <p>
 
</p>
        <p>
So I came up with a new approach, it is a Folder with a ContentType set to it, so
I used the folder ‘MoveTo’ and updated the ContentType of the folder back to a ‘DocumentSet’,
that lead to the same error I would do that through the browser, it still was a folder,
without the DocumentSet welcome page set to it. After some debugging I found out that
there was a field that differs between a folder and a DocumentSet: HTML File Type.
So i made some changes and was able to move a DocumentSet with PowerShell. Below you
can find the code, where you can see how we update the folder,in pt2 there will be
some more info on how you can do so with a nice custom ribbon command, and also move
all custom fields. 
</p>
        <pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 560px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  1: param([<span style="color: #0000ff">string</span>]$moveFromUrl,
[<span style="color: #0000ff">string</span>]$moveToUrl, [<span style="color: #0000ff">string</span>]$moveItem) </pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  2: 
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  3: [<span style="color: #0000ff">void</span>][System.Reflection.Assembly]::LoadWithPartialName("<span style="color: #8b0000">Microsoft.SharePoint</span>") </pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  4: 
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  5: ##########################################################################
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  6: ###                                                                    ###
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  7: ###                            Functions                               ###
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  8: ###                                                                    ###
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px">  9: ##########################################################################
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 10: 
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 11: function checkItemToMove ([Microsoft.SharePoint.SPList]$movefromList, [Microsoft.SharePoint.SPList]$movetoList, [<span style="color: #0000ff">string</span>]$moveItem) </pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 12: {
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 13:   $docsetID = [Microsoft.SharePoint.SPBuiltInContentTypeId]::DocumentSet
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 14:   [Microsoft.SharePoint.SPFolder]$docsetToMove = $<span style="color: #0000ff">null</span></pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 15:   
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 16:   <span style="color: #0000ff">foreach</span>($docset <span style="color: #0000ff">in</span> $movefromList.Folders) </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 17:   {  
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 18:     <span style="color: #0000ff">if</span>($docset.ContentType.ID.ToString().StartsWith($docsetID.ToString())
-and $docset.Name -eq $moveItem) </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 19:     {
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 20:       $docsetToMove = $docset.Folder
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 21:       $docsetContentTypeId = $docset.ContentType.Parent.Id
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 22:       <span style="color: #0000ff">break</span>; </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 23:     }       
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 24:   }
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 25:   
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 26:   <span style="color: #0000ff">if</span>($docsetToMove
-ne $<span style="color: #0000ff">null</span> -and $docsetContentTypeId -ne $<span style="color: #0000ff">null</span>) </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 27:   {
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 28:     Write-Host -ForegroundColor Green "<span style="color: #8b0000">Found
a docset: </span>" $docsetToMove.Name "<span style="color: #8b0000"> Lets
move it</span>" </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 29:     moveDocSet $docsetToMove $movetoList $docsetContentTypeId
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 30:   }
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 31:   <span style="color: #0000ff">else</span> {
Write-Host -ForegroundColor Red "<span style="color: #8b0000">No document set
of desired name found:</span>" $moveItem } </pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 32: }
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 33: 
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 34: function moveDocSet ([Microsoft.SharePoint.SPFolder]$docset, [Microsoft.SharePoint.SPList]$movetoList, [<span style="color: #0000ff">string</span>]$docsetContentTypeId) </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 35: {
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 36:   $moveurl = $movetoList.RootFolder.ToString() + "<span style="color: #8b0000">/</span>"
+ $docset.Name </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 37:   
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 38:   $docset.MoveTo($moveurl)
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 39:   
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 40:   #retrieve it at <span style="color: #0000ff">new</span> location </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 41:   [Microsoft.SharePoint.SPFolder]$newDocset=$site.OpenWeb().GetFolder($moveurl)
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 42:   <span style="color: #0000ff">if</span>($newDocset.Exists) </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 43:   {
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 44:     #update it so it <span style="color: #0000ff">is</span> a
doc <span style="color: #0000ff">set</span> and <span style="color: #0000ff">set</span> CT
right </pre>
          <pre style="background-color: #ffff00; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 45:     $newDocset.Item["<span style="color: #8b0000">ContentTypeId</span>"]
= $docsetContentTypeId </pre>
          <pre style="background-color: #ffff00; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 46:     $newDocset.Item["<span style="color: #8b0000">HTML
File Type</span>"] = "<span style="color: #8b0000">SharePoint.DocumentSet</span>" </pre>
          <pre style="background-color: #ffff00; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 47:     #TODO update all custom fields .. 
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 48:     $newDocset.Item.Update()
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 49:   
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 50:     Write-Host -ForegroundColor Green "<span style="color: #8b0000"> Docset
moved succesfully ... parteh </span>" </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 51:   }
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 52:   <span style="color: #0000ff">else</span> {Write-Host
-ForegroundColor Red "<span style="color: #8b0000"> Failed moving the docset
or setting ... </span>"} </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 53: }
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 54: 
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 55: ##########################################################################
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 56: ###                                                                    ###
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 57: ###                           /Functions                               ###
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 58: ###                                                                    ###
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 59: ##########################################################################
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 60: 
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 61: Write-Host "<span style="color: #8b0000"></span>" </pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 62: Write-Host -ForegroundColor Green "<span style="color: #8b0000">Move
DocSet Script v1.0 - Albert-Jan Schot </span>" </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 63: Write-Host "<span style="color: #8b0000"></span>" </pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 64: 
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 65: <span style="color: #0000ff">if</span>($moveFromUrl
-eq $<span style="color: #0000ff">null</span> -or $moveFromUrl -eq "<span style="color: #8b0000"></span>")
{Write-Host -ForegroundColor Red "<span style="color: #8b0000">No folder to move
from</span>"; Exit} </pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 66: <span style="color: #0000ff">if</span>($moveToUrl
-eq $<span style="color: #0000ff">null</span> -or $moveToUrl -eq "<span style="color: #8b0000"></span>")
{Write-Host -ForegroundColor Red "<span style="color: #8b0000">No folder to move
to</span>"; Exit} </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 67: <span style="color: #0000ff">if</span>($moveItem
-eq $<span style="color: #0000ff">null</span> -or $moveItem -eq "<span style="color: #8b0000"></span>")
{Write-Host -ForegroundColor Red "<span style="color: #8b0000">No DocumentSet
name set</span>"; Exit} </pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 68: 
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 69: #Retrieves the desired objects
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 70: $site=<span style="color: #0000ff">new</span>-<span style="color: #0000ff">object</span> Microsoft.SharePoint.SPSite($moveFromUrl) </pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 71: 
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 72: [Microsoft.SharePoint.SPList]$movefromList=$site.OpenWeb().GetList($moveFromUrl)
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 73: [Microsoft.SharePoint.SPList]$movetoList=$site.OpenWeb().GetList($moveToUrl)
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 74: 
</pre>
          <pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 75: #Move a docset
</pre>
          <pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px"> 76: checkItemToMove $movefromList $movetoList $moveItem </pre>
        </pre>
        <p>
 
</p>
        <p>
There is one remark, if you try to move a DocumentSet this way to a library that does
not have all the ContentTypes available that are used in the DocumentSet you will
have a problem with the Version. If all ContentTypes are available it will take the
version history of the DocumentSet and move it, if the ContentTypes aren’t available
it will try to copy the version history, but if you try to display it, it will fail,
giving a field not present error, so keep that in mind. 
</p>
        <p>
(Crosspost of: <a title="http://blogs.tamtam.nl/appie/2010/07/20/Moving+A+DocumentSet+Through+Code+Pt1.aspx" href="http://blogs.tamtam.nl/appie/2010/07/20/Moving+A+DocumentSet+Through+Code+Pt1.aspx">http://blogs.tamtam.nl/appie/2010/07/20/Moving+A+DocumentSet+Through+Code+Pt1.aspx</a> )
</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>Default page-layout for new pages</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/07/20/Default+Pagelayout+For+New+Pages.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,999a631e-a5a1-4748-811a-b0bf22b98de7.aspx</id>
    <published>2010-07-20T07:07:00+02:00</published>
    <updated>2010-07-20T09:14:44.088+02:00</updated>
    <category term="Page-layouts" label="Page-layouts" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,Pagelayouts.aspx" />
    <category term="SharePoint 2010" label="SharePoint 2010" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,SharePoint2010.aspx" />
    <author>
      <name>Jaap Mollema</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Within 2010 the ‘create page’-action always results in the same default page-layout.
SharePoint 2010 allows you to determine which page-layout should be used. When the
publishing feature is enabled, the user is able to choose which page-layouts and site-templates
can be used. Next to this, the ‘New Page Default Settings’ allows you to choose your
page-layout.
</p>
        <p>
          <a href="http://www.sharepoint2010blog.nl/content/binary/WindowsLiveWriter/Defaultpagelayoutfornewpages_8203/Settings.jpg">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Settings" border="0" alt="Settings" src="http://www.sharepoint2010blog.nl/content/binary/WindowsLiveWriter/Defaultpagelayoutfornewpages_8203/Settings_thumb.jpg" width="502" height="178" />
          </a>
        </p>
        <p>
        </p>
        <p>
Note that this does not influence the default page-layout for site templates.
</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>Claims Based authentication and the PublishingCache</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/07/07/Claims+Based+Authentication+And+The+PublishingCache.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,ca6e5bf5-9074-499f-b647-1e4015245013.aspx</id>
    <published>2010-07-07T14:15:00+02:00</published>
    <updated>2010-07-07T16:16:16.088+02:00</updated>
    <author>
      <name>Stef van Hooijdonk</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you are using Claims Based Authentication on your WebApplication then the Publishing
Cache doesn't work properly.
</p>
        <p>
Have a look into your Developer Dashboard to see what is going on:
</p>
        <p>
          <a href="http://stefvanhooijdonkblog.files.wordpress.com/2010/07/so2010-dev-dashboard-publishing-cache.png">
            <img class="alignnone size-full wp-image-578" title="so2010-dev-dashboard-publishing-cache" alt="" src="http://stefvanhooijdonkblog.files.wordpress.com/2010/07/so2010-dev-dashboard-publishing-cache.png" width="378" height="225" />
          </a>
          <a href="http://stefvanhooijdonkblog.files.wordpress.com/2010/07/so2010-dev-dashboard-publishing-cache.png">
          </a>
        </p>
        <p>
The warning and critical error are:
</p>
        <ul>
          <li>
7362 - Warning Publishing Cache 
</li>
          <li>
7363 - Critical Publishing Cache 
</li>
        </ul>
        <p>
Why is this? Because with Claims Based Authentication the Cache account cannot access
the Content Databases.
</p>
        <p>
The <a href="http://technet.microsoft.com/en-us/library/ff758656.aspx" target="_blank">solution</a> is
to provide your SPWebApplication with two settings (Properties):
</p>
        <ul>
          <li>
portalsuperuseraccount 
</li>
          <li>
portalsuperreaderaccount 
</li>
        </ul>
        <p>
If you are lazy, like me, you probably want to automate this into a PowerShell script:
</p>
        <p>
Update 6 juli 2010: This script sets the default managed account as the portalsuperuseraccount
and portalsuperreaderaccount. In a production scenario this will work, but it is wiser
to use a read only account. Give this account Full Read permission through a Web Application
Policy, follow this <a href="http://technet.microsoft.com/en-us/library/ff758656.aspx" target="_blank">step-by-step-guide</a>.
</p>
        <pre style="background-color: blue; color: white; overflow: auto">write-host ""
write-host -f White "Configure the WebApp property: portalsuperreaderaccount"
write-host ""
write-host -f Green "Stef van Hooijdonk - v1.0"
write-host ""

$snapin="Microsoft.SharePoint.PowerShell"
if (get-pssnapin $snapin -ea "silentlycontinue") {
	write-host -f Green "PSsnapin $snapin is loaded"
}
else {
	if (get-pssnapin $snapin -registered -ea "silentlycontinue") {
		write-host -f Green "PSsnapin $snapin is registered"
		Add-PSSnapin $snapin
		write-host -f Green "PSsnapin $snapin is loaded"
	}
	else {
		write-host -f Red "PSSnapin $snapin not found"
	}
}

write-host -f Green "Getting current Farm"
$farm = Get-SPFarm

write-host -f Green "Getting Default ServiceAccount (Managed)"
$cacheAccount= $farm.DefaultServiceAccount.Name

write-host ""
write-host -f Green "Going to loop Claims Based authentication WebApplications"
write-host ""

Get-SPWebApplication | foreach-object { 

	if ($_.UseClaimsAuthentication ) {
	write-host -f white $_.Url " is a Claims Based Authentication WebApp"

	write-host -f yellow " - Setting Property: portalsuperuseraccount $cacheAccount for" $_.Url
	$_.Properties["portalsuperuseraccount"] = "$cacheAccount"

	write-host -f yellow " - Setting Property: portalsuperreaderaccount $cacheAccount for" $_.Url
	$_.Properties["portalsuperreaderaccount"] = "$cacheAccount"

	$_.Update()
	write-host "Saved properties"
	}

}
Write-host ""
Write-host -f red "Going to run IISReset"
Write-host ""
IISreset /noforce
Write-host ""</pre>
        <p>
 
</p>
        <p>
(Crosspost of: <a href="http://stefvanhooijdonk.com/2010/07/06/claims-based-authentication-and-the-publishingcache">http://stefvanhooijdonk.com/2010/07/06/claims-based-authentication-and-the-publishingcache</a> )
</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>Cannot publish pages in SharePoint 2010</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/06/25/Cannot+Publish+Pages+In+SharePoint+2010.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,92e4fd06-23b4-4bab-97b3-07e50877f991.aspx</id>
    <published>2010-06-25T14:22:42.634+02:00</published>
    <updated>2010-06-25T14:58:40.6505+02:00</updated>
    <author>
      <name>Wouter Geurtzen</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Today my workflow gave me the following
error: “The form cannot be rendered. This may be due to a misconfiguration of the
Microsoft SharePoint Server State Service. For more information, contact your server
administrator.” 
<br /><br />
The solution is displayed here:<br />
http://technet.microsoft.com/nl-nl/library/ee704548%28en-us%29.aspx 
</div>
    </content>
  </entry>
  <entry>
    <title>Simultaneous Editing in Office 2010 Web Apps: Only in Excel and OneNote</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/06/25/Simultaneous+Editing+In+Office+2010+Web+Apps+Only+In+Excel+And+OneNote.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,a09020c4-3a51-4f34-8290-71c4a2541f60.aspx</id>
    <published>2010-06-25T14:11:00+02:00</published>
    <updated>2010-07-07T16:12:17.338+02:00</updated>
    <author>
      <name>Stef van Hooijdonk</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Thought that this was a Major feature for the Office 2010 Web Apps. But it did not
make it in the final bits for PowerPoint and Word.
</p>
        <p>
"Simultaneous editing for collaboration is one of the most hyped features in
Office 2010, however it’s only supported over the web in the Excel 2010 web app. 
For Word and PowerPoint simultaneous editing, you’ll need to have the full client
versions of the Office 2010 products.  This will likely be a disappointment for
people who were hoping to collaborate on documents from kiosks anywhere in the world."
(<a title="Posts by Michael Fettner" href="http://blogs.kraftkennedy.com/index.php/author/fettner/">Michael
Fettner</a>)
</p>
        <p>
Go over to <a href="http://blogs.kraftkennedy.com/index.php/2010/03/08/simultaneous-editing-in-office-2010-web-apps-only-in-excel/" target="_blank">his
blog </a>for the details.
</p>
        <p>
(Crosspost of: <a title="http://stefvanhooijdonk.com/2010/06/25/simultaneous-editing-in-office-2010-web-apps-only-in-excel/" href="http://stefvanhooijdonk.com/2010/06/25/simultaneous-editing-in-office-2010-web-apps-only-in-excel">http://stefvanhooijdonk.com/2010/06/25/simultaneous-editing-in-office-2010-web-apps-only-in-excel</a>)
</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>Login troubles with Word and SharePoint?</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/06/23/Login+Troubles+With+Word+And+SharePoint.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,03893ba2-3a5f-4d2d-bbbc-2656121dc087.aspx</id>
    <published>2010-06-23T14:14:00+02:00</published>
    <updated>2010-07-07T16:14:56.963+02:00</updated>
    <author>
      <name>Stef van Hooijdonk</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Symptom: do users complain that they need to login over and over when opening and
saving word documents on your SharePoint ( MOSS2007 /SP2010 ) portal?
</p>
        <p>
Then you probably have used a FQDN for your portal url.
</p>
        <p>
The fix is quite easy if you have Vista or Windows 7 clients:
</p>
        <p>
          <a href="http://support.microsoft.com/?id=943280">http://support.microsoft.com/?id=943280</a>
        </p>
        <p>
Short version:
</p>
        <p>
Add a reg key to "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters"
</p>
        <p>
with the name: <strong>AuthForwardServerList</strong> (MULTI_STRING) and add your
portal urls as values:
</p>
        <p>
          <a href="http://stefvanhooijdonkblog.files.wordpress.com/2010/06/login-troubles-solution.png">
            <img class="alignnone size-full wp-image-568" title="login troubles solution" alt="" src="http://stefvanhooijdonkblog.files.wordpress.com/2010/06/login-troubles-solution.png" width="367" height="182" />
          </a>
        </p>
        <p>
(Crosspost of: <a href="http://stefvanhooijdonk.com/2010/06/23/login-troubles-with-word-and-sharepoint">http://stefvanhooijdonk.com/2010/06/23/login-troubles-with-word-and-sharepoint</a> )
</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>Error while enabling Enterprise Features</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/06/21/Error+While+Enabling+Enterprise+Features.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,b49506e3-86ca-46cc-9a6e-152f212ce34b.aspx</id>
    <published>2010-06-21T15:46:20.109+02:00</published>
    <updated>2010-06-21T15:48:33.406375+02:00</updated>
    <category term="Installation" label="Installation" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,Installation.aspx" />
    <category term="SharePoint 2010" label="SharePoint 2010" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,SharePoint2010.aspx" />
    <author>
      <name>Wouter Geurtzen</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Today we spent a lot of time figuring out
how to update SharePoint 2010 from Standard to Enterprise. The Central Admin has a
feature for that but it kept throwing us errors and getting us nowhere. <img border="0" src="http://www.sharepoint2010blog.nl/content/binary/error[1].gif" /> It
appeared to be that the configuration change to alter the license type has to be done
by the system account, which has to be the same account that is running the SharePoint
Foundation Timer Service. Besides this the account has to be a local admin on the
index and all frontend servers in the farm. 
</div>
    </content>
  </entry>
  <entry>
    <title>Document ID Provider, the last one?</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/06/21/Document+ID+Provider+The+Last+One.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,cb652ab6-a1e6-42e9-afd7-7b7eb9fbe0b5.aspx</id>
    <published>2010-06-21T14:13:00+02:00</published>
    <updated>2010-07-07T16:13:30.728625+02:00</updated>
    <author>
      <name>Stef van Hooijdonk</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
For a client of ours we wanted to create a Custom SP2010 Document ID Provider. For
this provider I wanted to be able to adjust and configure it so I can use it for other
customers also. 
<br />
First I needed to know how to create a Document ID Provider and found that: <a href="http://www.zimmergren.net/" target="_blank">Tobias
Zimmergren</a> had an <a href="http://www.zimmergren.net/archive/2010/04/13/sp-2010-sharepoint-server-2010-creating-your-custom-document-id-provider.aspx" target="_blank">excelent
article</a> on creating you own <a href="http://msdn.microsoft.com/en-us/library/ee559302(office.14).aspx" target="_blank">SP2010
Document ID Provider</a>.
</p>
        <p>
Next in order to create a unique sequenced number I immediatly thought of SQL Server.
And found that <a href="http://www.tonstegeman.com/Blog" target="_blank">Ton Stegeman</a> had
an equally <a href="http://www.tonstegeman.com/Blog/Lists/Posts/Post.aspx?List=70640fe5%2D28d9%2D464f%2Db1c9%2D91e07c8f7e47&amp;ID=120" target="_blank">usefull
post</a> on how to create <a href="http://www.tonstegeman.com/Blog/Lists/Posts/Post.aspx?List=70640fe5%2D28d9%2D464f%2Db1c9%2D91e07c8f7e47&amp;ID=120" target="_blank">your
own SPDatabase object in a SharePoint Farm</a>.
</p>
        <p>
Now I was set to create "the last Document ID Provider" for SP2010 I was
ever going to write. Perhaps not but still, it should suffice for a LOT of clients
of us!
</p>
        <p>
I wanted to end up with an admin page like this: 
<br /><a href="http://stefvanhooijdonkblog.files.wordpress.com/2010/06/custom-documentid-provider.png"><img class="alignleft size-full wp-image-532" title="custom-documentid-provider" alt="" src="http://stefvanhooijdonkblog.files.wordpress.com/2010/06/custom-documentid-provider.png" width="630" height="387" /></a><br />
This should then result in this document id: 
<br /><a href="http://stefvanhooijdonkblog.files.wordpress.com/2010/06/custom-documentid-provider-example.png"><img class="alignleft size-full wp-image-534" title="custom-documentid-provider-example" alt="" src="http://stefvanhooijdonkblog.files.wordpress.com/2010/06/custom-documentid-provider-example.png" width="360" height="298" /></a><br /><br style="clear: all" /><br />
So how to do this? 
<br /><strong>Step 1</strong><br />
Create a Database with a Table where I can store my generated document id's
</p>
        <pre style="border-bottom: #606060 1px solid; border-left: #606060 1px solid; background-color: #c0c0c0; color: black; overflow: auto; border-top: #606060 1px solid; border-right: #606060 1px solid">CREATE TABLE [dbo].[scoped_docid](
	[id] [bigint] IDENTITY(1,1) NOT NULL,
	[scopeid] [uniqueidentifier] NOT NULL,
	[objectid] [uniqueidentifier] NOT NULL,
	[scopedocid] [bigint] NULL,
	[scope] [varchar](100) NULL,
	[generateddocid] [varchar](150) NULL,
	[listid] [uniqueidentifier] NULL,
	[webid] [uniqueidentifier] NULL,
	[siteid] [uniqueidentifier] NULL,
	[webapplicationid] [uniqueidentifier] NULL,
	[farmid] [uniqueidentifier] NULL,	
	[created] [datetime] NULL,
	CONSTRAINT [PK_scoped_docid] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]</pre>
        <p>
And a stored procedure to Get/Insert ID's:
</p>
        <pre style="border-bottom: #606060 1px solid; border-left: #606060 1px solid; background-color: #c0c0c0; color: black; overflow: auto; border-top: #606060 1px solid; border-right: #606060 1px solid">-- =============================================
-- Author:		Stef van Hooijdonk
-- Create date: juni 2010
-- Description:	
-- =============================================
CREATE PROCEDURE GetNextScopedDocID 
	-- Add the parameters for the stored procedure here
	
	@scopeid uniqueidentifier  ,
	@scope varchar(100), 
	@itemid uniqueidentifier  
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

	BEGIN TRANSACTION

	declare @result bigint
	declare @scopedindex bigint

	select @scopedindex=COALESCE([scopedocid],-1),@result=[id] from scoped_docid where [objectid] = lower(@itemid)
	
	if (@scopedindex is null)  begin
		-- coalesce for the first record will have MAX = null, and then we add 1
		select @scopedindex=COALESCE(MAX(scopedocid),0)+1 from scoped_docid where scope = lower(@scope)

		insert into [scoped_docid] (scopeid ,scope,objectid, scopedocid ) values( lower(@scopeid), lower(@scope),LOWER( @itemid), @scopedindex)
		select @result = SCOPE_IDENTITY()
	end
	COMMIT	
	select @result as record,@scopedindex as docid	
END
GO</pre>
        <p>
There is more to it than this, but you can check out the downloads for all the details. 
<br /><strong>Step 2</strong><br />
Create an SPDatabase object for this Database, see the Ton Stegeman post!
</p>
        <p>
          <strong>Step 3</strong>
          <br />
Create a Document ID Provider that uses this SPDatabase and generates Document ID's
based on some settings. What I did was generate the sequenced number in SQL and then
format that in a method with the other variables. Generating a YEAR or DAY into a
string is fairly easy.
</p>
        <p>
          <strong>Step 4</strong>
          <br />
Create an Central Admin page to change the settings of our Document ID Provider (
see screenshot ). 
<br />
You can use the SPFarm.Local.Properties to score your settings Farm Wide:
</p>
        <pre style="border-bottom: #606060 1px solid; border-left: #606060 1px solid; background-color: #c0c0c0; color: black; overflow: auto; border-top: #606060 1px solid; border-right: #606060 1px solid">/// &lt;summary&gt;
        /// The default farm wide scope setting for this DocumentProvider
        /// &lt;/summary&gt;
        public ProviderScope Scope {
            get {
                ProviderScope result = ProviderScope.Farm;
                try {
                    string setting = Settings.GetFarmSetting("CustomDocumentIDProvider.Scope");
                    if (!string.IsNullOrEmpty(setting))
                        result = (ProviderScope)Enum.Parse(typeof(ProviderScope), setting);
                }
                catch (Exception exc) {
                        LogException(exc);
                }
                return result;
            }
            set {
                Settings.SetFarmSetting("CustomDocumentIDProvider.Scope", value.ToString());
            }
        }</pre>
        <p>
          <br />
The scope: 
<br /></p>
        <pre style="border-bottom: #606060 1px solid; border-left: #606060 1px solid; background-color: #c0c0c0; color: black; overflow: auto; border-top: #606060 1px solid; border-right: #606060 1px solid">/// &lt;summary&gt;
/// Scopes for the Document ID Provider
/// &lt;/summary&gt;
public enum ProviderScope {
	/// &lt;summary&gt;Farm wide scope&lt;/summary&gt;
        Farm=1,
        /// &lt;summary&gt;Webapplication scope&lt;/summary&gt;
        Webapplication = 2,
        /// &lt;summary&gt;SPSite/Site collection scope&lt;/summary&gt;
        SiteCollection = 3,
        /// &lt;summary&gt;Site/Subweb (SPWeb) scope&lt;/summary&gt;
        Site = 4,
        /// &lt;summary&gt;List scope&lt;/summary&gt;
        List = 5,
        /// &lt;summary&gt;No scope&lt;/summary&gt;
        None = 100
}</pre>
        <p>
          <strong>Downloads</strong>
          <br />
          <a href="http://stefvanhooijdonk.codeplex.com/releases/view/47551#DownloadId=128309" target="_blank">Download
solution</a>
          <br />
          <a href="http://stefvanhooijdonk.codeplex.com/releases/view/47551" target="_blank">Download
sources</a>
        </p>
        <p>
          <strong>How to use the solution</strong>
        </p>
        <ul>
          <li>
Install solution 
</li>
          <li>
Navigate to Central Admin. and go to General Application Settings 
</li>
          <li>
Navigate to the <a href="http://stefvanhooijdonkblog.files.wordpress.com/2010/06/docid-farm-admin.png" target="_blank">Document
ID Farm Administration</a> page below the Tam Tam section 
</li>
          <li>
Supply a Database name for your Farm wide document ID provider and press provision 
</li>
          <li>
            <a href="http://stefvanhooijdonkblog.files.wordpress.com/2010/06/docid-farm-admin-2.png" target="_blank">Supply</a> the
settings and formatstring 
</li>
          <li>
Navigate to your site collection and <a href="http://stefvanhooijdonkblog.files.wordpress.com/2010/06/docid-farm-feature.png" target="_blank">activate
the Tam Tam Document ID Provider</a></li>
        </ul>
        <p>
 
</p>
        <p>
(Crosspost of: <a title="http://stefvanhooijdonk.com/2010/06/21/document-id-provider-the-last-one/" href="http://stefvanhooijdonk.com/2010/06/21/document-id-provider-the-last-one/">http://stefvanhooijdonk.com/2010/06/21/document-id-provider-the-last-one</a> )
</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>Eerste Tam Tam SharePoint 2010 portal live!</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/06/14/Eerste+Tam+Tam+SharePoint+2010+Portal+Live.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,bf51c6cb-3068-45d7-9787-8536ac44c431.aspx</id>
    <published>2010-06-14T11:58:29.734+02:00</published>
    <updated>2010-06-14T12:17:09.968875+02:00</updated>
    <category term="Document sets" label="Document sets" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,DocumentSets.aspx" />
    <category term="News" label="News" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,News.aspx" />
    <category term="SharePoint 2010" label="SharePoint 2010" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,SharePoint2010.aspx" />
    <category term="SharePoint Designer 2010" label="SharePoint Designer 2010" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,SharePointDesigner2010.aspx" />
    <category term="Social" label="Social" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,Social.aspx" />
    <category term="User profiles" label="User profiles" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,UserProfiles.aspx" />
    <author>
      <name>Maurice Bakker</name>
    </author>
    <content type="html">&lt;p class=MsoNormal&gt;
&lt;span lang=NL style='mso-ansi-language:NL'&gt;Tam Tam werkt sinds het begin van dit jaar
aan een groot aantal SharePoint 2010 projecten, en afgelopen week is de eerste &amp;quot;2010&amp;quot;
portal daadwerkelijk live gegaan!&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
&lt;span lang=NL style='mso-ansi-language:NL'&gt;Het betreft een omgeving voor de &lt;a href="http://solimas.nl/home/over-solimas"&gt;Solimas
Groep&lt;/a&gt; (het overkoepelende concern voor de werkmaatschappijen: Agile Software,
InfraControl en GroeneIT) waarin alle documenten met betrekking op klanten en leveranciers
worden gedeeld en bovendien alle werknemers worden voorzien van in/extern nieuws,
de laatste dollarkoers, informatie over collega’s en een samenwerkomgeving per afdeling.
Na het beschikbaar komen van de definitieve SharePoint release in mei kon gestart
worden met het inplannen van de uiteindelijke configuratie van de portal, waarvan
het exacte ontwerp al compleet op de plank lag. Inmiddels is de volledige omgeving
in een tijd van enkele dagen geconfigureerd. De komende weken wordt nog gewerkt aan
het customizen van het grafisch ontwerp en de geautomatiseerde migratie van de duizenden
voorstellen en contracten uit de oude klantomgeving, maar nu al kunnen de Solimas
Groep werknemers aan de slag op hun nieuwe portal.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;img border="0" src="http://www.sharepoint2010blog.nl/content/binary/Solimas klantdossiers_shd.jpg"&gt; 
&lt;p&gt;
Kenmerkend voor dit project is dat er een aantal complexe features gerealiseerd zijn
die in voorgaande versies van SharePoint een flinke dosis maatwerk hadden gevergd,
maar nu met uitsluitend configuratie van nieuwe SharePoint 2010 mogelijkheden zijn
opgeleverd:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Klantdossiers bestaan uit “Documens sets” waardoor alle documenten in een klantdossier
automatisch de kenmerken van de klant overnemen zodat ze ook per stuk vindbaar zijn
op bijvoorbeeld accountnaam. Het werken met document sets in dit project combineert
de voordelen van het werken met slechts 1 documentbibliotheek (eenvoudig weergaves
wijzigen en toevoegen voor alle dossiers, geen groot aantal bijna lege subsites) met
de voordelen van een afgescheiden onderdeel per klant (elk dossier heeft een eigen
voorblad met daarop de klantkenmerken en een overzicht over alle documenten).&lt;/li&gt;
&lt;li&gt;
Klantdossiers worden gekoppeld aan de accounts in het bestaande Microsoft Dynamics
CRM systeem van de Solimas Groep. Deze “Business Connectivity Services” koppeling
is tot stand gebracht door configuratie met SharePoint Designer en levert een eenvoudige
gebruikersinterface op waarin de werknemers op verschillende wijzen kunnen filteren
om zo snel het juiste account te kunnen koppelen. Middels een kleine (SharePoint Designer)
workflow krijgt klantdossier automatisch de naam van het gekoppelde account zodat
de juiste CRM naamgeving consequent wordt gebruikt in alle systemen met klantdata.&lt;/li&gt;
&lt;li&gt;
De documenten die toegevoegd worden aan de klantdossiers worden voorzien van een in
CRM gegenereerd opportunity-ID. Ook die koppeling is via SharePoint Designer geconfigureerd
en wordt in 2 stappen door de gebruiker doorlopen: eerst zoekt hij het betreffende
account en vervolgens kiest hij uit de lijst met opportunities die voor die klant
lopen of hebben gelopen waarbij de meest recente uiteraard bovenaan staan. Dit CRM-nummer
wordt ook weer automatisch toegevoegd aan de naam van het document zodat iedereen
altijd een compleet overzicht heeft welke voorstellen en contracten zijn gemaakt binnen
een opportunity.&lt;/li&gt;
&lt;li&gt;
Aan elk document worden via de “term store” een aantal trefwoorden toegevoegd die
uit een centrale taxomomie met business units, projectsoorten en contractvormen worden
gekozen.&lt;/li&gt;
&lt;li&gt;
Via de nieuwe “metadatanavigatie” kan eenvoudig door het alfabet geklikt worden om
zo snel het dossier van een van de honderden klanten te vinden. Ook kan op de trefwoorden
uit de boomstructuur van de term store geklikt worden om zo uit alle klantdossiers
de eerder gemaakte voorstellen en calculaties voor een bepaald type project of contract
naar boven te halen.&lt;/li&gt;
&lt;li&gt;
Zoeken van personen en het presenteren van het profiel van een gevonden collega heeft
een ware evolutiestap ondergaan en hebben we in dit project zonder enige maatwerkaanpassing
kunnen implementeren.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Al met al is dit project het eerste bewijs voor wat we bij de presentatie van SharePoint
2010 in oktober in Las Vegas al vermoedden: meer functionaliteit die gebruiksvriendelijker
wordt gepresenteerd wordt mogelijk met veel minder maatwerk. Projecten als deze kunnen
zich meer focussen op details die van belang zijn voor de organisatie en worden in
veel mindere mate gedicteerd door beperkte of dure technische mogelijkheden.
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
&lt;span lang=NL style='mso-ansi-language:NL'&gt;Solimas Groep: van harte gefeliciteerd
met jullie nieuwe portal, en bedankt voor het gestelde vertrouwen in Tam Tam en in
Microsoft, nodig om al in zeer vroeg stadium te besluiten om dit project aan te durven
op een nieuw platform dat ten tijde van die beslissing nog nauwelijks in Beta-fase
was beland!&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>SP2010 and LinkedIn working together</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/03/24/SP2010+And+LinkedIn+Working+Together.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,68ccc080-b6c9-4a56-bc8e-ff20fbf52190.aspx</id>
    <published>2010-03-24T09:00:16.45425+01:00</published>
    <updated>2010-03-24T09:00:16.45425+01:00</updated>
    <category term="SharePoint 2010" label="SharePoint 2010" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,SharePoint2010.aspx" />
    <category term="Social" label="Social" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,Social.aspx" />
    <category term="User profiles" label="User profiles" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,UserProfiles.aspx" />
    <author>
      <name>Stef van Hooijdonk</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Based on an oauth example over at <a href="http://developer.linkedin.com">http://developer.linkedin.com</a> I
created a webpart for the MySite Host homepage and activity page. Here a SP2010 user
can authorize SP2010 to use the LinkedIn Api on his or hers behalf.
</p>
        <p>
          <a href="http://www.sharepoint2010blog.nl/content/binary/WindowsLiveWriter/SP2010andLinkedInworkingtogether_7EA0/sp2010-linkedin-webpart-networkupdates_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="sp2010-linkedin-webpart-networkupdates" border="0" alt="sp2010-linkedin-webpart-networkupdates" src="http://www.sharepoint2010blog.nl/content/binary/WindowsLiveWriter/SP2010andLinkedInworkingtogether_7EA0/sp2010-linkedin-webpart-networkupdates_thumb.png" width="644" height="244" />
          </a>
        </p>
        <p>
Read more: <a title="http://stefvanhooijdonk.com/2010/03/22/sp2010-and-linkedin-workin-together/" href="http://stefvanhooijdonk.com/2010/03/22/sp2010-and-linkedin-workin-together/">http://stefvanhooijdonk.com/2010/03/22/sp2010-and-linkedin-workin-together/</a></p>
      </div>
    </content>
  </entry>
  <entry>
    <title>SharePoint 2010 Profile Sync</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/03/05/SharePoint+2010+Profile+Sync.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,e67cad79-abfb-4b5b-8b93-04fad8c92620.aspx</id>
    <published>2010-03-05T16:49:17.9445+01:00</published>
    <updated>2010-03-05T16:49:17.9445+01:00</updated>
    <category term="Installation" label="Installation" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,Installation.aspx" />
    <category term="Profile import" label="Profile import" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,ProfileImport.aspx" />
    <category term="SharePoint 2010" label="SharePoint 2010" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,SharePoint2010.aspx" />
    <category term="User profiles" label="User profiles" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,UserProfiles.aspx" />
    <author>
      <name>Stef van Hooijdonk</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
During the rebuild of my Dev Environment with SP2010 (the RC version) I was unable
to get the Profile Sync service to work with the local domain. “Starting” was all
it did until if finally un-provisioned itself to Stopped.
</p>
        <p>
 
</p>
        <p>
Read more: <a href="http://stefvanhooijdonk.com/2010/03/05/sharepoint-2010-profile-sync/" target="_blank">StefvanHooijdonk.com</a></p>
      </div>
    </content>
  </entry>
  <entry>
    <title>Power of PowerShell and the SharePoint Snap-in</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/03/05/Power+Of+PowerShell+And+The+SharePoint+Snapin.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,e16fa763-ad3e-454c-a317-58dcda12b3f4.aspx</id>
    <published>2010-03-05T15:12:00+01:00</published>
    <updated>2010-03-05T16:12:10.41325+01:00</updated>
    <category term="Code" label="Code" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,Code.aspx" />
    <category term="CodePlex" label="CodePlex" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,CodePlex.aspx" />
    <category term="Installation" label="Installation" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,Installation.aspx" />
    <category term="Object model" label="Object model" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,ObjectModel.aspx" />
    <category term="SharePoint 2010" label="SharePoint 2010" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,SharePoint2010.aspx" />
    <category term="Visual Studio 2010" label="Visual Studio 2010" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,VisualStudio2010.aspx" />
    <author>
      <name>Stef van Hooijdonk</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Recently I started to look into some more detail at PowerShell and the SharePoint
2010 Snap-in. As a small exercise I wanted to create something (somewhat) usefull.
</p>
        <p>
I came up with a small site structure install script for SP2010.
</p>
        <p>
Read more: <a title="http://stefvanhooijdonk.com/2010/03/02/power-of-powershell-and-the-sharepoint-snap-in/" href="http://stefvanhooijdonk.com/2010/03/02/power-of-powershell-and-the-sharepoint-snap-in/">http://stefvanhooijdonk.com/2010/03/02/power-of-powershell-and-the-sharepoint-snap-in/</a></p>
      </div>
    </content>
  </entry>
  <entry>
    <title>New sample project for SP2010 Word Automation: UI</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/03/05/New+Sample+Project+For+SP2010+Word+Automation+UI.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,df9285b3-c3d4-4d76-b055-c5dd26d54789.aspx</id>
    <published>2010-03-05T12:53:11.991375+01:00</published>
    <updated>2010-03-05T12:53:11.991375+01:00</updated>
    <category term="CodePlex" label="CodePlex" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,CodePlex.aspx" />
    <category term="Word Automation" label="Word Automation" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,WordAutomation.aspx" />
    <author>
      <name>Peter Gerritsen</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've published a new sample project for the SP2010 Word Automation project on CodePlex.
This sample will add a Ribbon button to document libraries enabling users to convert
one or more documents directly from the UI. Read more on my personal blog <a href="http://blog.petergerritsen.nl/2010/03/02/new-sample-project-for-sp2010wordautomation-ui/">here</a></p>
      </div>
    </content>
  </entry>
  <entry>
    <title>2 new worflow activities added to SP2010 Word Automation</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/03/05/2+New+Worflow+Activities+Added+To+SP2010+Word+Automation.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,dd177b4d-51b6-492f-b4ea-8c2877148f4b.aspx</id>
    <published>2010-03-05T12:49:06.053+01:00</published>
    <updated>2010-03-05T12:49:33.147625+01:00</updated>
    <category term="CodePlex" label="CodePlex" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,CodePlex.aspx" />
    <category term="Word Automation" label="Word Automation" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,WordAutomation.aspx" />
    <category term="Workflow" label="Workflow" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,Workflow.aspx" />
    <author>
      <name>Peter Gerritsen</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've added 2 new custom workflow activities for Word Automation services to my codeplex
project. You can read more about it on my personal blog in <a href=" http://blog.petergerritsen.nl/2010/02/18/2-new-worflow-activities-added-to-sp2010-word-automation/">this
post</a></p>
      </div>
    </content>
  </entry>
  <entry>
    <title>SP2010 installation – error creating configuration database</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/03/05/SP2010+Installation+Error+Creating+Configuration+Database.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,69dfa8d4-485b-4a75-9126-51e67db63662.aspx</id>
    <published>2010-03-05T12:47:15.819+01:00</published>
    <updated>2010-03-05T12:49:43.632+01:00</updated>
    <category term="Installation" label="Installation" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,Installation.aspx" />
    <author>
      <name>Peter Gerritsen</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
When I tried to install the new RC of SharePoint 2010 on my machine, I got an “Error
creating configuration database” message. When I went to the installation log I found
a “User cannot be found” error. The cause was that the configuration wizard could
not find the AD controller, which was easily solved by opening a VPN connection as
I was working from home. 
</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>SPDisposeCheck and SharePoint 2010</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/02/24/SPDisposeCheck+And+SharePoint+2010.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,7419f1a0-07c2-40fa-b40e-55ad2d7ed815.aspx</id>
    <published>2010-02-24T15:11:00+01:00</published>
    <updated>2010-03-05T16:11:20.28825+01:00</updated>
    <category term="Learning" label="Learning" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,Learning.aspx" />
    <category term="Object model" label="Object model" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,ObjectModel.aspx" />
    <category term="SharePoint 2010" label="SharePoint 2010" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,SharePoint2010.aspx" />
    <category term="Visual Studio 2010" label="Visual Studio 2010" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,VisualStudio2010.aspx" />
    <author>
      <name>Stef van Hooijdonk</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Did you know the <a href="http://code.msdn.microsoft.com/SPDisposeCheck">SPDisposeCheck </a>tool?
</p>
        <p>
Well on the <em>product </em>blog is a great <a href="http://blogs.msdn.com/rogerla/archive/2009/11/30/sharepoint-2007-2010-do-not-dispose-guidance-spdisposecheck.aspx">post</a> on
Disposing and SP2010. named “<a href="http://blogs.msdn.com/rogerla/archive/2009/11/30/sharepoint-2007-2010-do-not-dispose-guidance-spdisposecheck.aspx">SharePoint
2007/2010 ‘Do Not Dispose Guidance’</a>“
</p>
        <p>
And even more usefull: <a href="http://stephenvick.wordpress.com/2010/01/08/spdisposecheck-using-static-analysis/">SPDisposeCheck
using Static Analysis</a> in TFS ( 2010 )
</p>
        <p>
You can download SPDisposeCheck as FxCop Ruleset <a href="http://spdisposecheckstatic.codeplex.com">here</a>.
</p>
        <p>
Cross post of: <a title="http://stefvanhooijdonk.com/2010/02/24/spdisposecheck-and-sharepoint-2010/" href="http://stefvanhooijdonk.com/2010/02/24/spdisposecheck-and-sharepoint-2010/">http://stefvanhooijdonk.com/2010/02/24/spdisposecheck-and-sharepoint-2010/</a></p>
      </div>
    </content>
  </entry>
  <entry>
    <title>SharePoint 2010 on your Windows 7 Series phone</title>
    <link rel="alternate" type="text/html" href="http://www.sharepoint2010blog.nl/2010/02/22/SharePoint+2010+On+Your+Windows+7+Series+Phone.aspx" />
    <id>http://www.sharepoint2010blog.nl/PermaLink,guid,a8b44fa6-228d-44c2-8d44-5802487c1e9c.aspx</id>
    <published>2010-02-22T15:09:00+01:00</published>
    <updated>2010-03-05T16:10:06.6945+01:00</updated>
    <category term="Mobile" label="Mobile" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,Mobile.aspx" />
    <category term="News" label="News" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,News.aspx" />
    <category term="SharePoint 2010" label="SharePoint 2010" scheme="http://www.sharepoint2010blog.nl/CategoryView,category,SharePoint2010.aspx" />
    <author>
      <name>Stef van Hooijdonk</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Daniel found this nice screenshot/mockup of windows 7 phone series showing the Office
(2010) hub . Including SharePoint ( SP2010) tab.
</p>
        <p>
          <a href="http://stefvanhooijdonkblog.files.wordpress.com/2010/02/windows-phone-series-7-office-hub-with-sharepoint-sp2010.jpg">
            <img title="Windows Phone Series 7 - Office Hub with SharePoint (sp2010)" alt="" src="http://stefvanhooijdonkblog.files.wordpress.com/2010/02/windows-phone-series-7-office-hub-with-sharepoint-sp2010.jpg?w=450&amp;h=264" width="450" height="264" />
          </a>
        </p>
        <p>
Via <a href="http://community.zevenseas.com/Blogs/Daniel/archive/2010/02/17/sharepoint-on-your-phone.aspx">Daniel</a>;
</p>
        <p>
(Cross post of: <a title="http://stefvanhooijdonk.com/2010/02/22/sharepoint-2010-on-your-windows-7-series-phone/" href="http://stefvanhooijdonk.com/2010/02/22/sharepoint-2010-on-your-windows-7-series-phone/">http://stefvanhooijdonk.com/2010/02/22/sharepoint-2010-on-your-windows-7-series-phone/</a> )
</p>
      </div>
    </content>
  </entry>
</feed>