<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5316505371619816173</id><updated>2012-01-03T09:38:59.468+01:00</updated><category term='content type hub'/><category term='Walkthrough'/><category term='Visual Studio'/><category term='Service Applications'/><category term='Sandboxed solutions'/><category term='Architecture'/><category term='Performance'/><category term='Exchange'/><category term='eLearning'/><category term='Development environment'/><category term='SQL Server'/><category term='Service Pack'/><category term='Demo environment'/><category term='Windows'/><category term='User Account Control settings'/><category term='Forms authentication'/><category term='Developer Walkthroughs'/><category term='ASP.NET'/><category term='Central Admin'/><category term='Scripting'/><category term='Overview'/><category term='Community'/><category term='PowerShell'/><category term='Exception'/><category term='managed metadata'/><category term='Office Web Apps'/><category term='Conference'/><category term='Web Parts'/><category term='Work'/><category term='Cluster'/><category term='content types'/><category term='Cloud'/><category term='VMWare'/><category term='CSS'/><category term='Assembly Loading'/><category term='Office Communication Server'/><category term='Office'/><category term='SharePoint services'/><category term='Workflow'/><category term='YouTube'/><category term='Search'/><category term='Project Server'/><category term='IIS'/><category term='Client Object Model'/><category term='SharePoint Server'/><category term='Windows Server'/><category term='Ballmer'/><category term='wal'/><category term='minimization'/><category term='SharePoint Designer'/><category term='Update'/><category term='maintainance'/><category term='IT Professional'/><category term='Cumulative Update'/><category term='JavaScript'/><category term='System architecture'/><category term='Installation'/><category term='.NET'/><title type='text'>Patrick Lamber</title><subtitle type='html'>SharePoint, Project Server and ASP.NET</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default?start-index=101&amp;max-results=100'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>101</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-7446473294753110843</id><published>2011-06-05T10:04:00.001+02:00</published><updated>2011-06-05T10:04:46.653+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Demo environment'/><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Development environment'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='IT Professional'/><title type='text'>Using PowerShell to backup up all site collections in a SharePoint 2010 farm</title><content type='html'>&lt;p&gt;&lt;em&gt;Yesterday, I was preparing a SharePoint 2010 demo&lt;/em&gt;&lt;em&gt; environment for the next customer presentations on my notebook. I prefer not using any prepared virtual machines or the &lt;/em&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=751fa0d1-356c-4002-9c60-d539896c66ce&amp;amp;displaylang=en" target="_blank"&gt;&lt;em&gt;2010 Information Worker Demonstration and Evaluation Virtual Machine&lt;/em&gt;&lt;/a&gt;&lt;em&gt; provided by Microsoft (probably due to my pigheadedness). However, I was also tired to restore the demo TeamSites I’m using every time I’m meeting another customer. Therefore, I decided to automate a little bit the creation process by automating the backup and restore of the site collections I’m using for demo purposes.&lt;/em&gt;&lt;/p&gt; &lt;h2&gt;Backups and script requirements&lt;/h2&gt; &lt;p&gt;Backing up and restoring a SharePoint environment can be done in different ways. The choice for the backup strategy depends on granularity one would like to achieve (and naturally also the expenses). There are some of the ways of backing up SharePoint:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Central Admin backup options&lt;/li&gt; &lt;li&gt;SQL Server back up of databases&lt;/li&gt; &lt;li&gt;Third party tools&lt;/li&gt; &lt;li&gt;PowerShell&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The Central admin option improved quite a bit from the last version, nevertheless, it is a good choice when you need to do manual work. SQL Server is good if you want to backup whole content databases. Third party tools come into play due to their granularity and automatisms. However, these solutions are too costly and oversized for my purpose here. I wanted a solution that is more customizable and automated. Therefore, the last option was to write a PowerShell script that creates a backup of each single site collection in my farm. The requirements for this script are:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;backup all site collections of my entire farm  &lt;li&gt;execute multiple times a backup without overriding the old backups  &lt;li&gt;log all script results in a log file  &lt;li&gt;remove backups that are older than x days  &lt;li&gt;execute the backups on a daily basis&lt;/li&gt;&lt;/ol&gt; &lt;h2&gt;The script&lt;/h2&gt; &lt;p&gt;According to the requirements above, the resulting script looks as follows:&lt;/p&gt;&lt;pre class="brush: ps; ruler: true; gutter: false; toolbar: false;"&gt;Add-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction SilentlyContinue&lt;br /&gt;&lt;br /&gt;# specify here your backup folder&lt;br /&gt;$backupRoot = "C:\Scripting\Backup\"&lt;br /&gt;$logPath = Join-Path $backupRoot "_logs"&lt;br /&gt;$tmpPath = Join-Path $backupRoot "_tmp"&lt;br /&gt;# removes all the old backup files on the target folder (valid values: 0 = do not remove; 1 = remove files&lt;br /&gt;$clearUpOldFiles = 0 &lt;br /&gt;# specifies the days for the backups that should be persisted&lt;br /&gt;$removeFilesOlderThanDays = -1&lt;br /&gt;# specifies the backupfolder based on the current weekday (Monday... etc.)&lt;br /&gt;$todaysBackupFolder = Join-Path $backupRoot ((Get-Date).DayOfWeek.toString())&lt;br /&gt;&lt;br /&gt;# generate all necessary folders if they are missing&lt;br /&gt;if (-not (Test-Path $logPath)) {&lt;br /&gt;  New-Item $logPath -type directory&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if (-not (Test-Path $tmpPath)) {&lt;br /&gt;  New-Item $tmpPath -type directory&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if (-not (Test-Path $todaysBackupFolder)) {&lt;br /&gt;  New-Item $todaysBackupFolder -type directory&lt;br /&gt;}&lt;/pre&gt;&lt;pre class="brush: ps; ruler: true; gutter: false; toolbar: false;"&gt;# creates a log file Start-Transcript -Path (Join-Path $logPath ((Get-Date).ToString('yyyyMdd_hhmmss') + ".log"))&lt;/pre&gt;&lt;pre class="brush: ps; ruler: true; gutter: false; toolbar: false;"&gt;# loop over all web applications (specify filter criteria here if you want to filter them out)&lt;br /&gt;foreach ($webApplication in Get-SPWebApplication) {&lt;br /&gt;    Write-Host&lt;br /&gt;    Write-Host&lt;br /&gt;    Write-Host "Processing $webApplication"&lt;br /&gt;    Write-Host "*******************************"&lt;br /&gt;    &lt;br /&gt;    foreach ($site in $webApplication.Sites) {&lt;br /&gt;        # we have to replace some characters from the url name&lt;br /&gt;        $name = $site.Url.Replace("http://", "").Replace("https://", "").Replace("/", "_").Replace(".", "_");&lt;br /&gt;        # replace all special characters from url with underscores&lt;br /&gt;        [System.Text.RegularExpressions.Regex]::Replace($name,"[^1-9a-zA-Z_]","_");&lt;br /&gt;        &lt;br /&gt;        # define the backup name&lt;br /&gt;        $backupPath = Join-Path $tmpPath ($name + (Get-Date).ToString('yyyyMdd_hhmmss') + ".bak")&lt;br /&gt;        &lt;br /&gt;        Write-Host "Backing up $site to $backupPath"&lt;br /&gt;        Write-Host&lt;br /&gt;        &lt;br /&gt;        # backup the site&lt;br /&gt;        Backup-SPSite -Identity $site.Url -Path $backupPath&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    Write-Host "*******************************"&lt;br /&gt;    Write-Host "*******************************"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Write-Host&lt;br /&gt;Write-Host&lt;br /&gt;&lt;br /&gt;# remove the old backup files in the todays folder if specified&lt;br /&gt;if ($clearUpOldFiles -eq 1) {&lt;br /&gt;  Write-Host "Cleaning up the folder $todaysBackupFolder"&lt;br /&gt;  Remove-Item ($todaysBackupFolder + "\*") &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# move all backup files from the tmp folder to the target folder&lt;br /&gt;Write-Host "Moving backups from $tmpPath to $todaysBackupFolder"&lt;br /&gt;Move-Item -Path ($tmpPath + "\*") -Destination $todaysBackupFolder&lt;br /&gt;&lt;br /&gt;# you can specify an additial parameter that removes filders older than the days you specified&lt;br /&gt;if ($removeFilesOlderThanDays -gt 0) {&lt;br /&gt;  Write-Host "Checking removal policy on $todaysBackupFolder"&lt;br /&gt;  $toRemove = (Get-Date).AddDays(-$removeFilesOlderThanDays)&lt;br /&gt;  $filesToRemove = Get-ChildItem $todaysBackupFolder | Where {$_.LastWriteTime -le “$toRemove”} &lt;br /&gt; &lt;br /&gt;  foreach ($fileToRemove in $filesToRemove)&lt;br /&gt;  {&lt;br /&gt;     Write-Host "Removing the file $fileToRemove because it is older than $removeFilesOlderThanDays days"&lt;br /&gt;     Remove-Item (Join-Path $todaysBackupFolder $fileToRemove) | out-null&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Stop-Transcript&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The script logic is pretty straightforward. Please change these script variables to your environment accordingly:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;$backupRoot = "C:\Scripting\Backup\": specify the backup location for the backup files and log files. &lt;br /&gt;&lt;li&gt;$clearUpOldFiles = 0: remove the old backups of the given weekday &lt;br /&gt;&lt;li&gt;$removeFilesOlderThanDays = –1: remove all backup files of the current weekday if they are older than x days (–1 means disabled).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;You can leave the rest untouched. Basically, the script version above executes the following logic:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;get the weekday and create a backup folder (if it does not exist) in the $backupRoot &lt;br /&gt;&lt;li&gt;loop over all web applications &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;loop over all sites of the current web application &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;get a unique backup name for the current site &lt;br /&gt;&lt;li&gt;execute the Backup-SPWeb operation for the given site and store it into a _tmp folder &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;if the variable $clearUpOldFiles = 1, then clear up the existing weekday folder&lt;br /&gt;&lt;li&gt;move the backups from _tmp to the weekday folder &lt;br /&gt;&lt;li&gt;if $removeFilesOlderThanDays &amp;gt; 0, then check if there are files in the weekday folder that are older than x days. Remove them if you found any.&lt;br /&gt;&lt;li&gt;store the log into the “_log” folder that resides in the $backupRoot&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;The script automatically creates all necessary files and folders. Anyway, we have to ensure following if we want to execute successfully this script:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;the user that executes the backup operation should have read/write permissions on the backup folder &lt;br /&gt;&lt;li&gt;the user that executes the backup operation should have enough permissions to execute a Backup-SPWeb operation &lt;br /&gt;&lt;li&gt;the script must be executed on a SharePoint server&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h2&gt;But we did not cover all requirements!&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;With the script above we are able to cover requirements 1 to 4. You can execute the script manually as many times you want. The backup names are unique and allow you to do this as many times you want. You can even play around with the variables $clearUpOldFiles and $removeFilesOlderThanDays to keep your disk a little bit under control. Nevertheless, we also want to conver requirement 5 and automate the whole story. We only need to create a scheduled task on our Windows Server. The next screens tell you how to do this:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;1) go to the server manager of your Windows Server 2008 and go under &lt;strong&gt;Configuration&lt;/strong&gt; –&amp;gt; &lt;strong&gt;Task Scheduler&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-qpqf9UefBt4/Tes4g6452OI/AAAAAAAAAZI/oFwJ1VgU1XU/s1600-h/013.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="01" border="0" alt="01" src="http://lh4.ggpht.com/-k9MMVUqTaws/Tes4hbjLYCI/AAAAAAAAAZM/JJ0HRIKytrw/01_thumb1.png?imgmax=800" width="404" height="287"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;2) press &lt;strong&gt;Create Task…&lt;/strong&gt; on the right side of the screen. You should see screen that follows. I gave to the task the name &lt;strong&gt;PowerShell Backup Script, &lt;/strong&gt;selected &lt;strong&gt;Run whether user is logged on or not&lt;/strong&gt; and ensured that the user that runs the task has enough privileges to write to the backup folder and execute the Backup-SPWeb operation (in my case I selected the SharePoint farm administrator – spowner).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/--gEvDTRgKTs/Tes4hnzFB3I/AAAAAAAAAZQ/zpy8n2AizsY/s1600-h/createTask3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="createTask" border="0" alt="createTask" src="http://lh3.ggpht.com/-EIY6UJsVHJc/Tes4iXm2S_I/AAAAAAAAAZU/Fd43XKhd69s/createTask_thumb1.png?imgmax=800" width="404" height="301"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;3) I went to the &lt;strong&gt;Triggers &lt;/strong&gt;tab and clicked the button&lt;strong&gt; New….&lt;/strong&gt; I configured the schedule from Monday to Friday and pressed &lt;strong&gt;OK.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-L4TGZlnj2Q4/Tes4inc5D7I/AAAAAAAAAZY/oIgniPzHRIU/s1600-h/createTask033.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="createTask03" border="0" alt="createTask03" src="http://lh5.ggpht.com/-C3m_YL3CvHk/Tes4jUkId7I/AAAAAAAAAZc/h6tgS4Ys8Kw/createTask03_thumb1.png?imgmax=800" width="404" height="346"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;4) I went to the &lt;strong&gt;Actions&lt;/strong&gt; tab and clicked the button&lt;strong&gt; New…. &lt;/strong&gt;I copied following execution path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -NonInteractive -File&lt;strong&gt; "C:\Scripting\Backup\ExecuteBackup.ps1" &lt;/strong&gt;into the &lt;strong&gt;Program/Script&lt;/strong&gt; section&lt;strong&gt;. &lt;/strong&gt;Please change the path in bold to your backup destination. Confirm with &lt;strong&gt;OK&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-VlINozR0bT4/Tes4jiXPv5I/AAAAAAAAAZg/aFOCz0kPgs4/s1600-h/CreateTask053.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="CreateTask05" border="0" alt="CreateTask05" src="http://lh5.ggpht.com/-AK16pfyErNM/Tes4kIklndI/AAAAAAAAAZk/sddnn6uW1_w/CreateTask05_thumb1.png?imgmax=800" width="404" height="434"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;5) Another window opens. Just confirm.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-ot7m9zMg3cs/Tes4kWSW_xI/AAAAAAAAAZo/oHj0nhQGQRs/s1600-h/CreateTask073.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="CreateTask07" border="0" alt="CreateTask07" src="http://lh4.ggpht.com/-P7trOv_H_Xk/Tes4lPSc9eI/AAAAAAAAAZs/d6XkF2Zb-1I/CreateTask07_thumb1.png?imgmax=800" width="404" height="216"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Store the script and we are done. Requirement 5 is covered with the scheduled task. You can still execute the script directly from file system or by executing it directly from the &lt;strong&gt;Task Scheduler&lt;/strong&gt; window (see next figure).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-lnsuPtb3hY8/Tes4mTyhflI/AAAAAAAAAZw/S3aWC7qKVLM/s1600-h/CreateTask083.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="CreateTask08" border="0" alt="CreateTask08" src="http://lh6.ggpht.com/--vcOZ4L7V4A/Tes4nJyStoI/AAAAAAAAAZ0/HgI7hgfzh2c/CreateTask08_thumb1.png?imgmax=800" width="404" height="291"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Summary&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;This blog post described a PowerShell script that is backing up all site collections in a farm. Feel free to use this script and change it to your needs. Please note that this script is not intended for production environments. Nevertheless, it shows that you can achieve good results with a little bit of PowerShell skills. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Hope this helps,&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-7446473294753110843?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/7446473294753110843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/06/using-powershell-to-backup-up-all-site.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/7446473294753110843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/7446473294753110843'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/06/using-powershell-to-backup-up-all-site.html' title='Using PowerShell to backup up all site collections in a SharePoint 2010 farm'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-k9MMVUqTaws/Tes4hbjLYCI/AAAAAAAAAZM/JJ0HRIKytrw/s72-c/01_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-3928720394625876451</id><published>2011-05-31T17:55:00.001+02:00</published><updated>2011-05-31T17:55:07.582+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Pack'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Cumulative Update'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><title type='text'>SharePoint 2010 and Project Server 2010 service pack 1 announced</title><content type='html'>&lt;p&gt;Microsoft announced the planned release date of Service Pack 1 for SharePoint 2010, Project Server 2010, and the Office 2010 Suite for end of June on this &lt;a href="http://blogs.technet.com/b/office_sustained_engineering/archive/2011/05/11/announcing-service-pack-1-for-office-2010-and-sharepoint-2010.aspx" target="_blank"&gt;blog post&lt;/a&gt;. They are providing us not only a collection of the hotfixes and cumulative updates recently published for these products, but also some interesting enhancements for the server platforms and client applications. &lt;/p&gt; &lt;p&gt;I’m happy to hear that the team of Project Server 2010 was able to provide a first cross-browser support for the Project Server 2010 Web App. This is certainly one of the most important improvements for this platform and opens Project Server 2010 to companies that have heterogeneous environments. Furthermore, Project Professional 2010 will be able to synchronize scheduled tasks with SharePoint 2010 task lists. This is a great thing and gives our customers the possibility to do small project management with Microsoft tools without requiring an immediate introduction of the Project Server 2010 platform. &lt;/p&gt; &lt;p&gt;Finally, I update my &lt;a href="http://patricklamber.blogspot.com/2011/01/sharepoint-server-2010-and-project.html" target="_blank"&gt;SharePoint 2010 and Project Server 2010 update&lt;/a&gt; blog post to keep track of all the cumulative updates (and in future also service packs 1) of these products. (it is a little bit late to be a news, but next time I try to be more proactive &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh4.ggpht.com/-UCUHZkcrLMM/TeUPWs_syvI/AAAAAAAAAZE/vB6v7BQIAP8/wlEmoticon-smile%25255B2%25255D.png?imgmax=800"&gt;)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Stay tuned,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-3928720394625876451?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/3928720394625876451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/05/sharepoint-2010-and-project-server-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3928720394625876451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3928720394625876451'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/05/sharepoint-2010-and-project-server-2010.html' title='SharePoint 2010 and Project Server 2010 service pack 1 announced'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-UCUHZkcrLMM/TeUPWs_syvI/AAAAAAAAAZE/vB6v7BQIAP8/s72-c/wlEmoticon-smile%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-2453224387026393557</id><published>2011-05-21T13:12:00.001+02:00</published><updated>2011-05-21T13:12:49.382+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='Exception'/><title type='text'>SharePoint 2010: Update user accounts after domain rename</title><content type='html'>&lt;p&gt;&lt;em&gt;one of my customers did a domain renaming lately in his network. Unfortunately, he forgot to consider his SharePoint environment and was wondering why the bad SharePoint system is not working after this “small” environmental change. Unfortunately, he also forgot to mention this important structural change to me before &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh5.ggpht.com/_3lC_bucoo88/TdeeMBOFZBI/AAAAAAAAAZA/OwkGpJxfk9I/wlEmoticon-smile2.png?imgmax=800"&gt;(but this is another story).&lt;/em&gt;&lt;/p&gt; &lt;p&gt;“The roof… the roof. The roof is on fire” is a part of a famous song of the band the Bloodhound Gang. This probably describes exactly how the whole situation was looking like.&lt;/p&gt; &lt;p&gt;Fortunately, it took me not all too much to make SharePoint running again. The first step was to update the SharePoint service accounts and to do a system reboot. After this, the central administration was working again. So far… so good. &lt;/p&gt; &lt;p&gt;Nevertheless, there was still an additional problem. I managed to access the central administration, however, the users did not manage to login into their TeamSites. After checking the TeamSite I discovered that the permission assignments of these users still showed the old account name references (with old domain). Therefore, it was necessary to update them to reference to the new domain. I found two solutions to do this:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Solution 1: Manual work&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Update the site collection admin in central administration for the site  &lt;li&gt;Login with this account on the TeamSite  &lt;li&gt;Assign again the permissions to each single user. This changes automatically the account references with the new domain name&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Solution 2: Powershell &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;After the change of two users I was already worried about the time it might take to update all references. Therefore, I wrote a simple Powershell script that does the job for me. The idea is pretty simple. Let us use the “EnsureUser” method of the web (find &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.ensureuser.aspx" target="_blank"&gt;here&lt;/a&gt; more info about this method) on each single user entry. This makes the same changes and updates the account references for us.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Please note that I executed this script only one one single site collection. You can change it to many site collections without any problems.&lt;/em&gt;&lt;/p&gt;&lt;pre class="brush: ps; ruler: true; gutter: false; toolbar: false;"&gt;Add-PSSnapin Microsoft.SharePoint.Powershell&lt;br /&gt;&lt;br /&gt;$rootWeb = Get-SPWeb "yoursite"&lt;br /&gt;$oldDomain = "yourOldDomain"&lt;br /&gt;$newDomain = "yourNewDomain"&lt;br /&gt;&lt;br /&gt;#loop through all users in the $rootWeb, change the login name and execute the EnsureUser method&lt;br /&gt;foreach ($user in $rootWeb.Users) {&lt;br /&gt;  $newLogin = $user.UserLogin -replace $oldDomain, $newDomain&lt;br /&gt;&lt;br /&gt;  $rootWeb.EnsureUser($newLogin)&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;As usual, before executing such scripts, ensure that you backed up your system before.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It could be that there is a more elegant solution out there that does this job faster, however, in this special case this was my rescue.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Hope this helps,&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-2453224387026393557?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/2453224387026393557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/05/sharepoint-2010-update-user-accounts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/2453224387026393557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/2453224387026393557'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/05/sharepoint-2010-update-user-accounts.html' title='SharePoint 2010: Update user accounts after domain rename'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_3lC_bucoo88/TdeeMBOFZBI/AAAAAAAAAZA/OwkGpJxfk9I/s72-c/wlEmoticon-smile2.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-9194993322377158302</id><published>2011-05-21T07:46:00.001+02:00</published><updated>2011-05-21T07:46:26.570+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Applications'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Central Admin'/><category scheme='http://www.blogger.com/atom/ns#' term='Exception'/><title type='text'>User Profile Services: “An Unexpected Error has occurred” when accessing the User Profile Service configuration pages the first time</title><content type='html'>&lt;p&gt;Getting an Unexpected Error has occurred immediately after you created successfully a User Profile Service (not with the Wizard) is not exactly the welcome message you might expect to get.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_3lC_bucoo88/TddRrwYNqrI/AAAAAAAAAY4/gIEmv5h57mg/s1600-h/Profile3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Profile" border="0" alt="Profile" src="http://lh4.ggpht.com/_3lC_bucoo88/TddRsaRjMpI/AAAAAAAAAY8/R-4RIVP8cOs/Profile_thumb1.png?imgmax=800" width="404" height="267"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The SharePoint logs might return an exception that looks as follows:&lt;/p&gt; &lt;blockquote&gt; &lt;p align="left"&gt;&lt;font color="#ff0000"&gt;04/26/2011 12:51:21.30&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; w3wp.exe (0x080C)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1A7C&amp;nbsp;&amp;nbsp;&amp;nbsp; SharePoint Portal Server&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; User Profiles&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; et8j&amp;nbsp;&amp;nbsp;&amp;nbsp; High&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UserProfileServiceUserStatisticsWebPart:LoadControl failed, Exception: System.IO.FileLoadException: The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.Office.Server.UserProfiles.UserProfileConfigManager.InitializeIlmClient(String ILMMachineName, Int32 FIMWebClientTimeOut)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.Office.Server.UserProfiles.UserProfileConfigManager..ctor(UserProfileApplicationProxy userProfileApplicationProxy, Guid partitionID)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Portal.WebControls.UserProfileServiceStatisticsWebPartBase.LoadControl(Object sender, EventArgs e)&amp;nbsp;&amp;nbsp;&amp;nbsp; 74f2b279-c038-4048-8853-b212031feb24&lt;br&gt;04/26/2011 12:51:21.31&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; w3wp.exe (0x080C)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1A7C&amp;nbsp;&amp;nbsp;&amp;nbsp; SharePoint Portal Server&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; User Profiles&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; et8j&amp;nbsp;&amp;nbsp;&amp;nbsp; High&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UserProfileServiceAudienceStatisticsWebPart:LoadControl failed, Exception: System.IO.FileLoadException: The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.Office.Server.UserProfiles.UserProfileConfigManager.InitializeIlmClient(String ILMMachineName, Int32 FIMWebClientTimeOut)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.Office.Server.UserProfiles.UserProfileConfigManager..ctor(UserProfileApplicationProxy userProfileApplicationProxy, Guid partitionID)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Portal.WebControls.UserProfileServiceStatisticsWebPartBase.LoadControl(Object sender, EventArgs e)&amp;nbsp;&amp;nbsp;&amp;nbsp; 74f2b279-c038-4048-8853-b212031feb24&lt;br&gt;04/26/2011 12:51:21.33&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; w3wp.exe (0x080C)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1A7C&amp;nbsp;&amp;nbsp;&amp;nbsp; SharePoint Portal Server&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; User Profiles&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; et8j&amp;nbsp;&amp;nbsp;&amp;nbsp; High&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UserProfileServiceImportStatisticsWebPart:LoadControl failed, Exception: System.IO.FileLoadException: The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.Office.Server.UserProfiles.UserProfileConfigManager.InitializeIlmClient(String ILMMachineName, Int32 FIMWebClientTimeOut)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.Office.Server.UserProfiles.UserProfileConfigManager..ctor(UserProfileApplicationProxy userProfileApplicationProxy, Guid partitionID)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Portal.WebControls.UserProfileServiceStatisticsWebPartBase.LoadControl(Object sender, EventArgs e)&amp;nbsp;&amp;nbsp;&amp;nbsp; 74f2b279-c038-4048-8853-b212031feb24&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p align="left"&gt;&lt;font color="#000000"&gt;Some file not founds and assemblies that do not match the assembly reference.&lt;/font&gt;&lt;/p&gt; &lt;p align="left"&gt;At the end, I was again too fast in setting up the service application without finishing to read the excellent &lt;font color="#000000"&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ee721049.aspx" target="_blank"&gt;TechNet article&lt;/a&gt;. I missed one but important step:&lt;/font&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;h6&gt;&lt;em&gt;Reset IIS&lt;/em&gt;&lt;/h6&gt; &lt;p&gt;&lt;em&gt;If the Central Administration Web site and the User Profile Synchronization service are running on the same server, you must reset IIS after the User Profile Synchronization service starts. If they are running on different servers, you may skip this procedure.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p align="left"&gt;&lt;font color="#000000"&gt;If you get a similar exception when setting up the profile service application, do not forget to do an IISReset. Please also wait a little bit until the service is ready. Then you are able to continue.&lt;/font&gt;&lt;/p&gt; &lt;p align="left"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="left"&gt;&lt;font color="#000000"&gt;Hope this helps,&lt;br&gt;Patrick&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-9194993322377158302?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/9194993322377158302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/05/user-profile-services-unexpected-error.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/9194993322377158302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/9194993322377158302'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/05/user-profile-services-unexpected-error.html' title='User Profile Services: “An Unexpected Error has occurred” when accessing the User Profile Service configuration pages the first time'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_3lC_bucoo88/TddRsaRjMpI/AAAAAAAAAY8/R-4RIVP8cOs/s72-c/Profile_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-4698918373827954338</id><published>2011-05-14T17:30:00.001+02:00</published><updated>2011-05-14T17:30:35.546+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint services'/><category scheme='http://www.blogger.com/atom/ns#' term='Central Admin'/><category scheme='http://www.blogger.com/atom/ns#' term='Exception'/><title type='text'>People Picker in Central Administration: “Claims Mode call failed. Error Message: Object reference not set to an instance of an object.”</title><content type='html'>&lt;p&gt;Today, I was playing around with the User Profile Service Application. I was trying out the Organization Subtypes and wanted to add an AD user by using a SharePoint people picker control. However, the people picker returned the error:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;An error has occurred in the claim providers configured form this site collection&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/Tc6gGHBWZJI/AAAAAAAAAYw/uMmupPRtvbs/s1600-h/01Error%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="01Error" border="0" alt="01Error" src="http://lh6.ggpht.com/_3lC_bucoo88/Tc6gGlqJGYI/AAAAAAAAAY0/2IstkTFudsQ/01Error_thumb%5B1%5D.png?imgmax=800" width="404" height="366"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;First thing I did is to check the logs which returned two error messages:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;05/14/2011 15:21:34.10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; w3wp.exe (0x22A8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x13A0&amp;nbsp;&amp;nbsp;&amp;nbsp; SharePoint Foundation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Claims Authentication&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8307&amp;nbsp;&amp;nbsp;&amp;nbsp; Critical&amp;nbsp;&amp;nbsp;&amp;nbsp; An exception occurred in AllUsers claim provider when calling SPClaimProvider.FillHierarchy(): Object reference not set to an instance of an object..&amp;nbsp;&amp;nbsp;&amp;nbsp; 300fe487-7f75-4244-8a29-bb1fbf7e0850&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;font color="#000000"&gt;and…&lt;/font&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;05/14/2011 15:21:34.11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; w3wp.exe (0x22A8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x13A0&amp;nbsp;&amp;nbsp;&amp;nbsp; SharePoint Foundation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Web Controls&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ad60&amp;nbsp;&amp;nbsp;&amp;nbsp; Medium&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Claims Mode call failed. Error Message: Object reference not set to an instance of an object.&amp;nbsp; Callstack:&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Administration.Claims.SPAllUserClaimProvider.GetAllPossiblePickerEntities(Uri context, Boolean unrestricted)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Administration.Claims.SPAllUserClaimProvider.FillHierarchy(Uri context, String[] entityTypes, String hierarchyNodeID, Int32 numberOfLevels, SPProviderHierarchyTree hierarchy)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Administration.Claims.SPClaimProvider.GetHierarchy(Uri context, String[] entityTypes, String hierarchyNodeID, Int32 numberOfLevels)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Administration.Claims.SPClaimProviderOperations.GetHierarchy(Uri context, SPClaimProviderOperationOptions mode, String[] providerNames, String[] entityTypes, Int32 num...&amp;nbsp;&amp;nbsp;&amp;nbsp; 300fe487-7f75-4244-8a29-bb1fbf7e0850&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Object reference not set to an instance of an object sounds never good. Fortunately, the solution to this problem was not far away. I only needed to look some log entries before the exception to see the real root cause:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;Alternate access mappings have not been configured.&amp;nbsp; Users or services are accessing the site &lt;/font&gt;&lt;a href="http://lrd01demo:21000"&gt;&lt;font color="#ff0000"&gt;http://lrd01demo:21000&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt; with the URL &lt;/font&gt;&lt;a href="http://central.demo.info"&gt;&lt;font color="#ff0000"&gt;http://central.demo.info&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt;.&amp;nbsp; This may cause incorrect links to be stored or returned to users.&amp;nbsp; If this is expected, add the URL &lt;/font&gt;&lt;a href="http://central.demo.info"&gt;&lt;font color="#ff0000"&gt;http://central.demo.info&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt; as an AAM response URL.&amp;nbsp; For more information, see: &lt;/font&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=114854&amp;quot;/"&gt;&lt;font color="#ff0000"&gt;http://go.microsoft.com/fwlink/?LinkId=114854"/&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 300fe487-7f75-4244-8a29-bb1fbf7e0850&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;The alternate access mappings misconfiguration strikes back again! I accessed the central administration by using the DNS entry &lt;strong&gt;central.demo.info.&lt;/strong&gt; However, I forgot to add it as entry for the central administration. &lt;/p&gt; &lt;p&gt;The exception disappeared immediately after I assigned the correct alternate access mappings entry to my central administration.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps,&lt;br&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-4698918373827954338?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/4698918373827954338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/05/people-picker-in-central-administration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4698918373827954338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4698918373827954338'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/05/people-picker-in-central-administration.html' title='People Picker in Central Administration: “Claims Mode call failed. Error Message: Object reference not set to an instance of an object.”'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_3lC_bucoo88/Tc6gGlqJGYI/AAAAAAAAAY0/2IstkTFudsQ/s72-c/01Error_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-1824744329372633512</id><published>2011-05-02T13:46:00.001+02:00</published><updated>2011-05-02T13:46:50.936+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><title type='text'>How to remove the “Additional resources” text in the SharePoint 2010 search results</title><content type='html'>&lt;p&gt;if you search in SharePoint 2010 without success, then you are receiving a “not found” description with suggestions and additional resources. This is a simple text that explains what to do to get any results from the search. The text might look like that:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/Tb6ZpV_C6qI/AAAAAAAAAYg/7UHZK-Chs0k/s1600-h/SearchPart3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="SearchPart" border="0" alt="SearchPart" src="http://lh6.ggpht.com/_3lC_bucoo88/Tb6ZpuE5ZxI/AAAAAAAAAYk/vouoPAPprOM/SearchPart_thumb1.png?imgmax=800" width="404" height="139"&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;This text works fine for most cases. However, I got recently a request from a customer to remove the &lt;strong&gt;Additional resources&lt;/strong&gt; text from the search results. This request came due to some misleading suggestions that were not exactly correct for the context of my customer.&lt;/p&gt; &lt;p&gt;There are not options that allow you to change this text. Fortunately, the Search Core Result Web Part responsible to render the search results on the page can be customized in a very flexible way. This Web Part uses a XSLT to transform the results and render them. If you want to remove the text above from the search results, then you have to do some changes on the XSLT of the Web Part.&lt;/p&gt; &lt;p&gt;Follow these steps:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Edit WebPart&lt;/strong&gt; for the Core Search Result WebPart of this page  &lt;li&gt;locate the XSLT Editor… button (see next figure)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/Tb6ZqO8GGxI/AAAAAAAAAYo/4kKQyl4hsng/s1600-h/searchPart22.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="searchPart2" border="0" alt="searchPart2" src="http://lh5.ggpht.com/_3lC_bucoo88/Tb6Zqjxo9PI/AAAAAAAAAYs/cvd_lzrIthQ/searchPart2_thumb.png?imgmax=800" width="149" height="244"&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;a new window opens. Locate the text in the XSLT that follows&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush: xml; ruler: true; gutter: false; toolbar: false;"&gt;&amp;lt;h3&amp;gt;&lt;br /&gt;  &amp;lt;xsl:value-of select="$AdditionalResources" /&amp;gt;&lt;br /&gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;&amp;lt;ul&amp;gt;&lt;br /&gt; &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select="$AdditionalResources1" /&amp;gt;&amp;lt;xsl:text disable-output-escaping="yes"&amp;gt;&amp;amp;amp;nbsp;&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;     &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;       &amp;lt;xsl:when test="string-length($IsSearchServer) &amp;amp;gt; 0"&amp;gt;&lt;br /&gt;         &amp;lt;a href="javascript:HelpWindowKey('MSSEndUser_FindContent')" label="$SearchHelp"&amp;gt;&amp;lt;xsl:value-of select="$SearchHelp" /&amp;gt;&amp;lt;/a&amp;gt; &lt;br /&gt;       &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;       &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;         &amp;lt;a href="javascript:HelpWindowKey('WSSEndUser_FindContent')" label="$SearchHelp"&amp;gt;&amp;lt;xsl:value-of select="$SearchHelp" /&amp;gt;&amp;lt;/a&amp;gt; &lt;br /&gt;       &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;     &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt; &amp;lt;/li&amp;gt;&lt;br /&gt; &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select="$AdditionalResources2" /&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Remove completely this code snippet if you don’t want to display the results &lt;br /&gt;&lt;li&gt;Confirm the changes&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;After these changes the results of the Core Search Result Web Part should not display the &lt;strong&gt;Additional Resources&lt;/strong&gt; section anymore.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Hope this helps,&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-1824744329372633512?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/1824744329372633512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/05/how-to-remove-additional-resources-text.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/1824744329372633512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/1824744329372633512'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/05/how-to-remove-additional-resources-text.html' title='How to remove the “Additional resources” text in the SharePoint 2010 search results'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_3lC_bucoo88/Tb6ZpuE5ZxI/AAAAAAAAAYk/vouoPAPprOM/s72-c/SearchPart_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-4563183171531319140</id><published>2011-04-20T08:58:00.001+02:00</published><updated>2011-04-20T08:58:59.362+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Walkthrough'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>SharePoint Conference 2011 – Italy: A short summary of my EPM session of yesterday</title><content type='html'>&lt;p&gt;In the first day of the &lt;a href="http://www.sharepointconference.it/" target="_blank"&gt;SharePoint Conference 2011 in Milan&lt;/a&gt;, I was talking with my good friend Andrea Molinari about Enterprise Project Management with Project Server 2010. It was one of the last sessions of the first conference day. Because of that, we were thinking that not so many people would join our session. Fortunately, our assumptions were wrong &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh3.ggpht.com/_3lC_bucoo88/Ta6EMnXC4SI/AAAAAAAAAYc/cE1nnafQHG0/wlEmoticon-smile%5B2%5D.png?imgmax=800"&gt;.&lt;/p&gt; &lt;p&gt;This was the only session talking about Project Server 2010 at this conference. Therefore, we tried to cover two important topics because we didn’t know exactly the target groups that are going to listen to our session. The first one was a road map that showed how Project Server 2010 and Project Client should be used in a lifecycle of a project. The second topic was focusing more on the customizations that are possible with this great tool. This split of topics gave us the possibility to adapt the presentation dynamically depending on the target groups that are listening to our session. Yesterday we had less software developers in the audience. Because of that, we focused more on the first topic and showed less demos about Project Server 2010 customizations.&lt;/p&gt; &lt;p&gt;Nevertheless, in the next weeks I’m going to write some articles about Project Server 2010 customizations with PSI and workflow.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Stay tuned,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-4563183171531319140?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/4563183171531319140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/04/sharepoint-conference-2011-italy-short.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4563183171531319140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4563183171531319140'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/04/sharepoint-conference-2011-italy-short.html' title='SharePoint Conference 2011 – Italy: A short summary of my EPM session of yesterday'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_3lC_bucoo88/Ta6EMnXC4SI/AAAAAAAAAYc/cE1nnafQHG0/s72-c/wlEmoticon-smile%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-7540802056002308601</id><published>2011-04-05T06:18:00.001+02:00</published><updated>2011-04-05T06:18:12.243+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint services'/><category scheme='http://www.blogger.com/atom/ns#' term='Exception'/><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>The list cannot be displayed in Datasheet view in SharePoint 2010 and Office 64-bit</title><content type='html'>&lt;p&gt;I started using Office 2010 64-bit in the last months. During this time I encountered more than once an exception when changing to the Datasheet view in a SharePoint 2010 list:  &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;em&gt;The list cannot be displayed in Datasheet view for one or more of the following reasons:&lt;/em&gt;&lt;/font&gt;  &lt;ul&gt; &lt;li&gt;&lt;font color="#ff0000"&gt;&lt;em&gt;A datasheet component compatible with Microsoft SharePoint Foundation is not installed.&lt;/em&gt;&lt;/font&gt;  &lt;li&gt;&lt;font color="#ff0000"&gt;&lt;em&gt;Your Web browser does not support ActiveX controls.&lt;/em&gt;&lt;/font&gt;  &lt;li&gt;&lt;font color="#ff0000"&gt;&lt;em&gt;A component is not properly configured for 32-bit or 64-bit support.&lt;/em&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TZqYAD5y9rI/AAAAAAAAAYQ/7QQ9LPT2eEA/s1600-h/image3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_3lC_bucoo88/TZqYAh4EKyI/AAAAAAAAAYU/1VT5g5a9ioI/image_thumb1.png?imgmax=800" width="404" height="209"&gt;&lt;/a&gt;  &lt;p&gt;I was able to find the resolution after searching on the web on this forum &lt;a href="http://social.msdn.microsoft.com/Forums/en/sharepoint2010general/thread/9eb920ba-1a02-4f0c-ae08-6e808e0269c4" target="_blank"&gt;post&lt;/a&gt;. However, since this happened to me about three times in the last four weeks and I always forget to set this forum post to my bookmarks &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh4.ggpht.com/_3lC_bucoo88/TZqYA0x2QMI/AAAAAAAAAYY/C9KPpIKO_0U/wlEmoticon-smile%5B2%5D.png?imgmax=800"&gt;, I decided to write this blog post. I hope that it might be also useful for you to find more faster the solution to this problem.&lt;/p&gt; &lt;p&gt;This exception occurs because the ActiveX control for the Datasheet view is incompatible with Office 64-bit versions. You can solve the issue by installing the “2007 Office System Driver: Data Connectivity Components” downloadable under &lt;a href="http://www.microsoft.com/downloads/en/confirmation.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&amp;amp;displaylang=en" target="_blank"&gt;this link&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;After I installed the above component on my affected machine, I was able to use the Datasheet view functionality immediately.&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; I tested this on a Windows Server 2008 R2 and Windows 7 machine.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-7540802056002308601?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/7540802056002308601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/04/list-cannot-be-displayed-in-datasheet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/7540802056002308601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/7540802056002308601'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/04/list-cannot-be-displayed-in-datasheet.html' title='The list cannot be displayed in Datasheet view in SharePoint 2010 and Office 64-bit'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_3lC_bucoo88/TZqYAh4EKyI/AAAAAAAAAYU/1VT5g5a9ioI/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-8902020855139781213</id><published>2011-03-28T10:55:00.001+02:00</published><updated>2011-03-28T10:55:16.607+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Office Web Apps'/><category scheme='http://www.blogger.com/atom/ns#' term='Exception'/><title type='text'>SharePoint 2010 configuration wizard failure: An exception of type System.FormatException was thrown. Additional exception information: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).</title><content type='html'>&lt;p&gt;last weekend I had to solve another SharePoint 2010 configuration wizard issue. This server had SharePoint 2010, Project 2010, and Office Web Apps installed but not configured. After the binary file installation, it was time to start the SharePoint 2010 configuration wizard. The wizard started but stopped execution on step 3 by throwing a configuration exception. The installation logs showed this information:&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;font color="#ff0000" size="2"&gt;Failed to create the configuration database.&lt;br&gt;An exception of type System.FormatException was thrown.&amp;nbsp; Additional exception information: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).&lt;br&gt;System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).&lt;br&gt;&amp;nbsp;&amp;nbsp; at System.Guid..ctor(String g)&lt;br&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Administration.SPFarm.GetInstalledProductIds()&lt;br&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Administration.SPFarm.Create(SqlConnectionStringBuilder configurationDatabase, SqlConnectionStringBuilder administrationContentDatabase, IdentityType identityType, String farmUser, SecureString farmPassword, SecureString masterPassphrase)&lt;br&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Administration.SPFarm.Create(SqlConnectionStringBuilder configurationDatabase, SqlConnectionStringBuilder administrationContentDatabase, String farmUser, SecureString farmPassword, SecureString masterPassphrase)&lt;br&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.CreateOrConnectConfigDb()&lt;br&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.Run()&lt;br&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;This exception didn’t tell me anything. Therefore, I started some research on the web. Fortunately, I found a &lt;a href="http://karthikshare.blogspot.com/2010/12/sharepoint-2010-installation-on-windows.html" target="_blank"&gt;blog post&lt;/a&gt; of &lt;a href="http://karthikshare.blogspot.com/" target="_blank"&gt;Karthik Selvaraj&lt;/a&gt; that didn’t solve my problem, but led me to the right direction. The registry keys located under &lt;em&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server extensions\14.0\WSS\InstalledProducts &lt;/em&gt;were somehow malformed. You can see my situation in the next picture. &lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TZBM8jWgHyI/AAAAAAAAAYI/ohnpbRjhFxA/s1600-h/image3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_3lC_bucoo88/TZBM8xXVxxI/AAAAAAAAAYM/xojkkHuPd0w/image_thumb1.png?imgmax=800" width="404" height="72"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;You can see from the picture that the last registry key had a 0 value instead of a GUID. This leads to the exception during the SharePoint 2010 configuration. You cannot convert a 0 value into a valid GUID value. &lt;/p&gt; &lt;p&gt;At the end, I solved my issue by following these steps:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;uninstalled the Office Web Apps binaries  &lt;li&gt;removed from the registry key the malformed key with the 0 value. If you don’t have three registry keys like in my situation (only two for example), then follow the steps of Karthik’s &lt;a href="http://karthikshare.blogspot.com/2010/12/sharepoint-2010-installation-on-windows.html" target="_blank"&gt;blog post&lt;/a&gt;.  &lt;li&gt;started the configuration wizard&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The configuration finished successfully and I was able to proceed with the configuration of the farm. At the end I reinstalled the Office Web Apps binary files and executed the configuration wizard without any problems.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-8902020855139781213?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/8902020855139781213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/03/sharepoint-2010-configuration-wizard.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/8902020855139781213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/8902020855139781213'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/03/sharepoint-2010-configuration-wizard.html' title='SharePoint 2010 configuration wizard failure: An exception of type System.FormatException was thrown. Additional exception information: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_3lC_bucoo88/TZBM8xXVxxI/AAAAAAAAAYM/xojkkHuPd0w/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-2251381292407091515</id><published>2011-03-25T19:00:00.001+01:00</published><updated>2011-03-25T19:00:21.782+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><title type='text'>The fantastic 40 SharePoint jokes</title><content type='html'>&lt;p&gt;I got in the last days a really nice and funny link about jokes on SharePoint consultants that you probably already know. These jokes where published by &lt;a href="http://www.paulswider.com" target="_blank"&gt;Paul J. Swider&lt;/a&gt; on his site. &lt;/p&gt; &lt;p&gt;If you don’t know them at all, then they are certainly worth to be read. Just follow &lt;a href="http://www.paulswider.com/the-fantastic-40-sharepoint-jokes.html" target="_blank"&gt;this&lt;/a&gt; link.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Have a nice day,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-2251381292407091515?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/2251381292407091515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/03/fantastic-40-sharepoint-jokes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/2251381292407091515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/2251381292407091515'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/03/fantastic-40-sharepoint-jokes.html' title='The fantastic 40 SharePoint jokes'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-6078751802673184005</id><published>2011-03-14T11:32:00.001+01:00</published><updated>2011-03-14T11:32:43.094+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sandboxed solutions'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Development environment'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint services'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='Exception'/><title type='text'>Error in Visual Studio 2010 sandboxed solutions development: Error occurred in deployment step ‘Retract Solution’: Cannot start service SPUserCodeV4 on computer ‘MyServerName’</title><content type='html'>&lt;p&gt;I was developing on my freshly deployed development server a new SharePoint 2010 sandboxed solution (in my case a WebPart). After hitting the &lt;strong&gt;deploy &lt;/strong&gt;button in Visual Studio 2010, I was getting following exception:&lt;/p&gt; &lt;p&gt;&lt;em&gt;Error occurred in deployment step ‘Retract Solution’: Cannot start service SPUserCodeV4 on computer ‘LRD01SHA’&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TX3uxK9LpMI/AAAAAAAAAX0/4stPqVCNLJw/s1600-h/Capture%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Capture" border="0" alt="Capture" src="http://lh6.ggpht.com/_3lC_bucoo88/TX3ux7Sl7_I/AAAAAAAAAX4/dciMil_-qsY/Capture_thumb%5B1%5D.png?imgmax=800" width="404" height="36"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;At first glance, I was not sure why this exception occurs at this stage. To be sure that there are no issues with my Visual Studio 2010 installation, I tried to deploy a non sandboxed solution. In that case I was not getting any exception. Because of that, I was pretty sure that I forgot to configure something on my SharePoint 2010 instance. This instance was not configured by using the SharePoint Wizard. Because of that, several services and service applications were not started or deployed.&lt;/p&gt; &lt;p&gt;Fortunately, I found the solution after some minutes. If you want to deploy sandboxed solutions on your SharePoint instance, don’t forget like I did to start the service&amp;nbsp; &lt;strong&gt;Microsoft SharePoint Foundation Sandboxed Code Service&lt;/strong&gt;. You can start this service in the central application under &lt;strong&gt;Application Management –&amp;gt; Manage services on serve.&lt;/strong&gt; After starting this service you should see something similar to the next figure:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TX3uyJu9L6I/AAAAAAAAAX8/6RgNFbVT_4E/s1600-h/02.%20administration%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="02. administration" border="0" alt="02. administration" src="http://lh5.ggpht.com/_3lC_bucoo88/TX3uytKlDcI/AAAAAAAAAYA/HvromdJj0gs/02.%20administration_thumb%5B1%5D.png?imgmax=800" width="404" height="17"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Now, you should be able to deploy the sandboxed solutions with Visual Studio 2010.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-6078751802673184005?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/6078751802673184005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/03/error-in-visual-studio-2010-sandboxed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/6078751802673184005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/6078751802673184005'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/03/error-in-visual-studio-2010-sandboxed.html' title='Error in Visual Studio 2010 sandboxed solutions development: Error occurred in deployment step ‘Retract Solution’: Cannot start service SPUserCodeV4 on computer ‘MyServerName’'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_3lC_bucoo88/TX3ux7Sl7_I/AAAAAAAAAX4/dciMil_-qsY/s72-c/Capture_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-7565381254246090993</id><published>2011-03-09T18:11:00.002+01:00</published><updated>2011-03-19T12:20:09.513+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maintainance'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Cumulative Update'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Update'/><title type='text'>February 2011 Cumulative Update for SharePoint Server 2010, SharePoint Foundation 2010, and Project Server 2010 available now for download</title><content type='html'>&lt;p&gt;Hi,&lt;/p&gt; &lt;p&gt;with some days of delay the February 2011 cumulative update for SharePoint 2010 and Project 2010 are available for download. Find the updated list on my &lt;a href="http://patricklamber.blogspot.com/2011/01/sharepoint-server-2010-and-project.html" target="_blank"&gt;update overview post&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;Hope this helps,&lt;/p&gt; &lt;p&gt;patrick&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-7565381254246090993?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/7565381254246090993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/03/february-2011-cumulative-update-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/7565381254246090993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/7565381254246090993'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/03/february-2011-cumulative-update-for.html' title='February 2011 Cumulative Update for SharePoint Server 2010, SharePoint Foundation 2010, and Project Server 2010 available now for download'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-4745329281025452801</id><published>2011-03-06T17:16:00.001+01:00</published><updated>2011-03-06T17:16:18.437+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Pack'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Cumulative Update'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><title type='text'>Installing updates for SharePoint 2010 and Project Server 2010</title><content type='html'>&lt;p&gt;&lt;em&gt;updating a SharePoint and Project Server 2010 farm is pretty straightforward. Nevertheless, this is a question that comes every time I’m meeting a new customer. This blog post describes the different types of updates available for these products and which steps you have to follow if you want to execute them.&lt;/em&gt;&lt;/p&gt; &lt;h2&gt;Types of updates and considerations before you start updating&lt;/h2&gt; &lt;p&gt;SharePoint 2010 (Foundation and Server) and Project Server 2010 have three different types of updates:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;hotfix: is an update package provided by Microsoft to solve an issue of one of the products.  &lt;li&gt;cumulative update: is usually the collection of hotfixes since the last cumulative update or product release. As the name implies, these updates are cumulative and must not be installed one after the other. It is enough if you install the last cumulative update for the product you have to update. SharePoint and Project Server cumulative updates are published periodically every two months.  &lt;li&gt;service pack: contains the collection of cumulative updates since the last service pack or release of the product. A service pack might also provide enhanced functionalities to the product you are updating.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;: follow &lt;/em&gt;&lt;a href="http://patricklamber.blogspot.com/2011/01/sharepoint-server-2010-and-project.html" target="_blank"&gt;&lt;em&gt;this&lt;/em&gt;&lt;/a&gt;&lt;em&gt; link if you are interested in the list of updates for SharePoint 2010 (Foundation and Server) and Project Server 2010&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Before starting the update process make some considerations and prepare the update process thoughtfully: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;update your system if really necessary when choosing hotfixes or cumulative updates. This is something different when a service pack is released. Try to avoid too long waiting times for updating service packs. &lt;li&gt;calculate a downtime for your system when executing updates &lt;li&gt;check the KB articles associated to your update before starting the procedure  &lt;li&gt;try the updates on a test farm before installing them on a productive environment  &lt;li&gt;backup your system and be prepared for a disaster recovery  &lt;li&gt;wait some time and check the blog posts of SharePoint experts to see if there are known issues after the update (e.g., see the October 2010 cumulative update on this &lt;a href="http://blogs.msdn.com/b/ahmad_adainat/archive/2010/11/07/critical-information-about-the-sharepoint-server-2010-october-cu.aspx" target="_blank"&gt;blog&lt;/a&gt;)  &lt;li&gt;slipstream your SharePoint installation discs to keep them up-to-date. A blog post will follow and explain how to slipstream a SharePoint disk  &lt;li&gt;test your system after applying the updates&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;The update process&lt;/h2&gt; &lt;p&gt;After you have chosen the update right for you and you prepared the update process, follow these steps to execute the updates:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Installing a SharePoint 2010 product family update is very straightforward. The steps that you have to follow usually are:choose the update package is best suited for your platform. Please note that there are different update packages that are either addressing a single product or several products. You can check my &lt;a href="http://patricklamber.blogspot.com/2011/01/sharepoint-server-2010-and-project.html" target="_blank"&gt;last blog post&lt;/a&gt; to get the updated list of cumulative updates and service packs for SharePoint 2010 and Project Server 2010. In &lt;a href="http://patricklamber.blogspot.com/2011/01/sharepoint-server-2010-and-project.html" target="_blank"&gt;that&lt;/a&gt; blog post you find the updates organized as follows:&amp;nbsp;&amp;nbsp; &lt;ul&gt; &lt;li&gt;SharePoint Foundation 2010: if you have only SharePoint Foundation 2010 installed  &lt;li&gt;SharePoint Server 2010: if you have SharePoint Server 2010 installed. Please note that you don’t have to install the cumulative update of SharePoint Foundation 2010  &lt;li&gt;SharePoint Server 2010 and Project Server 2010: if you have SharePoint Server 2010 with Project Server 2010 use this package.&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;download the update package &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;: cumulative updates must be requested explicitly. After this request you will receive an e-mail with the download link for the cumulative update and a password needed to extract the binaries from the cumulative update.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;The update is executed in two steps. First, you have to install the binary files and then execute the automatic server configuration.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;install the cumulative update or service pack on each web-front end and application server of your farm and do not execute the &lt;em&gt;&lt;strong&gt;SharePoint Configuration Wizard&lt;/strong&gt;&lt;/em&gt;  &lt;li&gt;after you finished installing all the updates you have to start the &lt;strong&gt;&lt;em&gt;SharePoint Configuration Wizard&lt;/em&gt;&lt;/strong&gt;. &lt;strong&gt;Start it on the server having the central administration instance first.&lt;/strong&gt; If you have only one server in the farm, then you are done. If you have multiple servers on the farm than execute the &lt;strong&gt;&lt;em&gt;SharePoint Configuration Wizard&lt;/em&gt;&lt;/strong&gt; on each web-front end and application sever.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-4745329281025452801?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/4745329281025452801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/03/installing-updates-for-sharepoint-2010.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4745329281025452801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4745329281025452801'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/03/installing-updates-for-sharepoint-2010.html' title='Installing updates for SharePoint 2010 and Project Server 2010'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-4862307221785456521</id><published>2011-02-20T12:16:00.001+01:00</published><updated>2011-02-20T12:16:21.101+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Talking at the Microsoft SharePoint &amp; Office Conference 2011 in Italy</title><content type='html'>&lt;p&gt;I’m going to hold a session with a colleague about Enterprise Project Management and SharePoint 2010 at the &lt;a href="http://www.sharepointconference.it/events/2011/default.aspx" target="_blank"&gt;Microsoft SharePoint &amp;amp; Office Conference 2011&lt;/a&gt; in Milan (Italy) on April, 19th. I got the confirmation from the conference responsible some weeks ago. &lt;/p&gt; &lt;p&gt;We are really excited in getting such a great opportunity to give our contribution to the SharePoint and Project community in Italy. Follow &lt;a href="http://www.sharepointconference.it/events/2011/agenda.aspx" target="_blank"&gt;this&lt;/a&gt; link if you are interested in the agenda of this conference.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope to see you there,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-4862307221785456521?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/4862307221785456521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/02/talking-at-microsoft-sharepoint-office.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4862307221785456521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4862307221785456521'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/02/talking-at-microsoft-sharepoint-office.html' title='Talking at the Microsoft SharePoint &amp;amp; Office Conference 2011 in Italy'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-9212500911854190757</id><published>2011-02-12T12:25:00.001+01:00</published><updated>2011-02-12T12:25:07.952+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='managed metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='content types'/><category scheme='http://www.blogger.com/atom/ns#' term='Walkthrough'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='content type hub'/><category scheme='http://www.blogger.com/atom/ns#' term='wal'/><title type='text'>How do I work with the Content Type Hub feature of the managed metadata service application?</title><content type='html'>&lt;p&gt;in the last post of the post series &lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;managed metadata service application&lt;/a&gt; we are going to touch a new SharePoint 2010 feature called content type hub. We are going to see what it is and how to configure it in your SharePoint farm. &lt;/p&gt; &lt;h2&gt;Overview&lt;/h2&gt; &lt;p&gt;In SharePoint 2007 it was impossible to have content types shared among different site collections without custom code. Fortunately, this situation changed in SharePoint 2010 by introducing the content type hub functionality provided with the managed metadata service application. The basic idea is to provide a source site collection (hub) with content types that are going to be published on all site collections that are connected with the managed service application hosting the hub. You have one content type hub association with one metadata service application. Nevertheless, you might have multiple managed metadata service applications with different content type hubs in one farm.&lt;/p&gt; &lt;p&gt;This post tries to give you an overview about this feature by following these topics:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;How do I set-up a content type hub?  &lt;li&gt;How do I synchronize content types with other site collections? &lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&lt;font color="#222222"&gt;&lt;/font&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;How do I set-up a content type hub?&lt;/h2&gt; &lt;p&gt;As already mentioned before the content type hub is a site collection in a web application that will be used as a source to synchronize its content types with other site collections in the farm. The link between the source site collection and the target sites is provided by the managed metadata service application that hosts the content type hub. Creating a content type hub is really simple. You simply need to follow the next steps:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;locate the source site collection URL you want to associate or create a new one  &lt;li&gt;go to the central admin  &lt;li&gt;&lt;strong&gt;Application Management &lt;/strong&gt;–&amp;gt; &lt;strong&gt;Manage service applications&lt;/strong&gt; –&amp;gt; select the managed metadata service application that should host the hub (note: click near to the name to select it)  &lt;li&gt;select on the same page on the ribbon bar the button &lt;strong&gt;Properties&lt;/strong&gt;  &lt;li&gt;go to the bottom of the configuration page and you should find the label &lt;strong&gt;Content Type hub&lt;/strong&gt;. Put there the URL of the site collection you would like to use. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;&lt;a href="http://lh4.ggpht.com/_3lC_bucoo88/TVZt-zPqDnI/AAAAAAAAAWU/cjRpxjqAXi8/s1600-h/managed023.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="managed02" border="0" alt="managed02" src="http://lh5.ggpht.com/_3lC_bucoo88/TVZt_jjsq3I/AAAAAAAAAWY/ucIqjPXLINg/managed02_thumb1.png?imgmax=800" width="404" height="324"&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;press &lt;strong&gt;OK&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;em&gt;Note: you can’t remove a content type hub association in the central administration.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Finally, you have to ensure that the managed metadata service application proxy has the property &lt;strong&gt;Consumes content type from the Content Type Gallery …..&lt;/strong&gt;. (see next figure – You find the managed metadata service application proxy under the central admin in the location &lt;strong&gt;Application Management &lt;/strong&gt;–&amp;gt; &lt;strong&gt;Manage service applications&lt;/strong&gt;).&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TVZuAAPSlgI/AAAAAAAAAWc/sJXVST3lEYY/s1600-h/image%5B4%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_3lC_bucoo88/TVZuAsD9YXI/AAAAAAAAAWg/IkOJZDbZhQc/image_thumb%5B1%5D.png?imgmax=800" width="404" height="179"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;With these simple steps we associated a site collection as content type hub to our managed metadata service application. You can make more verifications to see if everything is configured as expected.&lt;/p&gt; &lt;p&gt;In the site collection that acts as content type hub go to see if the site collection feature &lt;strong&gt;Content Type Syndication Hub&lt;/strong&gt; is activated (log in on your site collection –&amp;gt; &lt;strong&gt;Site Actions –&amp;gt; Site Settings –&amp;gt; Site collection features&lt;/strong&gt;):&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TVZuAyxxfJI/AAAAAAAAAWk/VoY2zTnfAlw/s1600-h/image3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_3lC_bucoo88/TVZuBWJk_7I/AAAAAAAAAWo/M9aSN2VSq7M/image_thumb1.png?imgmax=800" width="404" height="71"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;At the same time you should see multiple timer jobs created in your farm:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;one &lt;strong&gt;Content Type Hub&lt;/strong&gt; job&lt;/li&gt; &lt;li&gt;multiple &lt;strong&gt;Content Type Hub Subscriber&lt;/strong&gt; jobs (one for each web application consuming the managed metadata service application)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;You can verify it by going in the central admin under &lt;strong&gt;Monitoring –&amp;gt; Review job definitions&lt;/strong&gt;. See the next figure how it looks like in my test farm: &lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TVZuBjAwMxI/AAAAAAAAAWs/zkuzY-08we8/s1600-h/image%5B8%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_3lC_bucoo88/TVZuCTol5FI/AAAAAAAAAWw/AvNvycYcaac/image_thumb%5B3%5D.png?imgmax=800" width="404" height="56"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Both jobs are responsible for the synchronization process. The first one to define the content types that are going to be published and the second one to consumes and synchronizes them with the site collections associated to the web application.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Note: you can change the job schedules if you want to speed up the content type synchronization or an administrator might execute the jobs whenever needed.&lt;/em&gt;&lt;/p&gt; &lt;h2&gt;How do I synchronize content types with other site collections?&lt;/h2&gt; &lt;p&gt;After the creation of the connection between content type hub and site collection we are going to create our content types as we are used to (&lt;strong&gt;Site Actions&lt;/strong&gt; –&amp;gt; &lt;strong&gt;Site Settings&lt;/strong&gt; –&amp;gt; &lt;strong&gt;Site Content Types&lt;/strong&gt;). I created for example a new content type called &lt;strong&gt;Test Content Type &lt;/strong&gt;with two site columns (see next figure).&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_3lC_bucoo88/TVZuCipX9HI/AAAAAAAAAW0/x17RHXa6R-0/s1600-h/image7.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_3lC_bucoo88/TVZuDG_dyyI/AAAAAAAAAW4/uFrdoqpZNr4/image_thumb3.png?imgmax=800" width="404" height="284"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Defining a content type in a content type hub does not mean that it is going to be published immediately. You have to specify if the content type should be published or not. You can do this under the newly added option &lt;strong&gt;Manage publishing for this content type &lt;/strong&gt;in your content type settings (see the figure above)&lt;strong&gt;. &lt;/strong&gt;If you go there you will see a screen similar to the next one:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TVZuDdH9euI/AAAAAAAAAW8/4J_5EFHa8v8/s1600-h/image11.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_3lC_bucoo88/TVZuD7kM-II/AAAAAAAAAXA/63ak0BeumVI/image_thumb5.png?imgmax=800" width="404" height="222"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The options available for a content type publication are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Publish: this option is provided when you publish the content type hub for the first time. &lt;em&gt;Note: publishing does not mean that it is going to be published immediately. You have to wait for the&lt;strong&gt; Content Type &lt;/strong&gt;and &lt;strong&gt;Content Type Subscriber &lt;/strong&gt;jobs or execute them manually.&lt;/em&gt;  &lt;li&gt;Unpublish: the content type is becoming unavailable for synchronization. &lt;em&gt;Note: this does not remove the content type on the consumer site. The consumer site receives a local copy of the content type that was unpublished.&lt;strong&gt; &lt;/strong&gt;&lt;/em&gt; &lt;li&gt;Republish: if you made changes to this content type and you want to synchronize them, then you have to republish it with this option&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;In our case the content type was never published (you can see this in the &lt;strong&gt;Publishing History&lt;/strong&gt; in the screen above), therefore, we are going to leave the option as it is and press &lt;strong&gt;OK.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;After the execution of the &lt;strong&gt;Content Type &lt;/strong&gt;and &lt;strong&gt;Content Type Subscriber&lt;/strong&gt; jobs you should see the newly published content type on one of the subscribe sites.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/TVZuEQcCsfI/AAAAAAAAAXE/7WmGTemoXQs/s1600-h/image19.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_3lC_bucoo88/TVZuE-8PnmI/AAAAAAAAAXM/M4BP9WtdxWk/image_thumb9.png?imgmax=800" width="404" height="66"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2&gt;Summary&lt;/h2&gt; &lt;p&gt;The content type hubs are a great simplification of our daily work if you need to provide enterprise wide content type synchronization. In this blog post we saw how you might configure the content type hub and associate it to a managed metadata service application. In addition, we saw how the synchronization process of this content type hubs work. &lt;/p&gt; &lt;p&gt;That is all for now. This is the last blog post about the managed metadata service applications post series. I hope that you enjoyed it.&lt;/p&gt; &lt;p&gt;Stay tuned,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-9212500911854190757?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/9212500911854190757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/02/how-do-i-work-with-content-type-hub.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/9212500911854190757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/9212500911854190757'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/02/how-do-i-work-with-content-type-hub.html' title='How do I work with the Content Type Hub feature of the managed metadata service application?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_3lC_bucoo88/TVZt_jjsq3I/AAAAAAAAAWY/ucIqjPXLINg/s72-c/managed02_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-1668304408578325706</id><published>2011-01-29T09:27:00.001+01:00</published><updated>2011-01-29T09:27:08.722+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Walkthrough'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><title type='text'>Assigning a managed term set to a custom column</title><content type='html'>&lt;p&gt;&lt;em&gt;In the &lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;last posts&lt;/a&gt; we created a managed metadata service application and a term store with &lt;a href="http://patricklamber.blogspot.com/2011/01/creating-term-store-example-with-term.html" target="_blank"&gt;sample data&lt;/a&gt;. Our term store was assigned to a web application that contains one site collection. In this post we are going to see how to use the data in your &lt;a href="http://patricklamber.blogspot.com/2011/01/creating-term-store-example-with-term.html" target="_blank"&gt;sample term store&lt;/a&gt; in a managed metadata column added to a SharePoint document library.&lt;/em&gt;&lt;/p&gt; &lt;h2&gt;Overview&lt;/h2&gt; &lt;p&gt;SharePoint 2010 uses the managed metadata service application to provide organization wide values for following scenarios:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Use enterprise keywords and tagging functionalities for your farm &lt;li&gt;Define a taxonomy and use it within metadata columns in a SharePoint list and library&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;In this post we are showing the last of two scenarios. Find more information on how to enable the enterprise keywords on &lt;a href="http://geeksthenewblack.wordpress.com/2010/05/26/enable-enterprise-keywords-column-in-a-blank-site/" target="_blank"&gt;this&lt;/a&gt; post. Finally, find here a TechNet &lt;a href="http://technet.microsoft.com/en-us/library/ff608137.aspx" target="_blank"&gt;article&lt;/a&gt; that introduces the social tagging features if you are interested in the first scenario.&lt;/p&gt; &lt;h2&gt;Prerequisites&lt;/h2&gt; &lt;p&gt;Before we are going to enable a metadata column we have to follow these prerequisites:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;you are using at least SharePoint 2010 Standard&lt;/li&gt; &lt;li&gt;you already created a managed metadata service application and assigned it to the web application you are going to use&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;If you need help in setting up a managed metadata service application and create a taxonomy, then follow my &lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;previous posts&lt;/a&gt;.&lt;/p&gt; &lt;h2&gt;Creating a managed metadata column on a list/library&lt;/h2&gt; &lt;p&gt;In this demonstration I already created a new document library. This document library is going to be extended with a managed metadata column that contains the different departments in our organization (check the sample term store in my &lt;a href="http://patricklamber.blogspot.com/2011/01/creating-term-store-example-with-term.html" target="_blank"&gt;previous post&lt;/a&gt;). The aim of this customization is to associate a single document with a department. The steps that I followed are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;In the document library go to &lt;strong&gt;Library –&amp;gt; Create Column &lt;/strong&gt;(you can access the columns also under &lt;strong&gt;Library –&amp;gt; Library Settings&lt;/strong&gt;)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TUPPRtOLbiI/AAAAAAAAAVo/ox-OtfsNDdI/s1600-h/man023.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="man02" border="0" alt="man02" src="http://lh3.ggpht.com/_3lC_bucoo88/TUPPSDZXSUI/AAAAAAAAAVs/WySeqNAbBlo/man02_thumb1.png?imgmax=800" width="404" height="89"&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;the window &lt;strong&gt;Create Column&lt;/strong&gt; pops up  &lt;li&gt;Define as column name &lt;strong&gt;Department &lt;/strong&gt;(the name of the column can be freely defined)  &lt;li&gt;select as type &lt;strong&gt;Managed Metadata&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_3lC_bucoo88/TUPPS3s1QBI/AAAAAAAAAVw/e2RaefrMvyE/s1600-h/man033.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="man03" border="0" alt="man03" src="http://lh3.ggpht.com/_3lC_bucoo88/TUPPTuuZuTI/AAAAAAAAAV0/617rYUwlYBc/man03_thumb1.png?imgmax=800" width="404" height="657"&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;the &lt;strong&gt;Create column &lt;/strong&gt;window refreshes and provides you the last settings below  &lt;li&gt;Select Use a managed term set and select the &lt;strong&gt;Departments &lt;/strong&gt;term set (alternatively you can use the &lt;strong&gt;Customize your term set&lt;/strong&gt; option. This option permits you to manage your term set only for a single site collection. It is not shared to other site collections and not used in the enterprise keywords.)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TUPPURfSlLI/AAAAAAAAAV4/apJZg_3EGuk/s1600-h/man043.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="man04" border="0" alt="man04" src="http://lh5.ggpht.com/_3lC_bucoo88/TUPPU1-e6DI/AAAAAAAAAV8/VLEyJl4CtYU/man04_thumb1.png?imgmax=800" width="404" height="553"&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Press &lt;strong&gt;OK&lt;/strong&gt; and you added your managed metadata column&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;Note: you can maintain the column afterwards by making your changes under Library –&amp;gt; Library Settings under library columns.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Finally, we only need to test our changes by uploading a test document. Press the upload button of the document library and choose a file. Afterwards, you should see the managed metadata column as document property displayed before finishing the upload.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TUPPVbIAwbI/AAAAAAAAAWA/INbNthwznqA/s1600-h/man073.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="man07" border="0" alt="man07" src="http://lh6.ggpht.com/_3lC_bucoo88/TUPPV1rDvpI/AAAAAAAAAWE/PhyTMnjKT4o/man07_thumb1.png?imgmax=800" width="404" height="251"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The managed metadata column provides you a selection button on the right side of the text box (the two small labels). You can either insert directly the term in the text box or choose from the selection button. If you do latter, a new window will pop up with the definition of the departments of our managed metadata service application.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_3lC_bucoo88/TUPPWfJ7VrI/AAAAAAAAAWI/pNdoYah1aNE/s1600-h/man063.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="man06" border="0" alt="man06" src="http://lh5.ggpht.com/_3lC_bucoo88/TUPPW20mcNI/AAAAAAAAAWM/uJu3xcSWQoo/man06_thumb1.png?imgmax=800" width="404" height="429"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2&gt;&lt;font color="#222222"&gt;Summary&lt;/font&gt;&lt;/h2&gt; &lt;p&gt;In this post you saw how to create a managed metadata custom column on a SharePoint document library. This metadata column uses the sample data of our managed metadata service application. This is the last post about the term set and managed metadata service applications. In the next and last post of this &lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;post series&lt;/a&gt; we are going to see the last feature of this service application… the content type hub.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-1668304408578325706?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/1668304408578325706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/01/assigning-managed-term-set-to-custom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/1668304408578325706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/1668304408578325706'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/01/assigning-managed-term-set-to-custom.html' title='Assigning a managed term set to a custom column'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_3lC_bucoo88/TUPPSDZXSUI/AAAAAAAAAVs/WySeqNAbBlo/s72-c/man02_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-5035850487209593627</id><published>2011-01-26T18:01:00.001+01:00</published><updated>2011-01-26T18:01:24.137+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Applications'/><category scheme='http://www.blogger.com/atom/ns#' term='Walkthrough'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><title type='text'>How do I manage my taxonomy in the term store management tool?</title><content type='html'>&lt;p&gt;&lt;em&gt;In this blog post of the &lt;/em&gt;&lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;&lt;em&gt;post series&lt;/em&gt;&lt;/a&gt;&lt;em&gt; about the managed metadata service application we are finishing our journey on the term store management tool and see what operations are available to maintain our taxonomy in the term store.&lt;/em&gt;&lt;/p&gt; &lt;h2&gt;Overview&lt;/h2&gt; &lt;p&gt;In our &lt;a href="http://patricklamber.blogspot.com/2011/01/creating-term-store-example-with-term.html" target="_blank"&gt;last post&lt;/a&gt; we saw how to setup a simple taxonomy with the term store management tool. Naturally, we cannot pretend that the initially defined taxonomy remains unchanged forever. Because of that, we need some operations on the different terms that help us to better manage the future changes and new scenarios that we are going to encounter. For the sake of our sample let us recap the taxonomy that we already used in our examples so far.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TUBTXBm05fI/AAAAAAAAAVY/Dr1gZr_CQNI/s1600-h/image3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_3lC_bucoo88/TUBTXs-CFoI/AAAAAAAAAVc/DPd1EOR-Yyk/image_thumb1.png?imgmax=800" width="404" height="501"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;You can execute a set of operations on each single term in this taxonomy. You can see the list of operations when you click on the black arrow on the right side of the term (try to however over the term. If you still can’t see it than you probably do not have enough privileges to work with the term store. Check &lt;a href="http://patricklamber.blogspot.com/2011/01/creating-term-store-example-with-term.html" target="_blank"&gt;my last&lt;/a&gt; post for more information). You should see the operations listed in the next figure when you click on the black arrow:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/TUBTYErFRFI/AAAAAAAAAVg/aAKgFb1iNck/s1600-h/man013.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="man01" border="0" alt="man01" src="http://lh3.ggpht.com/_3lC_bucoo88/TUBTYyoj6aI/AAAAAAAAAVk/sKpb8y--faI/man01_thumb1.png?imgmax=800" width="404" height="421"&gt;&lt;/a&gt;&lt;/p&gt;   &lt;p&gt;In the next sections we are going to describe the different operations and when to use them.&lt;/p&gt; &lt;h2&gt;Operation: Create term&lt;/h2&gt; &lt;p&gt;Use this operation if you want to create a new sub-term under the selected term. We already used it more than once in our &lt;a href="http://patricklamber.blogspot.com/2011/01/creating-term-store-example-with-term.html" target="_blank"&gt;last post&lt;/a&gt; to create the taxonomy. &lt;/p&gt; &lt;p&gt;If we take our example we used the create term operation under &lt;strong&gt;Information &amp;amp; Technology&lt;/strong&gt; three times:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Administration&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Quality Assurance&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Software Development&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Note: you can have a maximum number of 7 nested terms in your term set (check &lt;/em&gt;&lt;/strong&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc262787.aspx" target="_blank"&gt;&lt;strong&gt;&lt;em&gt;this&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;em&gt; TechNet article with information about this and other limitations in SharePoint 2010).&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;h2&gt;Operation: Copy Term&lt;/h2&gt; &lt;p&gt;Use the copy term operation if you want to create a separate copy of a term in another location. If you make changes on the copied term, these changes are not reflected on the original term. &lt;/p&gt; &lt;h2&gt;Operation: Reuse term&lt;/h2&gt; &lt;p&gt;The reuse term is also used to make a copy of a term on a different location of the term set. On the other hand, every change that you are performing on the copy or the original term is applied automatically on both sides. Such an operation is useful if you have to classify a term in your term store for different locations and want to maintain only one copy of this term.&lt;/p&gt; &lt;h2&gt;&lt;font color="#222222"&gt;Operation: &lt;/font&gt;Merge term&lt;/h2&gt; &lt;p&gt;Use the merge term operation if you want to merge a term and all its synonyms into another term. The source term and its synonyms are becoming synonyms for the target term.&lt;/p&gt; &lt;p&gt;This operation could be useful if you want to merge two departments into a single one.&lt;/p&gt; &lt;h2&gt;Operation: Deprecate term&lt;/h2&gt; &lt;p&gt;Terms flagged as deprecated cannot be used anymore by our end-users for tagging or metadata columns. The items that where already tagged remain unchanged. You can reactivate the term after deprecation if necessary.&lt;/p&gt; &lt;h2&gt;Operation: Move term&lt;/h2&gt; &lt;p&gt;The move operation is used to change the location of the term you want to move. &lt;/p&gt; &lt;h2&gt;Operation: Delete term&lt;/h2&gt; &lt;p&gt;Deleting a term removes it completely from the store. Please note that there is no recycle bin for the terms. All child terms of the deleted term are moved to a special folder called &lt;strong&gt;orphaned terms&lt;/strong&gt;. All tagged items associated to the deleted term are marked as invalid when you try to modify them.&lt;/p&gt; &lt;h2&gt;Summary&lt;/h2&gt; &lt;p&gt;In this blog post we got a description of the different term store operations available to maintain our term store. Slowly we are coming to the end of our managed metadata service application &lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;blog post series&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Stay tuned,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-5035850487209593627?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/5035850487209593627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/01/how-do-i-manage-my-taxonomy-in-term.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5035850487209593627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5035850487209593627'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/01/how-do-i-manage-my-taxonomy-in-term.html' title='How do I manage my taxonomy in the term store management tool?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_3lC_bucoo88/TUBTXs-CFoI/AAAAAAAAAVc/DPd1EOR-Yyk/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-5399567309992646393</id><published>2011-01-22T08:47:00.001+01:00</published><updated>2011-05-31T17:39:23.896+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maintainance'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Cumulative Update'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Update'/><title type='text'>SharePoint Server 2010 and Project Server 2010 update packages</title><content type='html'>&lt;p&gt;&lt;em&gt;The idea of this blog post is to document for my customers and for me the different updates (cumulative updates and service packs) that are available for SharePoint Foundation 2010, SharePoint Server 2010 and Project Server 2010. I’m going to update this blog post in future so just make a bookmark if you want to have the latest updates about this platform.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; follow &lt;a href="http://patricklamber.blogspot.com/2011/03/installing-updates-for-sharepoint-2010.html" target="_blank"&gt;this&lt;/a&gt; blog post if you want to know the steps to perform an update on SharePoint 2010 or Project Server 2010.&lt;/em&gt;&lt;/p&gt; &lt;h2&gt;&lt;font color="#222222"&gt;Outline&lt;/font&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;April 2011 cumulative update &lt;li&gt;February 2011 cumulative update  &lt;li&gt;December 2010 cumulative update  &lt;li&gt;October 2010 cumulative update  &lt;li&gt;August 2010 cumulative update  &lt;li&gt;June 2010 cumulative update&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;April 2011 Cumulative Update&lt;/h2&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="500"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="347"&gt;&lt;strong&gt;Platform&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="85"&gt;&lt;strong&gt;KB&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="347"&gt;SharePoint Foundation 2010&lt;/td&gt; &lt;td valign="top" width="85"&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2512804"&gt;KB 2512804&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=en-us&amp;amp;kbnum=2512804" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="347"&gt;SharePoint Server 2010&lt;/td&gt; &lt;td valign="top" width="85"&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2512800"&gt;KB 2512800&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=en-us&amp;amp;kbnum=2512800" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="347"&gt;SharePoint Server 2010 and Project Server 2010&lt;/td&gt; &lt;td valign="top" width="85"&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2512801"&gt;KB 2512801&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=en-us&amp;amp;kbnum=2512801" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h2&gt;&lt;/h2&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="497"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="346"&gt;&lt;strong&gt;Platform&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="83"&gt;&lt;strong&gt;KB&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="66"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="346"&gt;Project 2010 Client Updates&lt;/td&gt; &lt;td valign="top" width="83"&gt;&lt;a href="http://support.microsoft.com/kb/2516479" target="_blank"&gt;KB 2516479&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="66"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2516479&amp;amp;kb" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;February 2011 Cumulative Update&lt;/h2&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="500"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="347"&gt;&lt;strong&gt;Platform&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="85"&gt;&lt;strong&gt;KB&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="347"&gt;SharePoint Foundation 2010&lt;/td&gt; &lt;td valign="top" width="85"&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2475880"&gt;KB 2475880&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=en-us&amp;amp;kbnum=2475880" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="347"&gt;SharePoint Server 2010&lt;/td&gt; &lt;td valign="top" width="85"&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2475878"&gt;KB 2475878&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=en-us&amp;amp;kbnum=2475878" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="347"&gt;SharePoint Server 2010 and Project Server 2010&lt;/td&gt; &lt;td valign="top" width="85"&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2475879"&gt;KB 2475879&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=en-us&amp;amp;kbnum=2475879" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;&lt;em&gt;Note: seems that the above KB links are not functioning properly. This might be a temporary issue.&lt;/em&gt;&lt;/h2&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="497"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="346"&gt;&lt;strong&gt;Platform&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="83"&gt;&lt;strong&gt;KB&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="66"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="346"&gt;Project 2010 Client Updates&lt;/td&gt; &lt;td valign="top" width="83"&gt;&lt;a href="http://support.microsoft.com/kb/2496946" target="_blank"&gt;KB 2496946&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="66"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2496946" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;December 2010 cumulative update&lt;/h2&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="500"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="347"&gt;&lt;strong&gt;Platform&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="85"&gt;&lt;strong&gt;KB&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="347"&gt;SharePoint Foundation 2010&lt;/td&gt; &lt;td valign="top" width="85"&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2459125"&gt;KB 2459125&lt;/a&gt; &lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=en-us&amp;amp;kbnum=2459125" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="347"&gt;SharePoint Server 2010&lt;/td&gt; &lt;td valign="top" width="85"&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2459257"&gt;KB 2459257&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=en-us&amp;amp;kbnum=2459257" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="347"&gt;SharePoint Server 2010 and Project Server 2010&lt;/td&gt; &lt;td valign="top" width="85"&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2459258"&gt;KB 2459258&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=en-us&amp;amp;kbnum=2459258" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="497"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="346"&gt;&lt;strong&gt;Platform&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="83"&gt;&lt;strong&gt;KB&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="66"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="346"&gt;Project 2010 Client Updates&lt;/td&gt; &lt;td valign="top" width="83"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="66"&gt;No Update&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;October 2010 cumulative update&lt;/h2&gt; &lt;p&gt;In the first release of the October 2010 cumulative update &lt;a href="http://blogs.msdn.com/b/ahmad_adainat/archive/2010/11/07/critical-information-about-the-sharepoint-server-2010-october-cu.aspx" target="_blank"&gt;Microsoft discovered a critical issue&lt;/a&gt;. The cumulative update was removed by Microsoft after some days from the downloads. After some weeks they solved the issues and put a new cumulative update version for October 2010. You find these links below.&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="497"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;&lt;strong&gt;Platform&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="77"&gt;&lt;strong&gt;KB&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="73"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;SharePoint Foundation 2010&lt;/td&gt; &lt;td valign="top" width="77"&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2394323" target="_blank"&gt;KB 2394323&lt;/a&gt; &lt;/td&gt; &lt;td valign="top" width="73"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=en-us&amp;amp;kbnum=2394323" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;SharePoint Server 2010&lt;/td&gt; &lt;td valign="top" width="77"&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;2394320" target="_blank"&gt;KB 2394320&lt;/a&gt; &lt;/td&gt; &lt;td valign="top" width="73"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=en-us&amp;amp;kbnum=2394320" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;SharePoint Server 2010 and Project Server 2010&lt;/td&gt; &lt;td valign="top" width="77"&gt;&lt;a href="http://support.microsoft.com/kb/2394322" target="_blank"&gt;KB 2394322&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="73"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=en-us&amp;amp;kbnum=2394322" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="497"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;&lt;strong&gt;Platform&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="77"&gt;&lt;strong&gt;KB&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="73"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;Project 2010 Client Updates&lt;/td&gt; &lt;td valign="top" width="77"&gt;&lt;a href="http://support.microsoft.com/kb/2413663" target="_blank"&gt;KB 2413663&lt;/a&gt; &lt;/td&gt; &lt;td valign="top" width="73"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2413663&amp;amp;kbln=en-us" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;August 2010 Cumulative Update&lt;/h2&gt; &lt;p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="494"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;&lt;strong&gt;Platform&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="76"&gt;&lt;strong&gt;KB&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="71"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;SharePoint Foundation 2010&lt;/td&gt; &lt;td valign="top" width="76"&gt;&lt;a href="http://support.microsoft.com/kb/2266423" target="_blank"&gt;KB 2266423&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="71"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2266423&amp;amp;kbln=en-us" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;SharePoint Server 2010&lt;/td&gt; &lt;td valign="top" width="76"&gt;&lt;a href="http://support.microsoft.com/kb/2352342" target="_blank"&gt;KB 2352342&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="71"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=en-us&amp;amp;kbnum=2352342" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;SharePoint Server 2010 and Project Server 2010&lt;/td&gt; &lt;td valign="top" width="76"&gt;&lt;a href="http://support.microsoft.com/kb/2352345" target="_blank"&gt;KB 2352345&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="71"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2352345&amp;amp;kbln=en-us" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="497"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;&lt;strong&gt;Platform&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="77"&gt;&lt;strong&gt;KB&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="73"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;Project 2010 Client Updates&lt;/td&gt; &lt;td valign="top" width="77"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="73"&gt;No Update&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;June 2010 Cumulative update&lt;/h2&gt; &lt;p&gt;Please note that this cumulative update was not provided as a server package. Therefore follow the links and this &lt;a href="http://blogs.technet.com/b/stefan_gossner/archive/2010/07/22/the-first-cumulative-update-for-sharepoint-2010-family-has-been-released.aspx" target="_blank"&gt;post&lt;/a&gt;.&lt;/p&gt; &lt;p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="494"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;&lt;strong&gt;Platform&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="80"&gt;&lt;strong&gt;KB&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;SharePoint Foundation 2010&lt;/td&gt; &lt;td valign="top" width="80"&gt;&lt;a href="http://support.microsoft.com/kb/2028568" target="_blank"&gt;KB 2028568&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2028568&amp;amp;kbln=en-us" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;SharePoint Server 2010&lt;/td&gt; &lt;td valign="top" width="80"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;a href="http://blogs.technet.com/b/stefan_gossner/archive/2010/07/22/the-first-cumulative-update-for-sharepoint-2010-family-has-been-released.aspx" target="_blank"&gt;Check here&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;Project Server 2010&lt;/td&gt; &lt;td valign="top" width="80"&gt;&lt;a href="http://support.microsoft.com/kb/2075990" target="_blank"&gt;KB 2075990&lt;/a&gt; &lt;/td&gt; &lt;td valign="top" width="67"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2075990&amp;amp;kbln=en-us" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="497"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;&lt;strong&gt;Platform&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="77"&gt;&lt;strong&gt;KB&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="73"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="345"&gt;Project 2010 Client Updates&lt;/td&gt; &lt;td valign="top" width="77"&gt;&lt;a href="http://support.microsoft.com/kb/2075992" target="_blank"&gt;KB 2075992&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="73"&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2075992&amp;amp;kbln=en" target="_blank"&gt;Download&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-5399567309992646393?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/5399567309992646393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/01/sharepoint-server-2010-and-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5399567309992646393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5399567309992646393'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/01/sharepoint-server-2010-and-project.html' title='SharePoint Server 2010 and Project Server 2010 update packages'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-6285528384555020595</id><published>2011-01-22T07:01:00.001+01:00</published><updated>2011-01-22T07:47:13.771+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='System architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Service Applications'/><category scheme='http://www.blogger.com/atom/ns#' term='Walkthrough'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>Creating the term store example with the term store management tool</title><content type='html'>&lt;p&gt;&lt;em&gt;This post continues the journey of our post series &lt;/em&gt;&lt;em&gt;“&lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;SharePoint 2010: exploring the managed metadata service application&lt;/a&gt;”. We are going to see how to work with the term store management tool and create the example term store that was shown in the last posts of &lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;this series&lt;/a&gt;. In the next posts we are going to see how to manage these terms and make taxonomy and folksonomy modifications. &lt;/em&gt;&lt;/p&gt; &lt;h2&gt;Overview&lt;/h2&gt; &lt;p&gt;This post guides you in creating a sample taxonomy with the term store management tool. The requirements for this post are a created managed metadata service application (see &lt;a href="http://patricklamber.blogspot.com/2010/12/how-do-i-create-new-managed-metadata.html" target="_blank"&gt;my post&lt;/a&gt; if you need help in doing this). &lt;/p&gt; &lt;p&gt;First of all, we are going to grant us the necessary permissions for working with the term store management tool. We are going to grant us the term store administrator role (see &lt;a href="http://patricklamber.blogspot.com/2010/12/how-is-managed-metadata-term-store.html" target="_blank"&gt;my post&lt;/a&gt; if you don’t know the available managed metadata roles). Second, we are able to create our taxonomy shown in the next figure in the term store management tool.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TTpyrh12k4I/AAAAAAAAAUg/rMuI9RXc1jU/s1600-h/image7.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_3lC_bucoo88/TTpyseaiY3I/AAAAAAAAAUk/vjRYLyUmb5Q/image_thumb2.png?imgmax=800" width="404" height="504"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;To sum up the steps are as follows:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Step 1: grant the term store administration permissions to a user  &lt;li&gt;Step 2: create the taxonomy with the term store administrator&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Step 1: grant the term store administration permissions to a user&lt;/h2&gt; &lt;p&gt;The last &lt;a href="http://patricklamber.blogspot.com/2010/12/how-is-managed-metadata-term-store.html" target="_blank"&gt;post&lt;/a&gt; of &lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;this series&lt;/a&gt; described the different roles that are available for managing the term store with the term store management tool. One of these roles is the term store administrator. The term store administrator has the ability to manage the taxonomy and folksonomy in the term store. He is also responsible in setting up the contribute permissions to other users for the taxonomy we are going to create. Please note that the farm administrator is not automatically a term store administrator. However, the farm administrator has to define a term administrator if you want to manage the term store with the term store management tool.&lt;/p&gt; &lt;p&gt;With the next steps we are going to grant the term store administration permissions to a user of our choice. To do this login in as a farm administrator and follow these steps:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;open the central admin&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;go to &lt;strong&gt;“Application Management”&lt;/strong&gt; –&amp;gt; &lt;strong&gt;“Manage Service Applications”&lt;/strong&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;go to the managed metadata service application that you want to edit and click on its name (in our case the “&lt;strong&gt;Demo Managed Metadata”&lt;/strong&gt;)&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;you should see the term store management tool. You should find a section called &lt;strong&gt;“Term store Administrators” &lt;/strong&gt;on the right side of the term store properties&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;add as many users you want and press “&lt;strong&gt;Save”&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h2 align="left"&gt;Step 2: create the taxonomy with the term store administrator&lt;/h2&gt; &lt;p align="left"&gt;Now, we are able to create our taxonomy described above with the term store administrator permissions. The term store management tool can be found in the central administration under the managed metadata service application or on any site collection (under site settings) associated to a web application which is consuming the managed metadata service application. &lt;/p&gt; &lt;p align="left"&gt;As the term store administrator follow these steps to open the term store management tool:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;open the central admin&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;go to &lt;strong&gt;“Application Management”&lt;/strong&gt; –&amp;gt; &lt;strong&gt;“Manage Service Applications”&lt;/strong&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;go to the managed metadata service application that you want to edit and click on its name (in our case the “&lt;strong&gt;Demo Managed Metadata”&lt;/strong&gt;)&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="left"&gt;With the term store management tool open, we are going to create three different types of objects:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;a term group: in our example &lt;strong&gt;“Organization”&lt;/strong&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;a term set:&lt;strong&gt; &lt;/strong&gt;in our example &lt;strong&gt;“Department”&lt;/strong&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;a term&lt;strong&gt;: &lt;/strong&gt;in our example &lt;strong&gt;“Information &amp;amp; Technology”&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h2 align="left"&gt;Creating a term group&lt;/h2&gt; &lt;p align="left"&gt;We should see the term store management tool and on the top of the left navigation bar the “&lt;strong&gt;Demo Managed Metadata” &lt;/strong&gt;entry. We are going to create the first node &lt;strong&gt;“Organization”&lt;/strong&gt; of our example. This node is a a term group that is usually used to organize more sets of terms. The term group is used as a security boundary. You can specify following properties in a term group:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;description: a short description about the group&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;group managers: group managers are responsible in changing the structure of the term sets that are contained in this group. In addition, they are able to grant contribute permissions in this group to other people&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;contributors: these are users that can contribute terms and term sets in this group&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/TTpytedaDQI/AAAAAAAAAUo/z4ZwVzsomRQ/s1600-h/managed06%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="managed06" border="0" alt="managed06" src="http://lh5.ggpht.com/_3lC_bucoo88/TTpyuEwiGnI/AAAAAAAAAUs/s_hOBbokmYc/managed06_thumb%5B1%5D.png?imgmax=800" width="404" height="222"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="left"&gt;Let us create a new group by following these steps:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;select the arrow with the left mouse button near to the “&lt;strong&gt;Demo Managed Metadata” &lt;/strong&gt;(if you can’t see the arrow, then you are not a term store administrator)&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;Press “&lt;strong&gt;New Group”&lt;/strong&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;assign to the new group entry the name &lt;strong&gt;“Organization”&lt;/strong&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;assign &lt;strong&gt;"Group Managers”&lt;/strong&gt; and &lt;strong&gt;“Contributors” &lt;/strong&gt;if necessary&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/TTpyu05kXtI/AAAAAAAAAUw/Vx612xk-97s/s1600-h/managed07%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="managed07" border="0" alt="managed07" src="http://lh3.ggpht.com/_3lC_bucoo88/TTpyvvsql7I/AAAAAAAAAU0/2HyK2ail8n0/managed07_thumb%5B1%5D.png?imgmax=800" width="404" height="92"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2 align="left"&gt;Creating a term set&lt;/h2&gt; &lt;p align="left"&gt;In the previously created group we are going to create a term set. A group can contain multiple term sets. Term sets are used to contain one or more hierarchical terms. These term sets are selected in our site collections as source for the managed metadata columns. &lt;/p&gt; &lt;p align="left"&gt;The properties pane of the term set provides you with two separate tabs. The first tab &lt;strong&gt;“Properties” &lt;/strong&gt;defines the properties that are following (also see next figure):&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;description: a short description about the term set&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;contact-email: used as contact address for suggestions on the managed metadata choice popup in the site collections that use managed metadata fields&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;stakeholders: stakeholders are only for documentation purposes and do not define any permission settings or automatic notifications. Usually you can use them to track the names of persons that should be contacted before any change is made on this term set.&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;submission policy: this defines if this term set can be modified solely by the people defined in the term set management tool or opened to everyone&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;available for tagging: this flag defines if the term set is available for tagging or not&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="left"&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TTpywJIe7zI/AAAAAAAAAU4/2D6SgRt7Q-U/s1600-h/managed01%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="managed01" border="0" alt="managed01" src="http://lh4.ggpht.com/_3lC_bucoo88/TTpywjuTUrI/AAAAAAAAAU8/n7xVHJ831ao/managed01_thumb%5B1%5D.png?imgmax=800" width="404" height="309"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="left"&gt;In the &lt;strong&gt;“Custom Sort”&lt;/strong&gt; tab of the term sets you are able to sort your term sets individually or maintain the custom sort order. &lt;/p&gt; &lt;p align="left"&gt;We are going to create a new term set &lt;strong&gt;“Departments”&lt;/strong&gt; by following these steps:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;select the arrow near to the “&lt;strong&gt;Organization” &lt;/strong&gt;(if you can’t see the arrow, then you are not a term store administrator)&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;Press &lt;strong&gt;“New term set”&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="left"&gt;&lt;strong&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TTpyxHiWE7I/AAAAAAAAAVA/vXslHKJNXHM/s1600-h/managed03%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="managed03" border="0" alt="managed03" src="http://lh5.ggpht.com/_3lC_bucoo88/TTpyxsjE5aI/AAAAAAAAAVE/VMdLYI-BV5Q/managed03_thumb%5B1%5D.png?imgmax=800" width="404" height="154"&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;assign to the new term set entry the name &lt;strong&gt;“Departments”&lt;/strong&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;assign the properties that you want&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h2 align="left"&gt;Creating a term&lt;/h2&gt; &lt;p align="left"&gt;As already stated before, a term set is used to group more terms. Terms now are used to specify a single term instance. The properties that can be defined in a term set are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;available for tagging: this flag defines if the term set is available for tagging or not&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;description: a short description about the term&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;language: the current language for the name of the term and its synonyms. If you have multiple language packs installed you might be able to translate your term&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;other labels: these are the synonyms that can be used for your term. When a end-user inserts a synonyms associated to a term in the term store, then the system changes this synonym into the associated term (for example the term &lt;strong&gt;“Information &amp;amp; Technology”&lt;/strong&gt; could have a synonym “&lt;strong&gt;IT”&lt;/strong&gt;). &lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;stakeholders: stakeholders are only for documentation purposes and do not define any permission settings or automatic notifications. Usually you can use them to track the names of persons that should be contacted before any change is made on this term set&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="left"&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/TTpyyPgfbqI/AAAAAAAAAVI/JfNrY3M8mIg/s1600-h/managed05%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="managed05" border="0" alt="managed05" src="http://lh4.ggpht.com/_3lC_bucoo88/TTpyylVvH5I/AAAAAAAAAVM/jthCJKxG_Is/managed05_thumb%5B1%5D.png?imgmax=800" width="404" height="314"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="left"&gt;We are going to create a term called &lt;strong&gt;“Information &amp;amp; Technology” &lt;/strong&gt;by following the next steps:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;select the arrow near to the “&lt;strong&gt;Departments” &lt;/strong&gt;(if you can’t see the arrow, then you are not a term store administrator)&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;Press &lt;strong&gt;“New term”&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="left"&gt;&lt;strong&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/TTpyzTrGd4I/AAAAAAAAAVQ/zL65tgX375M/s1600-h/managed04%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="managed04" border="0" alt="managed04" src="http://lh5.ggpht.com/_3lC_bucoo88/TTpyz-Pf2dI/AAAAAAAAAVU/FOx3xBd9nDY/managed04_thumb%5B1%5D.png?imgmax=800" width="404" height="311"&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;assign to the new term set entry the name &lt;strong&gt;“Information &amp;amp; Technology”&lt;/strong&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;under &lt;strong&gt;“other labels” &lt;/strong&gt;assign the value &lt;strong&gt;IT &lt;/strong&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;assign additional properties if you want&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="left"&gt;Repeat the last steps for the remaining terms ("&lt;strong&gt;Accountancy”, “Management”, &lt;/strong&gt;etc.)and you are done.&lt;/p&gt; &lt;h2 align="left"&gt;Summary&lt;/h2&gt; &lt;ul&gt;&lt;!--EndFragment--&gt;&lt;/ul&gt; &lt;p align="left"&gt;In this blog post we created the sample taxonomy of our &lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;blog series&lt;/a&gt;&lt;strong&gt;. &lt;/strong&gt;We saw the different types of objects available in a term store and which properties can be set.&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;The next steps that we are going to follow in the next posts describe on how to manage the taxonomy in the term store management tool with some store operations that might become handy in some situations.&lt;/p&gt; &lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="left"&gt;Hope this helps,&lt;br&gt;Patrick&lt;/p&gt; &lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="left"&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-6285528384555020595?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/6285528384555020595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2011/01/creating-term-store-example-with-term.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/6285528384555020595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/6285528384555020595'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2011/01/creating-term-store-example-with-term.html' title='Creating the term store example with the term store management tool'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_3lC_bucoo88/TTpyseaiY3I/AAAAAAAAAUk/vjRYLyUmb5Q/s72-c/image_thumb2.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-2440124653232548974</id><published>2010-12-18T13:18:00.001+01:00</published><updated>2011-01-22T06:18:31.123+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='System architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Service Applications'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Central Admin'/><title type='text'>How is the managed metadata term store organized?</title><content type='html'>&lt;p&gt;&lt;em&gt;In the last two posts&lt;/em&gt;&lt;em&gt; of the post series “&lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;SharePoint 2010: exploring the managed metadata service application&lt;/a&gt;” we saw how to &lt;a href="http://patricklamber.blogspot.com/2010/12/how-do-i-create-new-managed-metadata.html" target="_blank"&gt;setup a managed metadata service application&lt;/a&gt; and how to &lt;a href="http://patricklamber.blogspot.com/2010/12/setting-up-managed-metadata-service.html" target="_blank"&gt;assign one or more managed metadata service applications&lt;/a&gt; to our web applications. In this post we are going to see how the managed metadata term store is organized and which roles can be used for managing this store. We are going to use a sample taxonomy for this purpose. The steps for creating this sample taxonomy are described in the post that will follow in &lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;this post series&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt; &lt;h2&gt;Overview&lt;/h2&gt; &lt;p&gt;Users working in an organization tend to use different synonyms for the same organizational term. It may happen that the terms used are misspelled or even wrong. These facts make the usage of a standardized term set in the organization difficult. Take as an example the name of a department “Information &amp;amp; Technology” that can be described by the users in several ways: IT, I&amp;amp;T, Information and Technology. And, we are not counting all the different combinations for a misspelled term.&lt;/p&gt; &lt;p&gt;The basic idea of the managed metadata term store is to mitigate this problem by standardizing these terms in a centralized location. These terms can be used by the users when associating it with other items in the system (tagging). In this post we are taking as a simple example of the definition of an organization’s department names and structure. &lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TQymch7OAFI/AAAAAAAAAUM/wp9jO14MAdA/s1600-h/OverView_Metadata3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="OverView_Metadata" border="0" alt="OverView_Metadata" src="http://lh5.ggpht.com/_3lC_bucoo88/TQymdPvEgeI/AAAAAAAAAUQ/6jjv_khucVI/OverView_Metadata_thumb1.png?imgmax=800" width="404" height="494"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The next section is going to explain better the structure and elements used in this sample and the roles that can be assigned to the different elements to manage this structure.&lt;/p&gt; &lt;h2&gt;structure and roles of the taxonomy term store&lt;/h2&gt; &lt;p&gt;This section illustrates the basic elements and roles in a taxonomy term store. The management of this taxonomy term store is accomplished by using the taxonomy store management tool that can either be found in the central administration (when clicking on the managed metadata service application in the central admin) or in the site collection (under site settings) that consumes the managed metadata service application. The term store management tool for our example is shown in the next figure:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TQymdw23s2I/AAAAAAAAAUU/DqC9Eqvy2D0/s1600-h/Overview3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Overview" border="0" alt="Overview" src="http://lh4.ggpht.com/_3lC_bucoo88/TQymeaECL3I/AAAAAAAAAUY/-7-ZTo7Ry-w/Overview_thumb1.png?imgmax=800" width="404" height="219"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The term store management tool is subdivided into two different sections: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;term store navigation (left hand side): this navigation pane is used to navigate through the different elements in our term store. At the same time, we have the ability to modify the structure and contribute with new content (if you have the right permissions).  &lt;li&gt;properties (right hand side): this is the property section of the element currently chosen in the navigation pane. In this section you are able to make the changes to your element depending to your needs&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The term store uses different types of elements to structure the taxonomy. With the help of the example of the first figure we are going to see the different types of elements used in such a term store:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;taxonomy term store (e.g., &lt;strong&gt;Demo Managed Metadata&lt;/strong&gt;): this is the name of our term store and container of none or more groups containing term sets. In this section you are able to define the administrators of the term store and the languages that are going to be used in this store.  &lt;li&gt;groups (e.g., &lt;strong&gt;Organization&lt;/strong&gt;): the groups in the term store are used to group none or more term sets and define the overall security for those term sets by defining the managers and the contributors for them.  &lt;li&gt;term set (e.g., &lt;strong&gt;Departments&lt;/strong&gt;): a term set is used to have terms that can be nested in a hierarchical manner. This term set is used to define a contact e-mail address for suggestions, the stakeholders, and the submission policy.  &lt;li&gt;term (e.g., &lt;strong&gt;Information &amp;amp; Technology&lt;/strong&gt;): terms are the hearth of this system containing our information that we are going to provide. You can group these terms in a hierarchical manner if you want (you see the sub-departments of the IT department for example). In addition, you can specify synonyms for the terms that are going to be used.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The management of the term store can be configured in several ways. You are able to delegate certain actions and permissions to other users by using roles. The roles that can be used to control the access on the term store are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;term store administrator: the term store administrator can make structural changes to the whole term store and manage the permissions. The term store administrator can assign the term store administrator role to other people under the taxonomy term store element’s properties (e.g., &lt;strong&gt;Demo Managed Metadata&lt;/strong&gt;). The farm administrator can define one or many term store administrators.&amp;nbsp; &lt;li&gt;group managers: group managers can manage terms and term sets under a specific group (e.g, &lt;strong&gt;Organization&lt;/strong&gt;). They can also specify users with contribute rights under the group element’s properties  &lt;li&gt;contributors: contributors can manage terms and term sets under a specific group but are not able to assign contributor rights to other users. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The term set has two additional fields that can be assigned to people or groups of the organization. These fields, however, are only for documentation purposes and are not used to grant any permissions to other users:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;term set owner: this is the owner of the term set (e.g., &lt;strong&gt;Department&lt;/strong&gt;)  &lt;li&gt;stakeholders: stakeholders are people that are going to be notified if major changes in a term set (e.g., &lt;strong&gt;Departments&lt;/strong&gt;) should take place. These stakeholders do not have contribute rights on the term set. &lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Summary&lt;/h2&gt; &lt;p&gt;In this blog post we explored the different types of elements used in a term store to organize a taxonomy. In addition, we saw the roles that can be assigned to users for delegating permissions for the store management. With this knowledge we are able to start now creating our term store in the next blog post of this &lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;post series&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;So stay tuned,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-2440124653232548974?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/2440124653232548974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/12/how-is-managed-metadata-term-store.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/2440124653232548974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/2440124653232548974'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/12/how-is-managed-metadata-term-store.html' title='How is the managed metadata term store organized?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_3lC_bucoo88/TQymdPvEgeI/AAAAAAAAAUQ/6jjv_khucVI/s72-c/OverView_Metadata_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-3929647721474774861</id><published>2010-12-12T15:53:00.001+01:00</published><updated>2010-12-12T15:53:34.999+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='System architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Service Applications'/><category scheme='http://www.blogger.com/atom/ns#' term='Walkthrough'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Central Admin'/><title type='text'>Setting up a managed metadata service application to server one or more web applications</title><content type='html'>&lt;p&gt;&lt;em&gt;The service application infrastructure of SharePoint 2010 gives you the ability to create multiple service applications of the same type. At the same time, you are also able to connect most of these service applications to one or more web applications in your farm or even with external farms. This brings you more flexibility with respect to the old shared service provider architecture of SharePoint 2007, however, this also brings more complexity to your overall system architecture. &lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;In this &lt;/em&gt;&lt;em&gt;post of the post series “&lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;SharePoint 2010: exploring the managed metadata service application&lt;/a&gt;” we are going to see how to assign the managed metadata service application to serve one or more web applications contemporarily. In the second part of this post we are going to see what you have to consider when assigning two different managed metadata service applications to the same web application. If you want to know how to create a single managed metadata service application with the central admin or PowerShell, then visit my last &lt;a href="http://patricklamber.blogspot.com/2010/12/how-do-i-create-new-managed-metadata.html" target="_blank"&gt;post&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt; &lt;h2&gt;Scenario 1: assigning the same managed metadata service application to one or more web applications&lt;/h2&gt; &lt;p&gt;The managed metadata service application is typically assigned via a service application proxy and a service application proxy group. Each application proxy group can then be assigned to multiple web applications depending on your needs. You can assign a service application proxy to a web application in different moments of the web application life cycle:&lt;/p&gt; &lt;p&gt;First, an administrator has the ability to define a service application connection during the creation of a new web application. In the configuration wizard of the web application creation you have a section that gives you the possibility to define which proxy group to use for your web application. If you want, you are also able to specify a custom selection of service applications. The next figure shows how this might look like by choosing an already existing proxy group:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TQThwsZ-5xI/AAAAAAAAATk/uHewarUsi6M/s1600-h/selectingproxygroup%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="selectingproxygroup" border="0" alt="selectingproxygroup" src="http://lh4.ggpht.com/_3lC_bucoo88/TQThxqkhfsI/AAAAAAAAATo/pK99O8SVlSM/selectingproxygroup_thumb%5B1%5D.png?imgmax=800" width="404" height="211"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The next figure shows what you can do when you are defining a custom binding for this web application with the service applications present in the farm:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TQThystEWQI/AAAAAAAAATs/aXi9akKk3jg/s1600-h/selectingcustom%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="selectingcustom" border="0" alt="selectingcustom" src="http://lh6.ggpht.com/_3lC_bucoo88/TQTh0RH0F1I/AAAAAAAAATw/N2AcOtbnO2Q/selectingcustom_thumb%5B1%5D.png?imgmax=800" width="404" height="211"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;On the other side, you can also change the proxy group settings after a web application was already created. You can change these settings by using the central administration:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Open the central administration&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Application Management&lt;/strong&gt; –&amp;gt; &lt;strong&gt;Configure service application associations&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;select the web application that you want to configure (a window pops up similar to the next figure)&lt;/li&gt; &lt;li&gt;make your changes&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/TQTh1HNhiSI/AAAAAAAAAT0/IRzzLK4Dmc8/s1600-h/assignment%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="assignment" border="0" alt="assignment" src="http://lh3.ggpht.com/_3lC_bucoo88/TQTh2av9iRI/AAAAAAAAAT4/72-nqLrI1Ro/assignment_thumb%5B1%5D.png?imgmax=800" width="404" height="287"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2&gt;Scenario 2: assigning two or more managed metadata service applications to a single web application&lt;/h2&gt; &lt;p&gt;In the previous scenario we saw how to assign a service application to multiple web applications. Similarly, you are also able to assign multiple service applications to a single web application. When doing so with a managed metadata service application, however, you have to consider some settings before proceeding.&lt;/p&gt; &lt;p&gt;Imagine that you have to maintain two separate managed metadata service applications for two different departmental projects. You can do this by creating two separate managed metadata service applications and assign them to the corresponding web applications. After a while, you need to combine both service applications for a single web application. You can do this by following the same steps as seen in the previous scenario. Choose the service applications that you want to consume in your web application by selecting a proxy group or defining your custom selections.&lt;/p&gt; &lt;p&gt;You can do this, however, you have to consider following when assigning multiple managed metadata service applications to a single web application:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;both term stores (service applications) with managed terms are available for your web application&lt;/li&gt; &lt;li&gt;both term stores can provide content-type hub syndication&lt;/li&gt; &lt;li&gt;the already stored enterprise keywords of both term stores are served to your web application, however, only one term store of both can be your default storage location for your keywords&lt;/li&gt; &lt;li&gt;the already stored column specific term sets of both term stores are served to your web application, however, only one term store of both can be your default storage location of your column specific term sets&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Everything except the storage of enterprise keywords and column specific term sets function properly. This happens if both managed metadata service applications are configured to be the default term stores. You might encounter following error message when inserting a new enterprise keyword:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;“The site does not contain a default keywords termstore”&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_3lC_bucoo88/TQTh3nOJNDI/AAAAAAAAAT8/ldPgWIcFKKM/s1600-h/NoDefaultTermstore%5B4%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="NoDefaultTermstore" border="0" alt="NoDefaultTermstore" src="http://lh4.ggpht.com/_3lC_bucoo88/TQTh4zrk1EI/AAAAAAAAAUA/hCjAhDviMn0/NoDefaultTermstore_thumb%5B2%5D.png?imgmax=800" width="404" height="47"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Therefore, plan carefully before separating managed metadata service applications. You have to ensure that only one of both term stores is the default term store for the web application. You can make the changes in the managed metadata service connection settings:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;open the central administration&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Application management &lt;/strong&gt;–&amp;gt;&lt;strong&gt; Manage service applications&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;select the row of type &lt;strong&gt;Managed Metadata service Connection &lt;/strong&gt;of your metadata service application&lt;/li&gt; &lt;li&gt;press &lt;strong&gt;Properties &lt;/strong&gt;in the ribbon bar&lt;/li&gt; &lt;li&gt;choose &lt;strong&gt;This service application is the default storage location for Keywords &lt;/strong&gt;and &lt;strong&gt;This service application is the default storage location for column specific term sets&lt;/strong&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/TQTh5h6HBbI/AAAAAAAAAUE/2FdQML_-2pw/s1600-h/service%20connection%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="service connection" border="0" alt="service connection" src="http://lh3.ggpht.com/_3lC_bucoo88/TQTh652zL3I/AAAAAAAAAUI/qPPkN_uWbSU/service%20connection_thumb%5B1%5D.png?imgmax=800" width="404" height="322"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;If you already have a default term store in the farm you will get this error message:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;“Warning: Another service application on this farm is already configured as the default. This feature will be disabled if multiple defaults are associated with&amp;nbsp; a single web application.”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Now, it is up to you to ensure that you do not use two default term stores on the same web application. Please note that disabling these settings is a farm wide setting.&lt;/p&gt; &lt;h2&gt;Summary&lt;/h2&gt; &lt;p&gt;With the service application infrastructure of SharePoint 2010 you are able to manage multiple service applications on your farm and assign them to one or more web applications without any problems. This post showed you how to configure one single service application to serve multiple web applications and how to configure multiple managed metadata service applications to a single web application.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-3929647721474774861?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/3929647721474774861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/12/setting-up-managed-metadata-service.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3929647721474774861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3929647721474774861'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/12/setting-up-managed-metadata-service.html' title='Setting up a managed metadata service application to server one or more web applications'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_3lC_bucoo88/TQThxqkhfsI/AAAAAAAAATo/pK99O8SVlSM/s72-c/selectingproxygroup_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-4186043453238286492</id><published>2010-12-05T16:06:00.001+01:00</published><updated>2010-12-05T16:06:38.953+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='System architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Service Applications'/><category scheme='http://www.blogger.com/atom/ns#' term='Walkthrough'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='Central Admin'/><category scheme='http://www.blogger.com/atom/ns#' term='Installation'/><title type='text'>How do I create a new managed metadata service application?</title><content type='html'>&lt;p&gt;Hi,&lt;/p&gt; &lt;p&gt;&lt;em&gt;in this blog post of my “&lt;/em&gt;&lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html"&gt;&lt;em&gt;SharePoint 2010: exploring the managed metadata service application&lt;/em&gt;&lt;/a&gt;&lt;em&gt;” post series we are going to see how a new managed metadata service application is created manually and programmatically with PowerShell. &lt;/em&gt;&lt;/p&gt; &lt;h2&gt;Overview&lt;/h2&gt; &lt;p&gt;A SharePoint farm that has managed metadata available can organize the managed metadata in several managed metadata service applications. Each managed metadata service application can serve with a proxy connection none or multiple web applications. This gives you the possibility to manage your metadata in a flexible way. &lt;/p&gt; &lt;p&gt;Each managed metadata service application has an service application pool assigned to it and usually also a managed account as application pool identity (check &lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;this&lt;/a&gt; blog post if you don’t know what managed accounts are). Last but not least, the &lt;strong&gt;“Managed Metadata Web Service”&lt;/strong&gt; must run on at least one front-end to ensure that the managed metadata service is working properly.&lt;/p&gt; &lt;p&gt;In this post we are going to see how to create such a managed metadata service application. The content is organized as follows:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Part 1: Creating a managed metadata service application with the central admin  &lt;li&gt;Part 2: Creating a managed metadata service application with PowerShell&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&amp;nbsp;&lt;/h2&gt; &lt;h2&gt;Part 1: Creating a managed metadata service application with the central admin&lt;/h2&gt; &lt;p&gt;Creating a managed metadata service application with the central admin is simple. Before starting we have to ensure that we have a managed account registered that we will use as a service application pool identity for our managed metadata service application (check &lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;this&lt;/a&gt; blog post if you don’t know what managed accounts are). In addition, we have to start the &lt;strong&gt;“Managed Metadata Web Service”&lt;/strong&gt; service on at least one front-end server of our farm. You can do this by following these steps:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;open the central admin&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;go to &lt;strong&gt;“Application Management”&lt;/strong&gt; –&amp;gt; &lt;strong&gt;“Manage services on server”&lt;/strong&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;start the &lt;strong&gt;“Managed Metadata Web Service” &lt;/strong&gt;on any front-end server of your farm&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="left"&gt;Now, that all requirements are met, we can start creating our managed metadata service application. Follow these steps:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;open the central admin&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;go to &lt;strong&gt;“Application Management”&lt;/strong&gt; –&amp;gt; &lt;strong&gt;“Manage Service Applications”&lt;/strong&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;press the &lt;strong&gt;“New”&lt;/strong&gt; button on the ribbon and choose &lt;strong&gt;“Managed Metadata Service”&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TPuqcMwnZHI/AAAAAAAAATE/lhPGhLnjaUU/s1600-h/Managed%201%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Managed 1" border="0" alt="Managed 1" src="http://lh5.ggpht.com/_3lC_bucoo88/TPuqcnLjm7I/AAAAAAAAATI/y-vKN2Q4DNE/Managed%201_thumb%5B1%5D.png?imgmax=800" width="204" height="265"&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;a new window will popup configure it to your needs (see next pictures) and then press &lt;strong&gt;“OK”&lt;/strong&gt;: &lt;/li&gt; &lt;ul&gt; &lt;li&gt;Name: define the name for your managed metadata. This name will be shown on the &lt;strong&gt;“Manage Service Applications”&lt;/strong&gt; overview page  &lt;li&gt;Database Server: specify the database server to store your managed metadata service database&lt;/li&gt; &lt;li&gt;Application Pool: define a new application pool that will be used as service application pool identity for your managed metadata service application. Also define the managed account that you will use as application pool identity for this application pool  &lt;li&gt;Content Type hub: you can specify here the URL of the content type hub of your managed metadata service application. We will see this functionality later on in our &lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;post&lt;/a&gt; series. Just leave it empty for now.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TPuqdACnqTI/AAAAAAAAATM/cy8ZgF9nRsg/s1600-h/Managed%202%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Managed 2" border="0" alt="Managed 2" src="http://lh4.ggpht.com/_3lC_bucoo88/TPuqdZ1_eUI/AAAAAAAAATQ/fCjzUxcD6Lk/Managed%202_thumb%5B1%5D.png?imgmax=800" width="404" height="244"&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/TPuqdl9ESoI/AAAAAAAAATU/C-a4oBgqBsE/s1600-h/Managed%203%5B4%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Managed 3" border="0" alt="Managed 3" src="http://lh5.ggpht.com/_3lC_bucoo88/TPuqeC-BegI/AAAAAAAAATY/Ra0eogUl0CE/Managed%203_thumb%5B2%5D.png?imgmax=800" width="404" height="254"&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;you should see something like in the next picture in the &lt;strong&gt;“Manage Service Applications” &lt;/strong&gt;overview&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TPuqfJhDFvI/AAAAAAAAATc/Evvjnb9JUw4/s1600-h/Managed%204%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Managed 4" border="0" alt="Managed 4" src="http://lh5.ggpht.com/_3lC_bucoo88/TPuqfa4MMBI/AAAAAAAAATg/m4SWj7ZaA14/Managed%204_thumb%5B1%5D.png?imgmax=800" width="404" height="26"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;With these small steps you created a managed metadata service application and the proxy. If you click on the name of the newly created service application, you are automatically redirected to the term store tool needed to manage your metadata in this store.&lt;/p&gt; &lt;p&gt;Please note that you are able to create multiple managed metadata service applications like that. On most cases these steps are enough to create a new managed metadata service application. However, we will see in the next part how to create the same stuff in a more automated way. Let us jump directly into the PowerShell script.&lt;/p&gt; &lt;h2&gt;Part 2: Creating a managed metadata service application with PowerShell&lt;/h2&gt; &lt;p&gt;The creation of the managed metadata service application with PowerShell is pretty straightforward. Now, we should know the different prerequisites needed to create the new service application. Because of that, it should not be difficult to understand the steps that are scripted in the PowerShell script that I prepared for you. Before we are going to see the whole script, I would like to summarize the steps that are execute in it:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;check if there is an service application pool with a specified name. If not, then create a new service application pool and assign the required managed account to it  &lt;li&gt;check if there is a managed metadata service application with a specified name. If not, then create it and assign it to the previously selected service application pool.  &lt;li&gt;check if there is a managed metadata service application proxy with a specified name. if not, then create it and assign it to the previously selected managed metadata service application.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;You can execute this script more than once without breaking the previously created entities. The script always looks before if the item that we are going to create was already created. It uses the object if it finds something already defined. The complete script is shown in the next code snippet. The paragraphs after explain the different parts more in detail.&lt;/p&gt;&lt;pre class="brush: ps;"&gt;# start script configuration section&lt;br /&gt;&lt;br /&gt;# service application and service application proxy names&lt;br /&gt;$metadataServiceApplicationName = "Demo Managed Metadata"&lt;br /&gt;$metadataServiceApplicationNameProxy = "Demo Managed Metadata Proxy"&lt;br /&gt;&lt;br /&gt;# service application pool identity for the service application&lt;br /&gt;$serviceApplicationPoolManagedAccountName = "LAMBER\spman_app"&lt;br /&gt;# service application pool name&lt;br /&gt;$metadataApplicationPoolName = "managed_demo_appl"&lt;br /&gt;&lt;br /&gt;# end script configuration section&lt;br /&gt;&lt;br /&gt;$snapinName = "Microsoft.SharePoint.PowerShell"&lt;br /&gt;if ((Get-PSSnapin | Where-Object {$_.Name -eq $snapinName }) -eq $NULL) {&lt;br /&gt;  write-host "SharePoint SnapIn not loaded. Loading..."&lt;br /&gt;  Add-PSSnapin $snapinName&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;write-host "Starting managed application creation..."&lt;br /&gt;write-host&lt;br /&gt;&lt;br /&gt;write-host "Verifying running instances..."&lt;br /&gt;$metadataServiceInstanceName = "Managed Metadata Web Service"&lt;br /&gt;$onlineServiceInstances = Get-SPServiceInstance | where {$_.TypeName -eq $metadataServiceInstanceName -and $_.Status -eq "Online"}&lt;br /&gt;if ($onlineServiceInstances -eq $NULL) {&lt;br /&gt;  write-host "No running instances found. Starting all service instances now..."&lt;br /&gt;  $disabledServiceInstances = Get-SPServiceInstance | where {$_.TypeName -eq $metadataServiceInstanceName -and $_.Status -eq "Disabled" }&lt;br /&gt;  $disabledServiceInstances | Start-SPServiceInstance&lt;br /&gt;  &lt;br /&gt;  while (-not ($disabledServiceInstances -eq $NULL)) {&lt;br /&gt;    write-host "Waiting that all service instances are provisioned. Going to sleep for 10 seconds..."&lt;br /&gt;    sleep 10;&lt;br /&gt;    $disabledServiceInstances = Get-SPServiceInstance | where {$_.TypeName -eq $metadataServiceInstanceName -and $_.Status -eq "Disabled" }&lt;br /&gt;  }&lt;br /&gt;  write-host "All service instances provisioned successfully."&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;  write-host "At least one instance is running in the farm."&lt;br /&gt;}&lt;br /&gt;write-host&lt;br /&gt;&lt;br /&gt;write-host "Verifying if '$metadataApplicationPoolName' service application pool exists..."&lt;br /&gt;$serviceApplicationPool = Get-SPServiceApplicationPool $metadataApplicationPoolName -ea SilentlyContinue&lt;br /&gt;if ($serviceApplicationPool -eq $NULL) {&lt;br /&gt;  write-host "No service application pool found. Starting the creation process..."&lt;br /&gt;  &lt;br /&gt;  write-host "Verifying if '$serviceApplicationPoolManagedAccountName' is registered as managed account..."&lt;br /&gt;  $managedAccountEntry = Get-SPManagedAccount $serviceApplicationPoolManagedAccountName -ea SilentlyContinue&lt;br /&gt;  if ($managedAccountEntry -eq $NULL) {&lt;br /&gt;    write-host "No managed account found. Starting the registering process..."&lt;br /&gt;    $manCredentials = Get-Credential $serviceApplicationPoolManagedAccountName  &lt;br /&gt;    $managedAccountEntry = New-SPManagedAccount $manCredentials&lt;br /&gt;  }&lt;br /&gt;  else {&lt;br /&gt;    write-host "Account already registered."&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  $serviceApplicationPool = New-SPServiceApplicationPool $metadataApplicationPoolName -Account $managedAccountEntry&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;  write-host "Service application pool already exists."&lt;br /&gt;}&lt;br /&gt;write-host&lt;br /&gt;&lt;br /&gt;$ServiceApplication = Get-SPMetadataServiceApplication $metadataServiceApplicationName&lt;br /&gt;write-host "Verifying if '$metadataServiceApplicationName' already exists..."&lt;br /&gt;if ($ServiceApplication -eq $NULL) {&lt;br /&gt;  write-host "No service application found. Starting the creation process..."&lt;br /&gt;  $ServiceApplication = New-SPMetadataServiceApplication -Name $metadataServiceApplicationName -ApplicationPool $serviceApplicationPool&lt;br /&gt;  write-host "Service application created successfully."&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;  write-host "Service application already exists."&lt;br /&gt;}&lt;br /&gt;write-host&lt;br /&gt;&lt;br /&gt;$ServiceApplicationProxy = Get-SPMetadataServiceApplicationProxy $metadataServiceApplicationNameProxy&lt;br /&gt;write-host "Verifying if '$metadataServiceApplicationNameProxy' service application proxy already exists..."&lt;br /&gt;if ($ServiceApplicationProxy -eq $NULL) {&lt;br /&gt;  write-host "No service application proxy found. Starting the creation process..."&lt;br /&gt;  $ServiceApplicationProxy = New-SPMetadataServiceApplicationProxy -Name $metadataServiceApplicationNameProxy -ServiceApplication $ServiceApplication&lt;br /&gt;  write-host "Service application proxy created successfully."&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;  write-host "Service application proxy already exists"&lt;br /&gt;}&lt;br /&gt;write-host&lt;br /&gt;&lt;br /&gt;write-host "Managed application creation finished."&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Now, let us analyze the different parts of this script and explain those better. The next code snippet shows the first part of the script. This part is self-explanatory and is used to configure the creation of the managed metadata service application. Change these values to your needs before starting the script.&lt;/p&gt;&lt;pre class="brush: ps;"&gt;# start script configuration section&lt;br /&gt;&lt;br /&gt;# service application and service application proxy names&lt;br /&gt;$metadataServiceApplicationName = "Demo Managed Metadata"&lt;br /&gt;$metadataServiceApplicationNameProxy = "Demo Managed Metadata Proxy"&lt;br /&gt;&lt;br /&gt;# service application pool identity for the service application&lt;br /&gt;$serviceApplicationPoolManagedAccountName = "LAMBER\spman_app"&lt;br /&gt;# service application pool name&lt;br /&gt;$metadataApplicationPoolName = "managed_demo_appl"&lt;br /&gt;&lt;br /&gt;# end script configuration section&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The next code snippet checks if the &lt;strong&gt;“Managed Metadata Web Service”&lt;/strong&gt; runs on at least one front-end server. If this is not the case, all &lt;strong&gt;“Managed Metadata Web Service”&lt;/strong&gt; instances are taken and started on &lt;strong&gt;all servers&lt;/strong&gt;. The while loop checks every 10 seconds if all services already run. If not, it waits for other 10 seconds.&lt;/p&gt;&lt;pre class="brush: ps;"&gt;write-host "Verifying running instances..."&lt;br /&gt;$metadataServiceInstanceName = "Managed Metadata Web Service"&lt;br /&gt;$onlineServiceInstances = Get-SPServiceInstance | where {$_.TypeName -eq $metadataServiceInstanceName -and $_.Status -eq "Online"}&lt;br /&gt;if ($onlineServiceInstances -eq $NULL) {&lt;br /&gt;  write-host "No running instances found. Starting all service instances now..."&lt;br /&gt;  $disabledServiceInstances = Get-SPServiceInstance | where {$_.TypeName -eq $metadataServiceInstanceName -and $_.Status -eq "Disabled" }&lt;br /&gt;  $disabledServiceInstances | Start-SPServiceInstance&lt;br /&gt;  &lt;br /&gt;  while (-not ($disabledServiceInstances -eq $NULL)) {&lt;br /&gt;    write-host "Waiting that all service instances are provisioned. Going to sleep for 10 seconds..."&lt;br /&gt;    sleep 10;&lt;br /&gt;    $disabledServiceInstances = Get-SPServiceInstance | where {$_.TypeName -eq $metadataServiceInstanceName -and $_.Status -eq "Disabled" }&lt;br /&gt;  }&lt;br /&gt;  write-host "All service instances provisioned successfully."&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;  write-host "At least one instance is running in the farm."&lt;br /&gt;}&lt;br /&gt;write-host&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The next code snippet shows that the script continues by verifying if there is already a service application pool with the name specified in the configuration section of the script. If this is the case, the service application pool is used for the next steps. Otherwise, a new service application pool is created. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;The creation of the service application pool first verifies if a managed account with the name specified in the configuration section already exists. If this is not the case, the managed account is registered. Please note that you will be prompted for credentials if a new managed account is going to be registered. After this step, the managed account is assigned as application pool identity for the newly created service application pool.&lt;/p&gt;&lt;pre class="brush: ps;"&gt;write-host "Verifying if '$metadataApplicationPoolName' service application pool exists..."&lt;br /&gt;$serviceApplicationPool = Get-SPServiceApplicationPool $metadataApplicationPoolName -ea SilentlyContinue&lt;br /&gt;if ($serviceApplicationPool -eq $NULL) {&lt;br /&gt;  write-host "No service application pool found. Starting the creation process..."&lt;br /&gt;  &lt;br /&gt;  write-host "Verifying if '$serviceApplicationPoolManagedAccountName' is registered as managed account..."&lt;br /&gt;  $managedAccountEntry = Get-SPManagedAccount $serviceApplicationPoolManagedAccountName -ea SilentlyContinue&lt;br /&gt;  if ($managedAccountEntry -eq $NULL) {&lt;br /&gt;    write-host "No managed account found. Starting the registering process..."&lt;br /&gt;    $manCredentials = Get-Credential $serviceApplicationPoolManagedAccountName  &lt;br /&gt;    $managedAccountEntry = New-SPManagedAccount $manCredentials&lt;br /&gt;  }&lt;br /&gt;  else {&lt;br /&gt;    write-host "Account already registered."&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  $serviceApplicationPool = New-SPServiceApplicationPool $metadataApplicationPoolName -Account $managedAccountEntry&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;  write-host "Service application pool already exists."&lt;br /&gt;}&lt;br /&gt;write-host&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;In the next code snippet the script is going to create the managed metadata service application (if it does not already exist) and assigns the service application pool that was defined before.&lt;/p&gt;&lt;pre class="brush: ps;"&gt;$ServiceApplication = Get-SPMetadataServiceApplication $metadataServiceApplicationName&lt;br /&gt;write-host "Verifying if '$metadataServiceApplicationName' already exists..."&lt;br /&gt;if ($ServiceApplication -eq $NULL) {&lt;br /&gt;  write-host "No service application found. Starting the creation process..."&lt;br /&gt;  $ServiceApplication = New-SPMetadataServiceApplication -Name $metadataServiceApplicationName -ApplicationPool $serviceApplicationPool&lt;br /&gt;  write-host "Service application created successfully."&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;  write-host "Service application already exists."&lt;br /&gt;}&lt;br /&gt;write-host&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;In the last code snippet the script creates the managed metadata service application proxy (if it does not already exist) and assigns it to the managed metadata service application that we created before.&lt;/p&gt;&lt;pre class="brush: ps;"&gt;$ServiceApplicationProxy = Get-SPMetadataServiceApplicationProxy $metadataServiceApplicationNameProxy&lt;br /&gt;write-host "Verifying if '$metadataServiceApplicationNameProxy' service application proxy already exists..."&lt;br /&gt;if ($ServiceApplicationProxy -eq $NULL) {&lt;br /&gt;  write-host "No service application proxy found. Starting the creation process..."&lt;br /&gt;  $ServiceApplicationProxy = New-SPMetadataServiceApplicationProxy -Name $metadataServiceApplicationNameProxy -ServiceApplication $ServiceApplication&lt;br /&gt;  write-host "Service application proxy created successfully."&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;  write-host "Service application proxy already exists"&lt;br /&gt;}&lt;br /&gt;write-host&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;Summary&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;Creating a new managed metadata service application for a SharePoint farm is an easy task manually and programmatically. In this blog post we saw how it is done in both ways and what are the requirements needed before executing these steps. In the next blog posts of &lt;a href="http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html" target="_blank"&gt;this post series&lt;/a&gt; we are going to see better how to use the managed metadata service application.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Hope this helps,&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-4186043453238286492?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/4186043453238286492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/12/how-do-i-create-new-managed-metadata.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4186043453238286492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4186043453238286492'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/12/how-do-i-create-new-managed-metadata.html' title='How do I create a new managed metadata service application?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_3lC_bucoo88/TPuqcnLjm7I/AAAAAAAAATI/y-vKN2Q4DNE/s72-c/Managed%201_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-5352908555766947247</id><published>2010-11-27T12:02:00.001+01:00</published><updated>2010-11-27T12:02:32.431+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Installation'/><category scheme='http://www.blogger.com/atom/ns#' term='Exception'/><title type='text'>SharePoint 2010 returns a 503-Service Unavailable HTTP status message after a system reboot and successful installation</title><content type='html'>&lt;p&gt;&lt;em&gt;During this week I was installing a new SharePoint infrastructure for one of my customers. The installation procedure went as expected and we were able to configure the complete environment using the central administration. However, after a reboot of the web front-end machine, IIS 7 returned a 503-Service Unavailable HTTP status message. SharePoint was not functioning anymore…&lt;/em&gt;&lt;/p&gt; &lt;p&gt;That meant… troubleshooting. You might imagine what I was thinking at this moment. The SharePoint logs didn’t tell me anything. I only noticed that the application pools of the central admin were stopped after the first hit on the web application. In addition, the Windows logs returned a Windows Process Activation Service (WAS) error. I started looking in every possible layer of SharePoint and after two hours I finally found an interesting article &lt;a href="http://blog.markhaverty.com/2010/10/20/service-unavailable--http-erro.aspx" target="_blank"&gt;an article&lt;/a&gt; that described a similar issue.&lt;/p&gt; &lt;p&gt;In short, it may be the case that a domain group policy overrides an essential permission of the application pool accounts called “Log on as a batch job”. Without this permission, the application pool account is not able to run the application pool. &lt;/p&gt; &lt;p&gt;I was checking the local group policies of the web front-end and I finally found the problem. The application pool account was indeed not listed under the “Log on as batch job” policy. In addition, the farm administration account and all other service accounts that are running the SharePoint services were not listed in the “Log on as a service” policy. These policies were overridden the first time after the server restart with more restrictive domain policies.&lt;/p&gt; &lt;p&gt;The solution of the problem was simple now. It was only necessary to add all application pool accounts to the “Log on as batch job” domain policy and the service accounts (such as the farm administrator) to the “Log on as service” domain policy. After these changes, it was only necessary to force the policy upgrade on the web front-end by using the “gpudate /force” command. We checked again the local group policies and finally these reflected the settings that we needed. After a reboot of the web front-end, SharePoint was finally working as expected.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-5352908555766947247?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/5352908555766947247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/11/sharepoint-2010-returns-503-service.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5352908555766947247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5352908555766947247'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/11/sharepoint-2010-returns-503-service.html' title='SharePoint 2010 returns a 503-Service Unavailable HTTP status message after a system reboot and successful installation'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-4332725657352815529</id><published>2010-11-20T11:50:00.001+01:00</published><updated>2010-11-20T11:50:19.025+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Client Object Model'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Development environment'/><title type='text'>The SharePoint Client Object Model Redistributable Release officially announced</title><content type='html'>&lt;p&gt;The SharePoint Documentation team announced on its blog &lt;a href="http://blogs.msdn.com/b/sharepointdeveloperdocs/archive/2010/11/18/sharepoint-client-object-model-redistributable-released.aspx" target="_blank"&gt;post&lt;/a&gt; on November, 18th the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=b4579045-b183-4ed4-bf61-dc2f0deabe47" target="_blank"&gt;SharePoint Foundation 2010 Client Object Model Redistributable&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;. This software package includes all assemblies that are necessary to develop SharePoint solutions based on the new Client Object Model.  &lt;p&gt;This package is useful for all SharePoint developers that do not develop directly on the SharePoint Server 2010 and are normally looking for these assemblies on the server. &lt;p&gt;&amp;nbsp; &lt;p&gt;Br, &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-4332725657352815529?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/4332725657352815529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/11/sharepoint-client-object-model.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4332725657352815529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4332725657352815529'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/11/sharepoint-client-object-model.html' title='The SharePoint Client Object Model Redistributable Release officially announced'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-5997057637320084984</id><published>2010-11-20T11:11:00.001+01:00</published><updated>2011-02-12T12:26:39.924+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Applications'/><category scheme='http://www.blogger.com/atom/ns#' term='managed metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>SharePoint 2010: exploring the managed metadata service application</title><content type='html'>&lt;p&gt;&lt;em&gt;I’m going to explore with you in a new post series the exciting managed metadata service application that was introduced with the new version of SharePoint 2010 Standard and Enterprise. &lt;/em&gt;&lt;/p&gt; &lt;p&gt;Metadata is used to describe the items (document, calendar event, announcement, etc.) you are adding into SharePoint. You can extend an items description with metadata by creating new list or document library columns (attributes). This system abstraction lets you create any type of information that you are interested in. &lt;/p&gt; &lt;p&gt;The managed metadata service application in SharePoint 2010 can be used to collect terms farm wide and share them with one or more web applications. These terms can be controlled centrally by a small number of persons (taxonomy) or opened to more users (folksonomy). These term definitions (taxonomy or folksonomy terms) are shared across your web applications that are consuming the managed metadata service application in form of managed metadata columns and the tags features provided by the user profile service application.&lt;/p&gt; &lt;p&gt;Finally, the managed metadata service application provides you a new feature that permits to define enterprise wide content types. In SharePoint 2007 content types were bound to site collections. Now, you can define farm wide content types that are shared across multiple site collections and web applications. This is accomplished with the content type hub features.&lt;/p&gt; &lt;p&gt;The next posts that I’m going to write for this post series are (the links to this posts will be updated in the next weeks):&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://patricklamber.blogspot.com/2010/12/how-do-i-create-new-managed-metadata.html" target="_blank"&gt;How do I create a new managed metadata service application?&lt;/a&gt;  &lt;li&gt;&lt;a href="http://patricklamber.blogspot.com/2010/12/setting-up-managed-metadata-service.html" target="_blank"&gt;Setting up a managed metadata service application to server one or more web applications&lt;/a&gt;  &lt;li&gt;&lt;a href="http://patricklamber.blogspot.com/2010/12/how-is-managed-metadata-term-store.html" target="_blank"&gt;How is the managed metadata term store organized?&lt;/a&gt;  &lt;li&gt;&lt;a href="http://patricklamber.blogspot.com/2011/01/creating-term-store-example-with-term.html" target="_blank"&gt;Creating the term store example with the term store management tool&lt;/a&gt;  &lt;li&gt;&lt;a href="http://patricklamber.blogspot.com/2011/01/how-do-i-manage-my-taxonomy-in-term.html" target="_blank"&gt;How do I manage my taxonomy in the term store management tool?&lt;/a&gt;  &lt;li&gt;&lt;a href="http://patricklamber.blogspot.com/2011/01/assigning-managed-term-set-to-custom.html" target="_blank"&gt;Assigning a managed term set to a custom column&lt;/a&gt;  &lt;li&gt;&lt;a href="http://patricklamber.blogspot.com/2011/02/how-do-i-work-with-content-type-hub.html" target="_blank"&gt;How do I work with the Content Type Hub feature of the managed metadata service application?&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;If you are interested in getting more information about managed metadata, just start on digging deeper into &lt;a href="http://technet.microsoft.com/en-us/library/ee424402.aspx" target="_blank"&gt;this&lt;/a&gt; TechNet link.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-5997057637320084984?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/5997057637320084984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5997057637320084984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5997057637320084984'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/11/sharepoint-2010-exploring-managed.html' title='SharePoint 2010: exploring the managed metadata service application'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-5615751005979819745</id><published>2010-11-06T07:08:00.001+01:00</published><updated>2010-11-06T07:08:18.166+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Exception'/><title type='text'>Troubles in accessing list data from SharePoint 2010 web services over SSL with SharePoint Designer 2010</title><content type='html'>&lt;p&gt;&lt;em&gt;a new day and a new story to tell about the interaction between SharePoint Designer 2010 and SharePoint 2010. I am currently working for a customer on a small SharePoint 2010 project that requires some minor modifications with SharePoint Designer 2010. The web application of my customer runs on SSL. &lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;My aim in the last days was simply to connect to a list of a different site and read the list items on a page. Not a big deal, you might think…&lt;/em&gt;&lt;/p&gt; &lt;p&gt;At the beginning if my journey, I was looking for the old and missed option “Connect to another library” that we are to find in SharePoint Designer 2007. This operation helped use time ago in simply connecting to another list and using this list as data source for our data views. After a desperate search in the SharePoint Designer 2010 UI, I recognized that this option vanished. I did some research on the net and found a really interesting &lt;a href="http://blogs.msdn.com/b/sharepointdesigner/archive/2009/11/02/sharepoint-designer-2010-new-shell-tour.aspx" target="_blank"&gt;article&lt;/a&gt; explaining this and other enhancements of the new UI of SharePoint Designer 2010. If you want to connect to a list in 2010 manner, you have to create a SOAP connection that consumes the “_vti_bin/Lists.asmx” web service of your site. The &lt;a href="http://blogs.microsoft.co.il/blogs/cizi/archive/2010/08/01/connect-to-another-library-in-sharepoint-designer-2010.aspx" target="_blank"&gt;blog post of Cizi&lt;/a&gt; gave me the necessary hints on how to accomplish this task.&lt;/p&gt; &lt;p&gt;Thinking that I finally managed to configure correctly my data source, I started in creating my data view web part on the new page. Unfortunately, this was not exactly my day… SharePoint Designer 2010 returned following exception:&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;The server returned a non-specific error when trying to get data from the data source. Check the format and content of your query and try again. If the problem persists, contact the server administrator.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;As you might imagine, this level of detail did not help me finding out immediately the solution to this problem. The SharePoint logs, however, were precise enough to start a new search in internet:&lt;/p&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;An operation failed because the following certificate has validation errors:\n\nSubject Name: …. …. …. …. …. Errors:\n\n The root of the certificate chain is not a trusted root authority.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Do you remember what I told you before? My customer’s web application run on SSL. The exception of the log and this fact led me to an interesting &lt;a href="http://community.zevenseas.com/Blogs/Daniel/Lists/Posts/Post.aspx?ID=139" target="_blank"&gt;article&lt;/a&gt; explaining the solution of a similar problem and that SharePoint has its own list of trusted CA’s. And watch out… this list of trusted CA’s is not the same as the list of the operating system. The issues vanished as the correct CA was added in the SharePoint 2010 central administration.&lt;/p&gt; &lt;p&gt;After further research, I got a link that is describing exactly the same situation I had the last days. You can find a detailed explanation of everything on &lt;a href="http://blog.brainlitter.com/archive/2010/08/02/resolution-for-sharepoint-designer-2010-data-source-non-specific-error.aspx" target="_blank"&gt;this&lt;/a&gt; blog post.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-5615751005979819745?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/5615751005979819745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/11/troubles-in-accessing-list-data-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5615751005979819745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5615751005979819745'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/11/troubles-in-accessing-list-data-from.html' title='Troubles in accessing list data from SharePoint 2010 web services over SSL with SharePoint Designer 2010'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-6811089195500498262</id><published>2010-11-01T16:35:00.001+01:00</published><updated>2010-11-01T16:42:18.912+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Client Object Model'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Developer Walkthroughs'/><title type='text'>Client object model: Loading all users from the User Information List</title><content type='html'>&lt;p&gt;&lt;em&gt;recently I’m playing around with the SharePoint 2010 client object model for a small project that I will share with you in the next couple of weeks. I’m fascinated from the power of this client API and what you can do. Lately, I tried to retrieve user information of my user SharePoint site’s user accounts from the “User Information List” of my test SharePoint site. A nice explanation what this user information list is can be found on Tobias Zimmergren’s blog &lt;/em&gt;&lt;a href="http://www.zimmergren.net/archive/2008/06/25/sharepoints-hidden-user-list-user-information-list.aspx" target="_blank"&gt;&lt;em&gt;post&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. This code snippet shows you how to load only the users from this user information list. &lt;/em&gt;&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;ClientContext context = new ClientContext("YourSiteUrl");&lt;br /&gt;&lt;br /&gt;List userList = context.Web.SiteUserInfoList;&lt;br /&gt;context.Load(userList);&lt;br /&gt;CamlQuery query = new CamlQuery();&lt;br /&gt;query.ViewXml = "&amp;lt;View&amp;gt;&amp;lt;Query&amp;gt;&amp;lt;Where&amp;gt;&amp;lt;Eq&amp;gt;&amp;lt;FieldRef Name='ContentType'/&amp;gt;&amp;lt;Value Type='Text'&amp;gt;Person&amp;lt;/Value&amp;gt;&amp;lt;/Eq&amp;gt;&amp;lt;/Where&amp;gt;&amp;lt;/Query&amp;gt;&amp;lt;/View&amp;gt;";&lt;br /&gt;ListItemCollection collection = userList.GetItems(query);&lt;br /&gt;context.Load(collection, pj =&amp;gt; pj.Include(p =&amp;gt; p["Name"], p=&amp;gt; p.ContentType));&lt;br /&gt;context.ExecuteQuery();&lt;br /&gt;&lt;br /&gt;foreach (ListItem item in collection)&lt;br /&gt;{&lt;br /&gt;  Console.WriteLine(item["Name"] + " " + item.ContentType.Name);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;First, the code above prepares the “SiteUserInfoList” list on line 3-4. Then, a CAML query is created that is going to restrict the returned items to the user accounts, filtering out all groups stored in the list. In addition, line 8 restricts the returned fields of the result set by specifying only the name and content type. Finally, at line 9, the query is executed and the desired data is returned in the ListItemCollection.&lt;/p&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;Please note:&lt;/em&gt; you must be SharePoint site admin to access this list like that&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Hope this helps,&lt;br&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-6811089195500498262?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/6811089195500498262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/11/client-object-model-loading-all-users.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/6811089195500498262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/6811089195500498262'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/11/client-object-model-loading-all-users.html' title='Client object model: Loading all users from the User Information List'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-872649395312239609</id><published>2010-10-31T10:31:00.001+01:00</published><updated>2010-10-31T10:31:50.403+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><title type='text'>SharePoint 2010: adding, editing, or removing WebParts (content) on Dispform.aspx, Editform.aspx, and NewForm.aspx without SharePoint Designer</title><content type='html'>&lt;p&gt;&lt;em&gt;Most users benefit from the great browser editing experience of SharePoint 2010. On the other side, SharePoint 2010 Designer is required when making changes to the&lt;/em&gt;&lt;em&gt; “Dispform.aspx”, “Editform.aspx”, or “NewForm.aspx” list forms. However, if your requirement is to add, edit, or remove some WebParts (content) to these pages, you don’t necessarily need to launch SharePoint 2010 Designer.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;This can be accomplished by changing slightly the URL of the form that you want to edit. You only need to extend the URL with the query string parameters “PageView=SharedView&amp;amp;Toolpaneview=2”. &lt;/p&gt; &lt;p&gt;Here some examples how it will look like:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&amp;lt;your host&amp;gt;/Lists/&amp;lt;your list&amp;gt;/dispform.aspx?PageView=SharedView&amp;amp;Toolpaneview=2&lt;/li&gt; &lt;li&gt;&amp;lt;your host&amp;gt;/Lists/&amp;lt;your list&amp;gt;/editform.aspx?PageView=SharedView&amp;amp;Toolpaneview=2&lt;/li&gt; &lt;li&gt;&amp;lt;your host&amp;gt;/Lists/&amp;lt;your list&amp;gt;/newform.aspx?PageView=SharedView&amp;amp;Toolpaneview=2&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;When adding these parameters to your desired URL, SharePoint 2010 changes to the page editing mode that you are used to have on other WebPart pages. You can add, edit or remove WebParts to this page. &lt;/p&gt; &lt;p&gt;Please note, however, that changing the list item fields is still not possible in this way. This can be accomplished in SharePoint 2010 Designer or by modifying the visibility parameters of your list content type..&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-872649395312239609?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/872649395312239609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/10/sharepoint-2010-adding-editing-or.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/872649395312239609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/872649395312239609'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/10/sharepoint-2010-adding-editing-or.html' title='SharePoint 2010: adding, editing, or removing WebParts (content) on Dispform.aspx, Editform.aspx, and NewForm.aspx without SharePoint Designer'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-2930175551222528388</id><published>2010-10-22T16:20:00.001+02:00</published><updated>2010-10-22T16:20:45.918+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='Exception'/><title type='text'>“An unexpected exception has occurred” when associating a reusable workflow to a list or content type in SharePoint 2010 Designer</title><content type='html'>&lt;p&gt;&lt;em&gt;recently I was creating some reusable workflows for one of my customers with SharePoint 2010 Designer. Once a reusable workflow is created, you can assign it either to a list or a content type in SharePoint 2010 Designer. When you executed one of these steps, however, a browser window opens and redirects you directly to the workflow association page of your list or content type. Normally, you can finish the association process directly there.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Unfortunately, this time I got a very useful “An unexpected exception has occurred” that everyone of us loves.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TMGdu7dAM_I/AAAAAAAAAS8/5rYUMrpBELE/s1600-h/image3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_3lC_bucoo88/TMGdvNnEhVI/AAAAAAAAATA/XSfADa9N5IM/image_thumb1.png?imgmax=800" width="404" height="194"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;After several trials I found the mistake that I made. My reusable workflow was &lt;strong&gt;never published&lt;/strong&gt; (I only saved it and forgot to publish it) in SharePoint 2010 Designer before. Therefore, the system was not able to assign a workflow that was only saved. Somehow clear, you might think. However, the error message was in this case not very useful.&lt;/p&gt; &lt;p&gt;So don’t forget to publish your workflow with SharePoint Designer before assigning it to a list or a content type!&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-2930175551222528388?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/2930175551222528388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/10/unexpected-exception-has-occurred-when.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/2930175551222528388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/2930175551222528388'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/10/unexpected-exception-has-occurred-when.html' title='“An unexpected exception has occurred” when associating a reusable workflow to a list or content type in SharePoint 2010 Designer'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_3lC_bucoo88/TMGdvNnEhVI/AAAAAAAAATA/XSfADa9N5IM/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-4591594339560966640</id><published>2010-10-16T14:25:00.001+02:00</published><updated>2010-10-16T14:25:42.114+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Development environment'/><category scheme='http://www.blogger.com/atom/ns#' term='Developer Walkthroughs'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>File not found exception when accessing SPSite</title><content type='html'>&lt;p&gt;&lt;em&gt;when you want to build custom application in Visual Studio 2010 that are accessing the SharePoint 2010 object model, you will probably encounter the famous “File not found exception” when accessing an SPSite.&lt;/em&gt;&lt;em&gt;This blog post shows you how to avoid this exception and how to setup your console application or ASP.NET web application the right way.&lt;/em&gt;&lt;/p&gt;  &lt;h2&gt;Overview&lt;/h2&gt;  &lt;p&gt;SharePoint 2010 runs on an x64 environment and supports the .NET Framework 3.5. All custom applications that want to access the SharePoint 2010 object model must follow the same environmental settings and target platform settings, i.e., run in a .NET Framework 3.5 environment and the platform x64 (or at least “Any CPU”). If you create a console application or an ASP.NET web application, Visual Studio 2010 will probably setup your environment for x84 and the .NET Framework 4.0. If you try to access the SharePoint 2010 object model with this configuration, you will encounter an “FileNotFoundException” when accessing the SPSite object.&lt;/p&gt;  &lt;p&gt;In this post I’m going to show you how to configure…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;a console application accessing the SharePoint 2010 object model&lt;/li&gt;    &lt;li&gt;a web application accessing the SharePoint 2010 object model&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Please note that this post assumes that you correctly add the necessary binary files (e.g., Microsoft.SharePoint) for yourself.&lt;/p&gt;  &lt;h2&gt;Accessing SharePoint 2010 object model with a console application&lt;/h2&gt;  &lt;p&gt;As already mentioned in the overview section, you have to ensure that your project environment is setup up to use the .NET Framework 3.5 and the platform target x64 (or Any CPU). You can change the settings of your projects by accessing the project properties.&lt;/p&gt;  &lt;p&gt;Ensure that the target framework is .NET Framework 3.5 since the .NET Framework 4.0 is not yet supported.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/TLmZtZFbuxI/AAAAAAAAASU/_iSfEwMVeAs/s1600-h/targetFramework%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="targetFramework" border="0" alt="targetFramework" src="http://lh3.ggpht.com/_3lC_bucoo88/TLmZttE7q1I/AAAAAAAAASY/mumnQhJcQCs/targetFramework_thumb%5B1%5D.png?imgmax=800" width="404" height="231" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Specify the target platform to “Any CPU”…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TLmZuLEZJHI/AAAAAAAAASc/_fENgRDGwis/s1600-h/AnyCPU%20Console%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="AnyCPU Console" border="0" alt="AnyCPU Console" src="http://lh5.ggpht.com/_3lC_bucoo88/TLmZuu6pkTI/AAAAAAAAASg/CJDKvZCUrsI/AnyCPU%20Console_thumb%5B1%5D.png?imgmax=800" width="404" height="176" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;or x64…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_3lC_bucoo88/TLmZuw6jMXI/AAAAAAAAASk/rTXcFiGae20/s1600-h/Snip64%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Snip64" border="0" alt="Snip64" src="http://lh4.ggpht.com/_3lC_bucoo88/TLmZvfhRccI/AAAAAAAAASo/DNQFVVe7kLw/Snip64_thumb%5B1%5D.png?imgmax=800" width="404" height="176" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The “FileNotFoundException” will be gone away if you start debugging your console application again.&lt;/p&gt;  &lt;h2&gt;Accessing SharePoint object model 2010 with an ASP.NET application&lt;/h2&gt;  &lt;p&gt;Accessing the SharePoint object model 2010 with an ASP.NET application follows the same strategy as in the console application. You have to configure the target framework to .NET Framework 3.5 and the target platform to x64 or “Any CPU”. You can change the properties in a similar way as we saw before with the console application. &lt;/p&gt;  &lt;p&gt;However, you will not get the same development experience since the integrated web server of Visual Studio 2010 (Cassini) does not run in an x64 environment. Because of that, you will get again the “FileNotFoundException” when accessing the SharePoint 2010 object model. You will notice however, that the application runs like a charm when deployed in web server that supports x64 (such as IIS7). This is really a lame situation, since developing like that can become a pain in the ass.&lt;/p&gt;  &lt;p&gt;Don’t worry! We don’t need necessarily to stick on the integrated web server of Visual Studio 2010. We can change our ASP.NET project configuration to be debuggable in an external web server such as IIS7. To do so, we need to follow these steps:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;configure your web application in Visual Studio 2010 to the target .NET Framework 3.5 and to run as x64 or “Any CPU” (similar as before with the console application)&lt;/li&gt;    &lt;li&gt;create a web application in IIS7 and configure the application pool to run for the .NET Framework Version v2.0 and x64. To ensure that the application runs in x64, just set “Enable 32-Bit Applications” to false.&lt;a href="http://lh4.ggpht.com/_3lC_bucoo88/TLmZvob8-yI/AAAAAAAAASs/Vld4kSbpvYw/s1600-h/AppliCationPool%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="AppliCationPool" border="0" alt="AppliCationPool" src="http://lh6.ggpht.com/_3lC_bucoo88/TLmZwLtI5lI/AAAAAAAAASw/aJmnwN6NCNc/AppliCationPool_thumb%5B1%5D.png?imgmax=800" width="404" height="239" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;configure your web application in Visual Studio 2010 in the property page to “Use Custom Web Server” and specify there the url of your web application in IIS7&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TLmZwX9gnKI/AAAAAAAAAS0/0csbfUT5wTk/s1600-h/targetWeb%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="targetWeb" border="0" alt="targetWeb" src="http://lh3.ggpht.com/_3lC_bucoo88/TLmZxMghWNI/AAAAAAAAAS4/LCbMxq7zcp4/targetWeb_thumb%5B1%5D.png?imgmax=800" width="404" height="553" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;publish the .NET web application to the target web application of IIS7&lt;/li&gt;    &lt;li&gt;debug your web application &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;After setting up the environment like that, after pressing the F5 button, Visual studio 2010 will automatically attach the debugger to the right IIS7 worker process. Now, you are ready to debug your ASP.NET web application without any problems.&lt;/p&gt;          &lt;h2&gt;Summary&lt;/h2&gt;  &lt;p&gt;Using the SharePoint 2010 object model in Visual Studio 2010 requires some configuration steps for your custom applications. This post showed you which settings are important to start with for console application projects and for ASP.NET web application projects.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;Patrick Lamber&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-4591594339560966640?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/4591594339560966640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/10/file-not-found-exception-when-accessing.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4591594339560966640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4591594339560966640'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/10/file-not-found-exception-when-accessing.html' title='File not found exception when accessing SPSite'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_3lC_bucoo88/TLmZttE7q1I/AAAAAAAAASY/mumnQhJcQCs/s72-c/targetFramework_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-8007261868374220713</id><published>2010-09-09T18:36:00.001+02:00</published><updated>2010-09-09T18:36:05.304+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Development environment'/><title type='text'>WADA: a nice tool to consider for our SharePoint community</title><content type='html'>&lt;p&gt;This tool is intended for all those developers in the pre-SharePoint 2010 and Visual Studio 2010 era. My colleague &lt;a href="http://angler.wordpress.com" target="_blank"&gt;Martin&lt;/a&gt; developed a Visual Studio plugin called WADA (W3WP Advanced Attacher),&amp;#160; that gives you the possibility to attach fast to the w3wp process by using some useful filter criteria needed by SharePoint 2007 developers (and also by web developers).&lt;/p&gt;  &lt;p&gt;Download and test WADA from &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/7d740ee7-344a-4550-a272-b6de0071f42f?SRC=Home" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Best regards,&lt;/p&gt;  &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-8007261868374220713?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/8007261868374220713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/09/wada-nice-tool-to-consider-for-our.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/8007261868374220713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/8007261868374220713'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/09/wada-nice-tool-to-consider-for-our.html' title='WADA: a nice tool to consider for our SharePoint community'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-1188867257581828202</id><published>2010-09-04T08:10:00.001+02:00</published><updated>2010-09-04T08:10:14.742+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><title type='text'>SharePoint 2010: PDF files do not open directly in your browser</title><content type='html'>&lt;p&gt;&lt;em&gt;If you use SharePoint 2010 and you leave all web application settings to default, you will notice that the browser will always prompt you to save a linked PDF file to disk when clicking on the link. However, in most scenarios, you probably want to let the browser open the PDF directly in the browser window for faster viewing. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;You can do this by changing the general settings of you web application to allow the “Browse File Handling” to “Permissive”. A step-by-step guide with screen shots can be found &lt;a href="http://www.sharepointedutech.com/2010/05/05/opening-pdfs-in-sharepoint-2010/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-1188867257581828202?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/1188867257581828202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/09/sharepoint-2010-pdf-files-do-not-open.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/1188867257581828202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/1188867257581828202'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/09/sharepoint-2010-pdf-files-do-not-open.html' title='SharePoint 2010: PDF files do not open directly in your browser'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-735860795651416603</id><published>2010-09-04T08:08:00.001+02:00</published><updated>2010-09-04T08:08:07.383+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><title type='text'>SharePoint 2010: Install PDF I-Filter</title><content type='html'>&lt;p&gt;SharePoint 2010 does not include out-of-the-box an iFilter for PDF files. An iFilter is used by the search component of SharePoint to index files of a certain kind (for an PDF iFilter PDF files). Withouth this filter, the content of your PDF files is not extracted and filtered. However, you can use the free iFilter of Adobe to solve this problem. If you are interested, you may find useful the step-by-step installation guide on &lt;a href="http://www.codeproject.com/KB/sharepoint/PDFiFIlterSharePoint2010.aspx" target="_blank"&gt;this&lt;/a&gt; link.&lt;/p&gt;  &lt;p&gt;Please note that there are also alternatives to the Adobe iFilter. If your core business is based on indexing PDF files, you probably should consider to buy a license of the well known iFilter for PDF files of Foxit. Based on &lt;a href="http://blogs.itacs.de/Consulting/Lists/Beitraege/Post.aspx?ID=20" target="_blank"&gt;this&lt;/a&gt; post (German) and &lt;a href="http://blogs.msdn.com/b/opal/archive/2008/12/10/pdf-ifilter-battle-foxit-vs-adobe-64bit-version.aspx" target="_blank"&gt;this&lt;/a&gt; post (English), Foxit PDF iFilter is faster in indexing than the version of Adobe.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-735860795651416603?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/735860795651416603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/09/sharepoint-2010-install-pdf-i-filter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/735860795651416603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/735860795651416603'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/09/sharepoint-2010-install-pdf-i-filter.html' title='SharePoint 2010: Install PDF I-Filter'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-2447644926324406824</id><published>2010-08-28T11:16:00.001+02:00</published><updated>2010-08-28T11:16:09.572+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><title type='text'>Exploring SharePoint 2010: Managed accounts</title><content type='html'>&lt;p&gt;&lt;em&gt;in this first post of a series of post that will follow describes the new feature “managed accounts” feature introduced with the new version of SharePoint 2010. This feature is listed on &lt;a href="http://sharepoint.microsoft.com/en-us/buy/Pages/Editions-Comparison.aspx?Capability=Sites" target="_blank"&gt;this&lt;/a&gt; link under “sites” and is available in all SharePoint 2010 versions.&lt;/em&gt;&lt;/p&gt;  &lt;h2&gt;What is the managed accounts feature?&lt;/h2&gt;  &lt;p&gt;Usually, in a SharePoint farm an administrator is concerned in managing more than one account needed by the farm to function properly (e.g., service account, farm account, application pool accounts etc.). Most of the time, it was necessary to change the passwords of these accounts depending on security needs or corporate policies. This task was not always easy to accomplish with the versions earlier than SharePoint 2010. With the introduction of SharePoint 2010 this problem was solved by introducing the managed accounts feature. You have to register an account as managed account in SharePoint 2010 if you want to use it either as a service account or application pool account. In addition, you have the possibility to delegate the password change tasks directly to SharePoint. &lt;/p&gt;  &lt;h2&gt;Requirements&lt;/h2&gt;  &lt;p&gt;The password change of the managed accounts feature does only work if your account is not set to “User cannot change password”. If this flag is set, the change password functionality is greyed out.&lt;/p&gt;  &lt;p&gt;If you want to receive e-mail notification events, the e-mail settings of the farm must be configured with a valid e-mail address and server.&lt;/p&gt;  &lt;h2&gt;The management accounts in central admin&lt;/h2&gt;  &lt;p&gt;The managed accounts feature is reachable in the central administration under the “security” tab. You will find there under “General Security” two options that are of interest for us:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;configure managed accounts: this page gives you the ability to register a managed account and manage the passwords of it&lt;/li&gt;    &lt;li&gt;configure password change settings: the page that specifies the e-mail with all the notifications needed to receive password change notifications&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_3lC_bucoo88/THjTyO2_EoI/AAAAAAAAAR0/k-e_2tphFw0/s1600-h/image%5B4%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/THjTyjEsVvI/AAAAAAAAAR4/dxTmRDGl-wc/image_thumb%5B2%5D.png?imgmax=800" width="404" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Configure managed accounts&lt;/h2&gt;  &lt;p&gt;When you press the “Configure managed accounts” link, you will jump directly into the managed accounts overview page. In this page you get an overview of all your managed accounts of the farm and the scheduled password changes.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/THjTzHrEV6I/AAAAAAAAAR8/YPbBFHjnw3U/s1600-h/image%5B12%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/THjTz-oz_VI/AAAAAAAAASA/wr1qiJB03D4/image_thumb%5B6%5D.png?imgmax=800" width="404" height="94" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can either register a new managed account with the “Register Managed Account”, and edit or delete existing managed accounts. If you choose to edit an existing managed account, you will see something like that:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/THjT0VskdNI/AAAAAAAAASE/Oqk9daoliss/s1600-h/image%5B21%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_3lC_bucoo88/THjT023p44I/AAAAAAAAASI/1B9iLAHQms4/image_thumb%5B11%5D.png?imgmax=800" width="404" height="374" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can see that most options are self-explanatory. You can either change the password immediately with a password you choose, or you enable the automatic password change. You can setup when the password changes deepening on the expiry policy settings of your company. In addition, an administrator can be notified by mail to get an overview about all actions that occur.&lt;/p&gt;  &lt;h2&gt;Configure password change settings&lt;/h2&gt;  &lt;p&gt;When you press the “Configure Password Change Settings” you will jump directly into an settings page that gives you the possibility to specify the e-mail address that should receive all notifications related to the password changes of your managed accounts.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_3lC_bucoo88/THjT1WSCY0I/AAAAAAAAASM/QPohmFF0re0/s1600-h/image%5B25%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_3lC_bucoo88/THjT2Bm_0iI/AAAAAAAAASQ/_iOwjgedIg4/image_thumb%5B13%5D.png?imgmax=800" width="404" height="382" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Summary&lt;/h2&gt;  &lt;p&gt;The managed accounts feature of all versions of SharePoint 2010 simplifies the password management of your service accounts and application pool accounts used in your farm. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-2447644926324406824?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/2447644926324406824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/08/exploring-sharepoint-2010-managed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/2447644926324406824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/2447644926324406824'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/08/exploring-sharepoint-2010-managed.html' title='Exploring SharePoint 2010: Managed accounts'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_3lC_bucoo88/THjTyjEsVvI/AAAAAAAAAR4/dxTmRDGl-wc/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-79073878799309365</id><published>2010-08-15T14:32:00.001+02:00</published><updated>2010-08-15T14:32:36.296+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><title type='text'>What is SharePoint?</title><content type='html'>&lt;p&gt;&lt;em&gt;My answer that follows every time I’m asked what I’m doing for my living is: I’m a consultant in the field of computer science that is specialized into Microsoft-based technologies. My main focus lies into SharePoint-based technologies. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;And for 99% of the times, this question follows: Nice. But what is SharePoint? &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;In this post I’m trying to answer this question and to give an overview of the main capabilities introduced with the new version of SharePoint 2010. The content of this post is based on my past experience with SharePoint and content picked up from the SharePoint’s official &lt;a href="http://sharepoint.microsoft.com/en-us/product/Pages/default.aspx" target="_blank"&gt;website&lt;/a&gt;. &lt;/em&gt;&lt;/p&gt;  &lt;h2&gt;What is SharePoint?&lt;/h2&gt;  &lt;p&gt;A definition, on what SharePoint is, is described below:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;“SharePoint is an extensible web-based platform used to create collaboration solutions.”&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The words &lt;em&gt;extensible web-based platform&lt;/em&gt; tell us that we have a system that provides us a set of basic functionalities that we can use either &lt;a href="http://en.wikipedia.org/wiki/Out_of_the_box" target="_blank"&gt;out of the box&lt;/a&gt; or by customizing our system with our own rules. The customization of SharePoint can either be done directly on the system with or without the intervention of a software developer. This system can be reached in a communities intranet or, if desired, also from the internet.&lt;/p&gt;  &lt;p&gt;This extensible platform can be used to create solutions that leverage the collaboration between people in a community, thus, gaining people’s efficiency in information access and exchange due to standardized ways of interacting and creating content for the community.&lt;/p&gt;  &lt;h2&gt;What are the capabilities of SharePoint?&lt;/h2&gt;  &lt;p&gt;The unified collaboration infrastructure of SharePoint 2010, which is currently the latest version of SharePoint, is subdivided by Microsoft in following capabilities. More information about these capabilities can be found on &lt;a href="http://sharepoint.microsoft.com/en-us/product/Pages/default.aspx" target="_blank"&gt;this&lt;/a&gt; official site:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://sharepoint.microsoft.com/en-us/product/capabilities/sites/Pages/default.aspx" target="_blank"&gt;Sites&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://sharepoint.microsoft.com/en-us/product/capabilities/communities/Pages/default.aspx" target="_blank"&gt;Communities&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://sharepoint.microsoft.com/en-us/product/capabilities/content/Pages/default.aspx" target="_blank"&gt;Content&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://sharepoint.microsoft.com/en-us/product/capabilities/search/Pages/default.aspx" target="_blank"&gt;Search&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://sharepoint.microsoft.com/en-us/product/capabilities/insights/Pages/default.aspx" target="_blank"&gt;Insights&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://sharepoint.microsoft.com/en-us/product/capabilities/composites/Pages/default.aspx" target="_blank"&gt;Composites&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Each of these capabilities provides a set of out of the box functionalities that are provided in three different versions of SharePoint:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SharePoint 2010 Foundation&lt;/li&gt;    &lt;li&gt;SharePoint 2010 Standard&lt;/li&gt;    &lt;li&gt;SharePoint 2010 Enterprise&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The difference between the versions of SharePoint listed above lies on the pricing and number of functionalities provided. A general overview of all the features, their corresponding capabilities, and the versions of SharePoint that use these features, is given on &lt;a href="http://sharepoint.microsoft.com/en-us/buy/Pages/Editions-Comparison.aspx" target="_blank"&gt;this&lt;/a&gt; official link. &lt;/p&gt;  &lt;h2&gt;Summary&lt;/h2&gt;  &lt;p&gt;SharePoint is an extensible web-based platform used to create collaboration solutions for communities. The current version of SharePoint provides 6 different capabilities that group all the features provided by this platform in three different versions of SharePoint. In the next months, I’m going to explore with you step by step &lt;a href="http://sharepoint.microsoft.com/en-us/buy/Pages/Editions-Comparison.aspx" target="_blank"&gt;these&lt;/a&gt; features.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-79073878799309365?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/79073878799309365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/08/what-is-sharepoint.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/79073878799309365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/79073878799309365'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/08/what-is-sharepoint.html' title='What is SharePoint?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-1690021892576202544</id><published>2010-08-07T18:22:00.001+02:00</published><updated>2010-08-07T18:22:51.861+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Installation'/><category scheme='http://www.blogger.com/atom/ns#' term='Exception'/><title type='text'>SharePoint 2007 installation on a Windows Server 2008 R2: This program is blocked due to compatibility issues</title><content type='html'>&lt;p&gt;Hi, &lt;/p&gt; &lt;p&gt;nowadays, we are only speaking about SharePoint 2010. However, there remain still cases where you need to make a fresh installation of SharePoint 2007 on a new operating system such as Windows Server 2008 R2. If you are one of the lucky ones, that has the very first disc of SharePoint 2007 without SP2, you will encounter this error when you try to install it on Windows Server 2008:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;“This program is blocked due to compatibility issues  &lt;p&gt;Check online to see if solutions are available from the Microsoft website. If solution are found, Windows will automatically display a website that lists steps you can take.  &lt;p&gt;Program: Office SharePoint Server 2007 – Please read Microsoft Knowledge Base article: 962935” &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/S0DIKZq5t2I/AAAAAAAAADI/Xh47cwYVBec/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh3.ggpht.com/_3lC_bucoo88/TF2IWv8DC9I/AAAAAAAAAQE/zh0jRoAGqPk/clip_image002%5B4%5D.gif?imgmax=800" width="404" height="212"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Don’t worry about this exception and you don’t need a new SharePoint 2007 disc with SP2 included. The solution to this problem is very simple. You have the possibility to “upgrade” your SharePoint 2007 disc by slipstreaming it with the desired service packs. Slipstream your disc to SP2 and you won’t get the exception anymore. Some months ago, I wrote a &lt;a href="http://patricklamber.blogspot.com/2010/01/how-do-i-slipstream-updates-into.html" target="_blank"&gt;post&lt;/a&gt; that explains exactly how to do it.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps,&lt;/p&gt; &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-1690021892576202544?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/1690021892576202544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/08/sharepoint-2007-installation-on-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/1690021892576202544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/1690021892576202544'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/08/sharepoint-2007-installation-on-windows.html' title='SharePoint 2007 installation on a Windows Server 2008 R2: This program is blocked due to compatibility issues'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_3lC_bucoo88/TF2IWv8DC9I/AAAAAAAAAQE/zh0jRoAGqPk/s72-c/clip_image002%5B4%5D.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-8864514410938556888</id><published>2010-07-30T19:01:00.001+02:00</published><updated>2010-08-08T08:37:34.678+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Developer Walkthroughs'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Parts'/><title type='text'>How do I pass/exchange data between two Visual Web Parts?</title><content type='html'>&lt;p&gt;Hi all,&lt;/p&gt;&lt;p&gt;&lt;em&gt;in this post of the post series &lt;/em&gt;&lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-visual-web-parts-in.html"&gt;&lt;em&gt;Visual WebParts&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, we are looking how to make two Visual WebParts exchange data on the same page. In this way you are able to solve some more complex scenarios like a master-child relation ship between two WebParts. This post tells you how to use this built-in functionality by using WebPart connections. WebPart connections are interfaces that define the communication between a provider of content and a consumer of content. The content provider WebPart exposes data to an interface you have to specify. This interface can then be used to consume this exposed data in the content consumer.&lt;/em&gt;&lt;/p&gt;&lt;h2&gt;Walkthrough&lt;/h2&gt;&lt;p&gt;In this post we are going to exchange a single integer value from the provider WebPart to the consumer. We are only showing how to set up the connection. However, this information is enough to create WebPart connections that are more complicated. When you are developing a WebPart connection, you have to follow these basic steps:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Step 1: create the interface for the data you want to expose&lt;/li&gt;&lt;li&gt;Step 2: create your provider WebPart with the definition of the interface you previously created&lt;/li&gt;&lt;li&gt;Step 3: create your consumer WebPart and use the interface you previously created to consume the data&lt;/li&gt;&lt;li&gt;Step 4: add the WebParts to your page and connect them together with the WebPart menu of the provider WebPart&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: as I created this tutorial, I noticed that the WebPart connections are not working in a Wiki page of SharePoint 2010. Therefore, use a WebPart page with WebPart zones to verify the results. &lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;Step 1: create the interface for the data you want to expose&lt;/h2&gt;&lt;p&gt;First of all, we need to create a new &lt;strong&gt;Visual WebPart&lt;/strong&gt; project in Visual Studio 2010. If you still don’t know how to do this, you can see how to do this in my &lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-visual-web-parts-in.html"&gt;Visual WebPart post series&lt;/a&gt;. After, we create a simple C# interface that will be used to define our simple data connection.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;create a new &lt;strong&gt;Visual WebPart &lt;/strong&gt;project in Visual Studio 2010&lt;/li&gt;&lt;li&gt;add a new &lt;strong&gt;Interface&lt;/strong&gt; and call it for the sake of this example &lt;em&gt;IProvideMyAge&lt;/em&gt;&lt;/li&gt;&lt;li&gt;open the file &lt;em&gt;IProvideMyAge.cs&lt;/em&gt; and put the code that follows&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush: csharp; ruler: true;"&gt;public interface IProvideMyAge &lt;br /&gt;{ &lt;br /&gt;    int Age { get; } &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: this simple interface provides only one simple data definition. You can put as many values as you want and also consume complex or custom types. The only requirement is that these types are marked as serializable&lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;Step 2: create your provider WebPart &lt;/h2&gt;&lt;p&gt;Now that we created our interface, we have to tell our Visual WebPart to use this interface and provide a WebPart connection point. For the sake of the example we will only define this connection point and put a hardcoded value for the data that later will be consumed.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;delete the WebPart that was automatically generated in the project. It’s name is probably &lt;em&gt;VisualWebPart1&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Add a new &lt;strong&gt;Visual WebPart&lt;/strong&gt; and call it &lt;em&gt;MyProvider&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Open the file &lt;em&gt;MyProvider.cs&lt;/em&gt; and verify the code that follows. You have to do some little changes. You can verify the changes in the next code snippet: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Add the interface &lt;em&gt;IProvideMyAge&lt;/em&gt; to the WebPart on line 1 &lt;li&gt;Create a method that specifies the name of the connection provider (line 12-16) and returns the current instance of the WebPart &lt;li&gt;implement the interface property provided by the &lt;em&gt;IProvdeMyAge&lt;/em&gt; interface on line 18-23 &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;pre class="brush: csharp; ruler: true; collapse: true;"&gt;public class MyProvider : WebPart, IProvideMyAge2) &lt;br /&gt;{&lt;br /&gt;    // Visual Studio might automatically update this path when you change the Visual Web Part project item.&lt;br /&gt;    private const string _ascxPath = @"~/_CONTROLTEMPLATES/WebPartConnections/MyProvider/MyProviderUserControl.ascx";&lt;br /&gt;&lt;br /&gt;    protected override void CreateChildControls()&lt;br /&gt;    {&lt;br /&gt;        Control control = Page.LoadControl(_ascxPath);&lt;br /&gt;        Controls.Add(control);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [ConnectionProvider("TheAgeInterface")]&lt;br /&gt;    IProvideMyAge WhatIsMyAge()&lt;br /&gt;    {&lt;br /&gt;        return this;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    int IProvideMyAge.Age&lt;br /&gt;    {&lt;br /&gt;        get &lt;br /&gt;        { &lt;br /&gt;            return 27;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;h2&gt;Step 3: create your consumer WebPart&lt;/h2&gt;&lt;p&gt;Before, we created the data interface and the provider Webpart. Now, it’s time to create our consumer WebPart. We are working with Visual WebParts. Therefore, we have to work on two different classes. The user control that will present the data of the WebPart class that we are going to create and the WebPart class itself that will contain our consumption point. The steps to follow are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;create the consumer and define the consumption point &lt;/li&gt;&lt;li&gt;tell the user control loaded in your WebPart who you are by passing your reference &lt;/li&gt;&lt;li&gt;create a property that will hold your WebPart class in the user control &lt;/li&gt;&lt;br /&gt;&lt;li&gt;add a label to the user control &lt;/li&gt;&lt;li&gt;fill in the “OnPrerender” method your label with the value collected from the WebPart &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Now, we are going to create the Visual WebPart and define our consumption point:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Add a new &lt;strong&gt;Visual WebPart&lt;/strong&gt; and call it &lt;em&gt;MyConsumer&lt;/em&gt; &lt;li&gt;Open &lt;em&gt;MyConsumer.cs&lt;/em&gt; and the code that follows &lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush: csharp; ruler: true; collapse: true;"&gt;public class MyConsumer : WebPart&lt;br /&gt;{&lt;br /&gt;    // Visual Studio might automatically update this path when you change the Visual Web Part project item.&lt;br /&gt;    private const string _ascxPath = @"~/_CONTROLTEMPLATES/WebPartConnections/MyConsumer/MyConsumerUserControl.ascx";&lt;br /&gt;&lt;br /&gt;    protected override void CreateChildControls()#&lt;br /&gt;    {&lt;br /&gt;        MyConsumerUserControl control = Page.LoadControl(_ascxPath) as MyConsumerUserControl;&lt;br /&gt;        control.WebPart = this;&lt;br /&gt;        Controls.Add(control);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public int Age { get; set; }&lt;br /&gt;    [ConnectionConsumer("TheAgeInterface")]&lt;br /&gt;    public void SetAge(IProvideMyAge age)&lt;br /&gt;    {&lt;br /&gt;        if (age != null)&lt;br /&gt;        {&lt;br /&gt;            this.Age = age.Age;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Notice that with lines 8-9 we are passing to a property of our user control the current WebPart reference (we will create the property in the user control in the next steps). We defined a property on line 13 to expose our data to our user control afterwards. Line 14-21 defines the consumption method of our consumer WebPart. &lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; the name of the connection must be the same as the name defined in our provider. &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Now, let us finish the work by making the last changes on our user control.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Open &lt;em&gt;MyConsumerUserControl.ascx&lt;/em&gt; and put there a label &lt;br /&gt;&lt;li&gt;Open &lt;em&gt;MyConsumerUserControl.ascx.cs&lt;/em&gt; and define the code as follows &lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush: csharp; ruler: true; collapse: true;"&gt;public partial class MyConsumerUserControl : UserControl&lt;br /&gt;{&lt;br /&gt;    public MyConsumer WebPart { get; set; }&lt;br /&gt;    &lt;br /&gt;    protected override void OnPreRender(EventArgs e)&lt;br /&gt;    {&lt;br /&gt;        base.OnPreRender(e);&lt;br /&gt;        this.Label1.Text = this.WebPart.Age.ToString();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;We defined in line 3 the property we populated before in our WebPart. This WebPart reference is then used in the OnPreRender method to populate the value in our label control we added to our user control. Now, we are ready to publish our project and test our simple connection.&lt;/p&gt;&lt;h2&gt;Step 4: add the WebParts to your page and connect them &lt;/h2&gt;&lt;p&gt;We finish up our example by publishing the WebParts and by creating a WebPart connection manually.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;publish&lt;/strong&gt; the WebPart project to SharePoint 2010&lt;/li&gt;&lt;li&gt;add both deployed WebParts to a page with WebPart zones&lt;/li&gt;&lt;li&gt;open the WebPart menu of your provider Webpart and you will notice a menu item called &lt;em&gt;Connection&lt;/em&gt;&lt;/li&gt;&lt;li&gt;follow this menu and create the connection with the desired consumer WebPart (in our example there should be only one listed WebPart)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;After the connection, you should see the magic and the value 27 in the label of your consumer WebPart.&lt;/p&gt;&lt;h2&gt;Summary&lt;/h2&gt;&lt;p&gt;WebPart connections give you the possibility to pass values from a provider WebPart to a consumer WebPart. In this post you saw the basic steps you need to follow to accomplish this task. The WebPart framework does the rest for you. If you want to get more information about this topic, just follow &lt;a href="Step 4: add the WebParts to your page and connect them together with the WebPart menu of the provider WebPart" target="_blank"&gt;this&lt;/a&gt; link.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Hope this helps,&lt;/p&gt;&lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-8864514410938556888?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/8864514410938556888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/07/how-do-i-passexchange-data-between-two.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/8864514410938556888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/8864514410938556888'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/07/how-do-i-passexchange-data-between-two.html' title='How do I pass/exchange data between two Visual Web Parts?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-3227862663057721537</id><published>2010-07-21T18:57:00.001+02:00</published><updated>2010-08-09T14:51:27.190+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Development environment'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>I can’t attach for debugging Visual Studio 2010 to my SharePoint 2007 w3wp process…</title><content type='html'>&lt;p&gt;Hi,&lt;/p&gt;&lt;p&gt;if you want to debug custom code with SharePoint 2007, you have to attach your project in Visual Studio to the w3wp process of your SharePoint site. It is also important to ensure that the code in your project is the same as the version deployed on your SharePoint solution. Otherwise, you will not be able to set a breakpoint and stop on your desired code location. Until now, nothing new.&lt;/p&gt;&lt;p&gt;Today, however, my colleagues came across a strange issue. They wanted to attach their project to a SharePoint process for debugging. Unfortunately, after several trials, they where still unsuccessful. After a while, we sit down and tried to remember the environmental changes we made in the last weeks and debugging session to find a potential issue. We changed to a new testing environment. This is what exactly changed:&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;server hardware &lt;/li&gt;&lt;li&gt;server name &lt;/li&gt;&lt;li&gt;new SharePoint installation &lt;/li&gt;&lt;li&gt;Visual Studio 2010 and .NET Framework 4.0 except Visual Studio 2008 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We started to verify again the “Attach to process” dialog of Visual Studio 2010 to see if we can find a solution. Fortunately, the solution was really near and we solved it in few seconds. At the end, we needed to specify the “Code Types” to attach in the “Attach to process” dialog. It seems that you have to specify it when attaching to a process by following these steps:&lt;/p&gt;&lt;ul&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:bd65f3e3-2454-41be-8faa-85c1925cc5b9" style="float:none; display:inline; margin:0px; padding:0px 0px 0px 0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SharePoint+Server" rel="tag"&gt;SharePoint Server&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Development+enviornment" rel="tag"&gt;Development enviornment&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+2010" rel="tag"&gt;Visual Studio 2010&lt;/a&gt;&lt;/div&gt;&lt;li&gt;press “select…” near to “Attach to: Automatic: Native code” &lt;/li&gt;&lt;li&gt;choose “Debug these code types” &lt;/li&gt;&lt;li&gt;choose “Managed (v2.0, v1.1, v1.0)” &lt;/li&gt;&lt;li&gt;confirm your selection and choose the desired w3wp process. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TEcnC9XYr1I/AAAAAAAAAP0/jhhf0j_R8lE/s1600-h/image%5B6%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_3lC_bucoo88/TEcnDgygMXI/AAAAAAAAAP4/-1C-07-joyE/image_thumb%5B2%5D.png?imgmax=800" width="404" height="276" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Hope this helps,&lt;/p&gt;&lt;p&gt;patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-3227862663057721537?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/3227862663057721537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/07/i-cant-attach-for-debugging-visual.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3227862663057721537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3227862663057721537'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/07/i-cant-attach-for-debugging-visual.html' title='I can’t attach for debugging Visual Studio 2010 to my SharePoint 2007 w3wp process…'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_3lC_bucoo88/TEcnDgygMXI/AAAAAAAAAP4/-1C-07-joyE/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-3778487679297598621</id><published>2010-07-16T18:41:00.001+02:00</published><updated>2010-08-09T15:14:04.404+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Developer Walkthroughs'/><title type='text'>How do I access private methods, properties and member variable not controlled by me in C#?</title><content type='html'>&lt;p&gt;&lt;em&gt;I’m back from my marriage and honey moon. So now I’m again having time to do some blogging activities. ;)&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Currently, I’m writing a migration procedure from one custom framework (call it framework A) to the other (call it framework B). During the development of the migration procedure I needed the access on the value of a member variable in framework A. Unfortunately, this member variable was private and there was no way to retrieve in another way. Neither, I had the access to the source code of framework A to change the member variable to public. “Damn… how do I get this value?… I need it only once for the migration…”. After a while a simple but effective idea came into my head: Use reflection! &lt;/em&gt;&lt;em&gt;In this post I’m going to show a small example on how accessing the private values of an object in C#.&lt;/em&gt; &lt;/p&gt;&lt;blockquote&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: please use reflection carefully. It is a really powerful functionality of C# but is a quite expensive task in execution time. &lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;Walkthrough&lt;/h2&gt;&lt;p&gt;In this posing we are creating a simple console application with a class called &lt;em&gt;PrivateClass.&lt;/em&gt; The code of this class is shown in the next code snippet.&lt;/p&gt;&lt;pre class="brush: csharp; ruler: true; collapse: true;"&gt;namespace ReflectionTest&lt;br /&gt;{&lt;br /&gt;    public class PrivateClass&lt;br /&gt;    {&lt;br /&gt;        public PrivateClass()&lt;br /&gt;        {&lt;br /&gt;            this._privateText = &amp;quot;You can't change me&amp;quot;;&lt;br /&gt;            this.PrivateNumber = 11;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        private String _privateText;&lt;br /&gt;        private int PrivateNumber { get; set; }&lt;br /&gt;&lt;br /&gt;        public override string ToString()&lt;br /&gt;        {&lt;br /&gt;            return String.Format(&amp;quot;PrivateNumber: {0}; PrivateText: {1}&amp;quot;, this.PrivateNumber, this._privateText);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;This example covers the access of a private member variable (line 11) and a private property (line 12). With this class, we are going to show following small demos:&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;Demo 1: How do I access the content of the private member variable with reflection? &lt;/li&gt;  &lt;li&gt;Demo 2: How do I modify the content of the private member variable with reflection? &lt;/li&gt;  &lt;li&gt;Demo 3: How do I access the content of the private property with reflection? &lt;/li&gt;  &lt;li&gt;Demo 4: How do I modify the content of the private property with reflection?&amp;#160; &lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Demo 1: How do I access the content of the private member variable with reflection?&lt;/h2&gt;&lt;p&gt;An example of how to retrieve a value from a private member variable can be seen in the next code snippet:&lt;/p&gt;&lt;pre class="brush: csharp; ruler: true; collapse: true;"&gt;static void Main(string[] args)&lt;br /&gt;{&lt;br /&gt;    PrivateClass myPrivateClass = new PrivateClass();&lt;br /&gt;&lt;br /&gt;    // input from ToString() at the beginning to see the content&lt;br /&gt;    Console.WriteLine(myPrivateClass);&lt;br /&gt;&lt;br /&gt;    FieldInfo fi = typeof(PrivateClass).GetField(&amp;quot;_privateText&amp;quot;, BindingFlags.NonPublic | BindingFlags.Instance);&lt;br /&gt;    String valueFromPrivateField = fi.GetValue(myPrivateClass).ToString();&lt;br /&gt;    Console.WriteLine(&amp;quot;And this was read with reflection: {0}&amp;quot;, valueFromPrivateField);&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;In this example, we are first instantiating the class to initialize all desired values and output them in the console output with the overwritten &lt;em&gt;toString&lt;/em&gt; method on line 5. The next step is to get the &lt;em&gt;FieldInfo&lt;/em&gt; of the desired field in our class. This class contains all necessary information about our field for further processing. &lt;/p&gt;&lt;p&gt;Line 7 searches the field called &lt;em&gt;privateText&lt;/em&gt;. With the second parameter we are guaranteeing that we are also getting back a result with a private field. At the end, we can use the “FieldInfo” to retrieve the desired value for any instance that we pass as parameter. The result is then outputted in the console. The results in the console can bee seen in the next figure:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TF__CjA_5EI/AAAAAAAAAQw/3UT5bfyzprg/s1600-h/image%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_3lC_bucoo88/TECLrgyFBxI/AAAAAAAAAQ0/lzBxgSg0uz8/image_thumb%5B1%5D.png?imgmax=800" width="404" height="207" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;h2&gt;Demo 2: How do I modify the content of the private member variable with reflection?&lt;/h2&gt;&lt;p&gt;We saw before that we need the &lt;em&gt;FieldInfo&lt;/em&gt; object instance to do something with our private member fields. If you look carefully on the methods that the &lt;em&gt;FieldInfo&lt;/em&gt; provides you, you will notice a &lt;em&gt;SetValue&lt;/em&gt; method. Guess what it does? :) You see the code in the next code snippet:&lt;/p&gt;&lt;pre class="brush: csharp; ruler: true; collapse: true;"&gt;static void Main(string[] args)&lt;br /&gt;{&lt;br /&gt;    PrivateClass myPrivateClass = new PrivateClass();&lt;br /&gt;&lt;br /&gt;    // input from ToString() at the beginning&lt;br /&gt;    Console.WriteLine(myPrivateClass);&lt;br /&gt;&lt;br /&gt;    FieldInfo fi = typeof(PrivateClass).GetField(&amp;quot;_privateText&amp;quot;, BindingFlags.NonPublic | BindingFlags.Instance);&lt;br /&gt;    fi.SetValue(myPrivateClass, &amp;quot;but I'm going to change you!&amp;quot;);&lt;br /&gt;    Console.WriteLine(myPrivateClass);&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;Most of the code is similar to the previous example. The interesting part lies on line 9 where we are going to change the value of the private member variable to a value that we want. The resulting console output follows:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/TECLsckYZlI/AAAAAAAAAQ4/QpKHSvsq3Ts/s1600-h/image5%5B1%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_3lC_bucoo88/TECLs2E49YI/AAAAAAAAARA/P-48IyRwYpo/image5_thumb.png?imgmax=800" width="404" height="206" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;h2&gt;Demo 3: How do I access the content of the private property with reflection?&lt;/h2&gt;&lt;p&gt;Retrieving a private property value is similar to retrieving a member variable value. You only need to change the reflection classes used. I think we don’t need to comment the code anymore, since now it should become self-explanatory. The code snippet and figure for our property example follow (note that I’m writing only the relevant parts of the code):&lt;/p&gt;&lt;pre class="brush: csharp; ruler: true;"&gt;PropertyInfo pi = typeof(PrivateClass).GetProperty(&amp;quot;PrivateNumber&amp;quot;, BindingFlags.NonPublic | BindingFlags.Instance);&lt;br /&gt;int value = int.Parse(pi.GetValue(myPrivateClass, new object[0]).ToString());&lt;br /&gt;Console.WriteLine(&amp;quot;And the private property value is {0}&amp;quot;, value);&lt;/pre&gt;&lt;p&gt;and here the resulting console output…&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TECLthU016I/AAAAAAAAARI/Svbc7RAuqFI/s1600-h/image9%5B1%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/TECLuKGqyrI/AAAAAAAAARQ/yy8QAkdnXBU/image9_thumb.png?imgmax=800" width="404" height="206" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;h2&gt;Demo 4: How do I modify the content of the private property with reflection?&amp;#160; &lt;/h2&gt;&lt;p&gt;Now, modifying a property value should not be any issue for you. In our example we are going to write something like this:&lt;/p&gt;&lt;pre class="brush: csharp; ruler: true;"&gt;PropertyInfo pi = typeof(PrivateClass).GetProperty(&amp;quot;PrivateNumber&amp;quot;, BindingFlags.NonPublic | BindingFlags.Instance);&lt;br /&gt;pi.SetValue(myPrivateClass, 20, new object[0]);&lt;br /&gt;Console.WriteLine(myPrivateClass);&lt;/pre&gt;&lt;p&gt;and there the console output:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TECLudXLRgI/AAAAAAAAARU/4fHNUdAweLs/s1600-h/image13%5B1%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/TECLvDvKn1I/AAAAAAAAARc/jZl2WU92AT8/image13_thumb.png?imgmax=800" width="404" height="206" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;h2&gt;Summary&lt;/h2&gt;&lt;p&gt;In this post you saw how to access private fields and properties by using reflection. This is a very powerful functionality of C# and can become very handy in some scenarios (like in my migration procedure :)). However, use it carefully when you are working with it. The search of fields and properties can become a quite expensive task in execution time.&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Hope this helps,&lt;/p&gt;&lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-3778487679297598621?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/3778487679297598621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/07/how-do-i-access-private-methods.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3778487679297598621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3778487679297598621'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/07/how-do-i-access-private-methods.html' title='How do I access private methods, properties and member variable not controlled by me in C#?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_3lC_bucoo88/TECLrgyFBxI/AAAAAAAAAQ0/lzBxgSg0uz8/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-4607136566658688209</id><published>2010-06-19T10:06:00.001+02:00</published><updated>2010-08-09T15:15:47.796+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Parts'/><title type='text'>Silverlight Web Parts made easy with SharePoint 2010 Extensibility Projects</title><content type='html'>&lt;p&gt;Hi all,&lt;/p&gt;&lt;p&gt;for all of those that didn’t noticed that. &lt;a href="http://blogs.msdn.com/b/pstubbs" target="_blank"&gt;Paul Stubbs&lt;/a&gt; announced on 26 April 2010 in &lt;a href="http://blogs.msdn.com/b/pstubbs/archive/2010/04/26/sharepoint-2010-extensibility-projects-silverlight-web-parts.aspx" target="_blank"&gt;this post&lt;/a&gt; some SharePoint 2010 Extensibility Projects. One of my favorites is the Silverlight Web Part extension that helps you during the creation process of&amp;#160; Silverlight Web Parts in SharePoint 2010. &lt;/p&gt;&lt;p&gt;It’s worth a try,&lt;/p&gt;&lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-4607136566658688209?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/4607136566658688209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/06/silverlight-web-parts-made-easy-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4607136566658688209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4607136566658688209'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/06/silverlight-web-parts-made-easy-with.html' title='Silverlight Web Parts made easy with SharePoint 2010 Extensibility Projects'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-5554815561350216145</id><published>2010-06-10T18:26:00.001+02:00</published><updated>2010-06-10T18:26:49.942+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><title type='text'>SharePoint Security 101</title><content type='html'>&lt;p&gt;Hi all,&lt;/p&gt;  &lt;p&gt;today I found a nice article written by Dave Greten that explains the basic idea behind how SharePoint server &lt;a href="http://info.axceler.com/Blog/bid/29706/SharePoint-Security-101" target="_blank"&gt;security&lt;/a&gt; works.&lt;/p&gt;  &lt;p&gt;An interesting article for all people new to SharePoint.&lt;/p&gt;  &lt;p&gt;Best regards,&lt;/p&gt;  &lt;p&gt;patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-5554815561350216145?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/5554815561350216145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/06/sharepoint-security-101.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5554815561350216145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5554815561350216145'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/06/sharepoint-security-101.html' title='SharePoint Security 101'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-5021094163741782634</id><published>2010-06-10T09:46:00.001+02:00</published><updated>2010-06-10T09:46:26.607+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>Try Office Web Apps for free</title><content type='html'>&lt;p&gt;Hi all,&lt;/p&gt;  &lt;p&gt;Microsoft released for the public the &lt;a href="http://office.live.com/?docsf=1" target="_blank"&gt;Office Web Apps&lt;/a&gt;. The cloud-application can be accessed by everyone for free. &lt;/p&gt;  &lt;p&gt;Give it a try,&lt;/p&gt;  &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-5021094163741782634?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/5021094163741782634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/06/try-office-web-apps-for-free.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5021094163741782634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5021094163741782634'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/06/try-office-web-apps-for-free.html' title='Try Office Web Apps for free'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-2702589694739491849</id><published>2010-06-04T14:40:00.001+02:00</published><updated>2010-06-04T14:40:20.328+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Development environment'/><category scheme='http://www.blogger.com/atom/ns#' term='Developer Walkthroughs'/><title type='text'>SharePoint 2010: Professional Developer Evaluation Guide and Walkthroughs</title><content type='html'>&lt;p&gt;Hi all,&lt;/p&gt;  &lt;p&gt;you can download for free in the download center of Microsoft the SharePoint 2010 developer evaluation guide and walkthrough documents. The documents give an overview of the functions of SharePoint and how to extend the product. A good way to start and get an overview of the the SharePoint 2010 platform from a developer perspective. You can download the documents &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=cffb14e8-88a9-43bd-87aa-4792ab60d320" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Happy downloading,&lt;/p&gt;  &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-2702589694739491849?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/2702589694739491849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/06/sharepoint-2010-professional-developer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/2702589694739491849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/2702589694739491849'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/06/sharepoint-2010-professional-developer.html' title='SharePoint 2010: Professional Developer Evaluation Guide and Walkthroughs'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-365385823937451156</id><published>2010-06-02T22:10:00.001+02:00</published><updated>2010-08-09T15:41:34.716+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Developer Walkthroughs'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Parts'/><title type='text'>Visual Web Parts are cool… but how do I create Visual Editor Parts?</title><content type='html'>&lt;p&gt;Hi,&lt;/p&gt;&lt;p&gt;&lt;em&gt;in the last &lt;/em&gt;&lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-custom-editor-parts-for.html" target="_blank"&gt;&lt;em&gt;post&lt;/em&gt;&lt;/a&gt;&lt;em&gt; of my &lt;/em&gt;&lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-visual-web-parts-in.html" target="_blank"&gt;&lt;em&gt;post series&lt;/em&gt;&lt;/a&gt;&lt;em&gt; about Visual Web Part development we saw how we can build Editor Parts for our Web Parts. The main advantage of using Visual Web Parts is the ability of using the Visual Studio 2010 designer to build the Web Part. Why not using the same idea to build Visual Editor Parts? &lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;In this post, I show you in simple steps how to create your first Visual Editor Parts. Our example will only show how to prepare a Visual Editor Part without logic and controls. However, if you know how to do it with classic Editor Parts, it should not be any issue.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; create a test &lt;strong&gt;Visual Web Part&lt;/strong&gt; project and create a new Visual Web Part with the name &lt;em&gt;VisualEditorPartExample&lt;/em&gt; (there are several posts in my &lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-visual-web-parts-in.html" target="_blank"&gt;post series&lt;/a&gt; explaining how to do it). You should see something like that:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TAa6o_odmyI/AAAAAAAAAO0/uuE0kaSZIsQ/s1600-h/image21.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_3lC_bucoo88/TAa6pVAQ9YI/AAAAAAAAAO4/xTKvbTD_Ztw/image_thumb13.png?imgmax=800" width="400" height="133" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Step 2: &lt;/strong&gt;Add a new &lt;em&gt;user control&lt;/em&gt; and call it &lt;em&gt;EditorUserControl.ascx&lt;/em&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Step 3: &lt;/strong&gt;The user control is placed automatically in the &lt;em&gt;ControlTemplates&lt;/em&gt;:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/TAa6p32wpCI/AAAAAAAAAO8/XYMHUolKXBY/s1600-h/image20.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_3lC_bucoo88/TAa6qdIJ1-I/AAAAAAAAAPA/JbWiJZ33F04/image_thumb12.png?imgmax=800" width="400" height="109" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Step 4: &lt;/strong&gt;We want to put the &lt;em&gt;EditorUserControl.ascx&lt;/em&gt; in the same container as our Visual Web Part (in our case &lt;em&gt;VisualEditorPartExample&lt;/em&gt;). Simply drag &amp;amp; drop the user control &lt;em&gt;EditorUserControl.ascx&lt;/em&gt; in the &lt;em&gt;VisualEditorPartExample&lt;/em&gt; folder. It will look like next picture:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/TAa6qtmuCDI/AAAAAAAAAPE/VnB42v5UE_g/s1600-h/image19.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/TAa6rcZHN_I/AAAAAAAAAPI/HiVS51KthoA/image_thumb11.png?imgmax=800" width="400" height="187" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Step 5: &lt;/strong&gt;To finish this configuration we are going to change the &lt;em&gt;Deplyoment location path&lt;/em&gt; property of the &lt;em&gt;EditorUserControl.ascx&lt;/em&gt;. Currently, the path value is composed by {ProjectName}\{Visual Web Part Name}. However, we want to change it to reflect the same path of our Visual Web Part. To do this, we only need to add the &lt;em&gt;CONTROLTEMPLATES&lt;/em&gt; folder in front of our path. In our case we change the property from &lt;em&gt;Lamber.TestPart\VisualEditorPartExample\ &lt;/em&gt;to &lt;em&gt;CONTROLTEMPLATES\Lamber.TestPart\VisualEditorPartExample\&lt;/em&gt;. You can see the property change in the next figure:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/TAa6r-u8FjI/AAAAAAAAAPM/ofX28CxDOcs/s1600-h/image18.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/TAa6sWRvahI/AAAAAAAAAPQ/FJCpxok0l7o/image_thumb10.png?imgmax=800" width="400" height="147" /&gt;&lt;/a&gt;Until now, we only added an user control to the project and configured it to be deployed in the same folder of our Visual Web Part. This user control will be used to create the visual logic for our Editor Part. We do normally the same with our Visual Web Parts. However, we did not create any Editor Parts yet. Let us do it immediately…&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Step 6: &lt;/strong&gt;Add a new class &lt;em&gt;VisualEditorPartExample&lt;/em&gt; container and call it &lt;em&gt;EditorPartExampleEditor.cs&lt;/em&gt;. This will be our old school Editor Part controlling the storage of properties with the synch and apply methods. In addition, this class is responsible to load the user control that we created before. The code of the Editor Part may look like in the next code snipped: &lt;/p&gt;&lt;pre class="brush: csharp; ruler: true; collapse: true;"&gt;namespace Lamber.TestPart.VisualEditorPartExample&lt;br /&gt;{&lt;br /&gt;    class EditorPartExampleEditor : EditorPart&lt;br /&gt;    {&lt;br /&gt;        // Visual Studio might automatically update this path when you change the Visual Web Part project item.&lt;br /&gt;        private const string _ascxPath = @&amp;quot;~/_CONTROLTEMPLATES/Lamber.TestPart/VisualEditorPartExample/EditorUserControl.ascx&amp;quot;;&lt;br /&gt;&lt;br /&gt;        protected override void CreateChildControls()&lt;br /&gt;        {&lt;br /&gt;            Control control = Page.LoadControl(_ascxPath);&lt;br /&gt;            Controls.Add(control);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public override bool ApplyChanges() &lt;br /&gt;        {&lt;br /&gt;            // put the applychanges code here&lt;br /&gt;            return true;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public override void SynchChanges() &lt;br /&gt;        {&lt;br /&gt;            // put the synchchanges code here&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;The important lines lie between 6-12, where we are going to load the user control &lt;em&gt;EditorUserControl.ascx&lt;/em&gt; in our Editor Part. You see, that this is the same logic used by the Visual Web Parts. Please note that the example above adds no logic to this Editor Part.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Step 7: &lt;/strong&gt;Finally, we have only to add the Editor Part reference to our &lt;em&gt;EditorPartCollection&lt;/em&gt; of our Visual Web Part. Change the code of the &lt;em&gt;VisualEditorPartExample.cs&lt;/em&gt; like in the code snipped below:&lt;/p&gt;&lt;pre class="brush: csharp; ruler: true; collapse: true;"&gt;public override EditorPartCollection CreateEditorParts()&lt;br /&gt;{&lt;br /&gt;    EditorPartExampleEditor editor = new EditorPartExampleEditor();&lt;br /&gt;    editor.ID = this.ID + = &amp;quot;_example&amp;quot;;&lt;br /&gt;        &lt;br /&gt;    List&amp;lt;EditorPart&amp;gt; collection = new List&amp;lt;EditorPart&amp;gt;();&lt;br /&gt;    collection.Add(editor)&lt;br /&gt;&lt;br /&gt;    return new EditorPartCollection(collection);&lt;br /&gt;}&lt;/pre&gt;&lt;h2&gt;&amp;#160;&lt;/h2&gt;&lt;h2&gt;Summary&lt;/h2&gt;&lt;p&gt;That’s all, deploy the project and test your freshly created Visual Editor Part. Naturally, you have to add the logic and connections with the personalization properties. You might find hints how to do it in my last &lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-custom-editor-parts-for.html" target="_blank"&gt;post&lt;/a&gt;. However, I think that the idea is somehow clear and easy to follow. &lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Happy coding,&lt;/p&gt;&lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-365385823937451156?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/365385823937451156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/06/visual-web-parts-are-cool-but-how-do-i.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/365385823937451156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/365385823937451156'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/06/visual-web-parts-are-cool-but-how-do-i.html' title='Visual Web Parts are cool… but how do I create Visual Editor Parts?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_3lC_bucoo88/TAa6pVAQ9YI/AAAAAAAAAO4/xTKvbTD_Ztw/s72-c/image_thumb13.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-1288953834889260572</id><published>2010-05-29T14:49:00.001+02:00</published><updated>2010-08-09T16:51:11.121+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Developer Walkthroughs'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Parts'/><title type='text'>How do I create custom Editor Parts for my Visual Web Parts?</title><content type='html'>&lt;p&gt;Hi all,&lt;/p&gt;&lt;p&gt;&lt;em&gt;we saw how to build a simple address Web Part in my last &lt;/em&gt;&lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-custom-properties-in.html" target="_blank"&gt;&lt;em&gt;post&lt;/em&gt;&lt;/a&gt;&lt;em&gt; of my &lt;/em&gt;&lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-visual-web-parts-in.html" target="_blank"&gt;&lt;em&gt;post series&lt;/em&gt;&lt;/a&gt;&lt;em&gt; about Visual Web Part development. We saw how we are able to bind persistent custom properties to our web part instances by simply using attributes associated to our properties. These properties are then mapped automatically for us in the web part editor. This behavior may be enough for most of the cases, however, there are certain situations, where we want to have more control on the behavior of the web part editor. Examples are the addition of more complex controls and data validation. In this post we are going to explore the customization of Editor Parts for our Web Parts.&lt;/em&gt; &lt;/p&gt;&lt;h2&gt;Walkthrough&lt;/h2&gt;&lt;p&gt;At the beginning of this post we are going to explore what are the automatically rendered properties of the Web Part framework. These types are mapped automatically to control in our Editor Parts for us. &lt;/p&gt;&lt;p&gt;After this introduction, we are going to create an Editor Part by following these steps:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Step 1: &lt;/strong&gt;Create a new class and inherit from Editor Part and add the abstract methods &lt;li&gt;&lt;strong&gt;Step 2: &lt;/strong&gt;Add the controls to the Editor Part &lt;li&gt;&lt;strong&gt;Step 3: &lt;/strong&gt;Synchronize the content of the controls in the Editor Part with the properties of your Web Part class &lt;li&gt;&lt;strong&gt;Step 4: &lt;/strong&gt;Add a Editor Part reference to your Web Part &lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Which types are automatically mapped by the Web Part framework?&lt;/h2&gt;&lt;p&gt;We know, that basic types are mapped automatically to controls in our Editor Parts for us. To check the different rendered controls, we have to create a new project called &lt;em&gt;EditorPartExample&lt;/em&gt;. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;create a &lt;strong&gt;Visual Web Part &lt;/strong&gt;project &lt;em&gt;EditorPartExample&lt;/em&gt; &lt;li&gt;Add in this project a new Visual Web Part &lt;em&gt;EditorTestWebPart&lt;/em&gt; &lt;li&gt;add the following code into the &lt;em&gt;EditorTestWebPart.cs&lt;/em&gt; file. (If you don’t know how to do it, follow &lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-my-first-web-part-with.html" target="_blank"&gt;this&lt;/a&gt; and &lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-configure-basic-project.html" target="_blank"&gt;this&lt;/a&gt; post). &lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush: csharp; ruler: true; collapse: true;"&gt;namespace EditorPartExample.EditorTestWebPart&lt;br&gt;{&lt;br&gt;    public enum EditorTestEnum&lt;br&gt;    {&lt;br&gt;        Value = 1,&lt;br&gt;        Value = 2,&lt;br&gt;        Value = 3&lt;br&gt;    }&lt;br&gt;&lt;br&gt;    [ToolboxItemAttribute(false)]&lt;br&gt;    public class EditorTestWebPart : WebPart&lt;br&gt;    {&lt;br&gt;        // Visual Studio might automatically update this path when you change the Visual Web Part project item.&lt;br&gt;        private const string _ascxPath = @~/_CONTROLTEMPLATES/EditorPartExample/EditorTestWebPart/EditorTestWebPartUserControl.ascx";&lt;br&gt;&lt;br&gt;        [Personalizable(), WebBrowsable(), Category("Web Part Properties")&amp;gt;&lt;br&gt;        public String PropertyAsString { get; set; }&lt;br&gt;&lt;br&gt;        [Personalizable(), WebBrowsable(), Category("Web Part Properties")&amp;gt;&lt;br&gt;        public int PropertyAsInteger { get; set; }&lt;br&gt;&lt;br&gt;        [Personalizable(), WebBrowsable(), Category("Web Part Properties")&amp;gt;&lt;br&gt;        public Boolean PropertyAsBoolean { get; set; }&lt;br&gt;&lt;br&gt;        [Personalizable(), WebBrowsable(), Category("Web Part Properties")&amp;gt;&lt;br&gt;        public EditorTestEnum PropertyAsEnum { get; set; }&lt;br&gt;&lt;br&gt;        protected override void CreateChildControls()&lt;br&gt;        {&lt;br&gt;            Control control = Page.LoadControl(_ascxPath);&lt;br&gt;            Controls.Add(control);&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;}&lt;/pre&gt;&lt;p&gt;Only for illustrative purposes we are using different basic types and check how they look like in our Editor Part. Deploy your project and add the newly create Web Part to any page. Edit the page and you see these different mapping: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;String: mapped as text editor &lt;li&gt;Integer (numeric values in general): mapped as text editor with a number validation (try to insert a String and press “Apply” if you don’t believe me)&lt;li&gt;Boolean: mapped as checkbox &lt;li&gt;Enum types: mapped in a dropdown list &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/TAENbkll4TI/AAAAAAAAAOk/4PHioTDCguM/s1600-h/image3.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/TAENcHa1hOI/AAAAAAAAAOo/Ax04WZ6IyIo/image_thumb1.png?imgmax=800" width="204" height="306"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Pretty neat stuff, however, we encounter some drawbacks when using only the automated approach:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;you can’t include complex types (e.g., list of custom classes)&lt;/li&gt;&lt;li&gt;you don’t have much control on the validation of your controls. However, you can do this with basic types (check this &lt;a href="http://www.sharepoint-tips.com/2010/06/validating-web-part-properties.html" target="_blank"&gt;post&lt;/a&gt; if you want to see how it may work). &lt;/li&gt;&lt;li&gt;you have to stick on the standard layout rules of the Editor Part (e.g., if you want to modify an integer property with a range of values included into a dropdown box that can’t be defined as an enum type) &lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Creating the first Editor Part&lt;/h2&gt;&lt;p&gt;If we want to get more from the Editor Part, we have to customize it and create our own. Fortunately, this step is not so difficult as you might think. The Web Part framework does most of the job for us, we only need to create a new class and inherit from the &lt;em&gt;EditorPart &lt;/em&gt;class of the Web Part framework. Then we have to add custom code and create our user interface from scratch. The steps needed to accomplish this task are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Step 1: &lt;/strong&gt;Create a new class and inherit from Editor Part and add the abstract methods &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Step 2: &lt;/strong&gt;Add the controls to the Editor Part &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Step 3: &lt;/strong&gt;Synchronize the content of the controls in the Editor Part with the properties of your Web Part class &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Step 4: &lt;/strong&gt;Add a Editor Part reference to your Web Part &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To illustrate these steps, we are going to create a custom Editor Part that edits our property &lt;em&gt;PropertyAsInteger&lt;/em&gt; in a custom way: we want a Dropdown list with the values ranging from 0 to 5. When the user edits the Web Part, he will see the Dropdown list and use it to modify the value of our Web Part property.&lt;/p&gt;&lt;h2&gt;Step 1: Create a new class and inherit from Editor Part and add the abstract methods &lt;/h2&gt;&lt;p&gt;First of all, we are going to create a new class called &lt;em&gt;SampleEditor.cs&lt;/em&gt; and add it to our &lt;em&gt;EditorTestWebPart&lt;/em&gt; container and setup the class to inherit from the &lt;em&gt;EditorPart&lt;/em&gt; class of the Web Part framework. Please change the code of the &lt;em&gt;SampleEditor.cs&lt;/em&gt; to the code you see in the next code snipped.&lt;/p&gt;&lt;p&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/TAENc50GZ4I/AAAAAAAAAOw/Ly7u1wdt_bA/image_thumb4.png?imgmax=800" width="354" height="134"&gt;&lt;pre class="brush: csharp; ruler: true; collapse: true;"&gt;namespace EditorPartExample.EditorTestWebPart&lt;br&gt;{&lt;br&gt;    public class SampleEditor : EditorPart&lt;br&gt;    {&lt;br&gt;        public override bool ApplyChanges()&lt;br&gt;        {&lt;br&gt;            throw new NotImplementedException();&lt;br&gt;        }&lt;br&gt;    &lt;br&gt;        public override void SynchChanges()&lt;br&gt;        {&lt;br&gt;            throw new NotImplementedException();&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;}&lt;/pre&gt;&lt;/p&gt;&lt;h2&gt;&lt;strong&gt;Step 2: &lt;/strong&gt;Add the controls to the Editor Part &lt;/h2&gt;&lt;p&gt;We only created a simple class. Now, we are going to extend it and put some controls. In our case we are going to add a DropDown list holding the values from 0 to 5. The code snipped that does it is shown below:&lt;/p&gt;&lt;pre class="brush: csharp; ruler: true; collapse: true;"&gt;namespace EditorPartExample.EditorTestWebPart&lt;br&gt;{    &lt;br&gt;    public class SampleEditor : EditorPart    &lt;br&gt;    {        &lt;br&gt;        private DropDownList list;&lt;br&gt;&lt;br&gt;        protected override void OnInit(EventArgs e)&lt;br&gt;        {&lt;br&gt;            base.OnInit(e);&lt;br&gt;            list = new DropDownList();&lt;br&gt;        }&lt;br&gt;&lt;br&gt;        protected override CreateChildControls()&lt;br&gt;        {&lt;br&gt;            base.CreateChildControls();&lt;br&gt;            this.Controls.Add(list);&lt;br&gt;        }&lt;br&gt;&lt;br&gt;        protected override void OnPrerender(EventArgs e)&lt;br&gt;        {&lt;br&gt;            base.OnPreRender(e);&lt;br&gt;            &lt;br&gt;            list.DataSource = new int[] { 0, 1, 2, 3, 4, 5 };&lt;br&gt;            list.DataBind();&lt;br&gt;        }&lt;br&gt;&lt;br&gt;        public override bool ApplyChanges()&lt;br&gt;        {&lt;br&gt;            throw new NotImplementedException();&lt;br&gt;        }   &lt;br&gt;        &lt;br&gt;        public override void SynchChanges()&lt;br&gt;        {&lt;br&gt;            throw new NotImplementedException();&lt;br&gt;        }    &lt;br&gt;    }&lt;br&gt;}&lt;/pre&gt;&lt;p&gt;What we did until now? We defined a Dropdown and initialized it in the &lt;em&gt;OnInit&lt;/em&gt; method of the Web Part. In the &lt;em&gt;CreateChildControls&lt;/em&gt; added the control to the Editor Part control list. At the end, we added an array of integers ranging from 0 to 5 to the datasource property of our dropdown list. There are still two methods that need to be implemented &lt;/p&gt;&lt;strong&gt;&lt;h2&gt;&lt;strong&gt;Step 3: &lt;/strong&gt;Synchronize the content of the controls in the Editor Part with the properties of your Web Part class &lt;/h2&gt;&lt;/strong&gt;The content synchronization between Web Parts and Editor Parts is done by two methods:&lt;ul&gt;&lt;li&gt;The &lt;em&gt;ApplyChanges&lt;/em&gt; method is called when the Editor Part applies the changes or presses ok. This is the right moment to save the properties back to our Web Part. &lt;/li&gt;&lt;li&gt;On the other hand, the &lt;em&gt;SynchChanges&lt;/em&gt; method is used to synchronize the Web Part properties with our Editor Part. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In our example we are doing following. The code snippet that follows reflects these actions:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;In the &lt;em&gt;ApplyChanges&lt;/em&gt; method we are retrieving the Web Part instance that is currently edited and set the property that we want to change to the property defined in our Dropdown list. Afterwards, we tell to the Web Part framework that we passed correctly the values by returning true.&lt;/li&gt;&lt;li&gt;In the &lt;em&gt;SynchChanges&lt;/em&gt; method we do it in the inverse order. We take the values from the Web Part that we want to edit and synchronize them with the controls in our Editor Part.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush: csharp; ruler: true; collapse: true;"&gt;namespace EditorPartExample.EditorTestWebPart&lt;br&gt;{        &lt;br&gt;    public class SampleEditor : EditorPart        &lt;br&gt;    {                &lt;br&gt;        private DropDownList list;        &lt;br&gt;        &lt;br&gt;        protected override void OnInit(EventArgs e)        &lt;br&gt;        {            &lt;br&gt;            base.OnInit(e);            &lt;br&gt;            list = new DropDownList();        &lt;br&gt;        }        &lt;br&gt;        &lt;br&gt;        protected override CreateChildControls()        &lt;br&gt;        {            &lt;br&gt;            base.CreateChildControls();            &lt;br&gt;            this.Controls.Add(list);        &lt;br&gt;        }        &lt;br&gt;&lt;br&gt;        protected override void OnPrerender(EventArgs e)        &lt;br&gt;        {&lt;br&gt;            base.OnPreRender(e);&lt;br&gt;            list.DataSource = new int[] { 0, 1, 2, 3, 4, 5 };&lt;br&gt;            list.DataBind();&lt;br&gt;        }        &lt;br&gt;&lt;br&gt;        public override bool ApplyChanges()&lt;br&gt;        {&lt;br&gt;            EditorTestWebPart webPart = this.WebPartToEdit as EditorTestWebPart;&lt;br&gt;    &lt;br&gt;            if (webPart != null)&lt;br&gt;            {&lt;br&gt;                webPart.PropertyAsInteger = int.Parse(list.SelectedValue);&lt;br&gt;            }&lt;br&gt;&lt;br&gt;            return false;&lt;br&gt;        }&lt;br&gt;&lt;br&gt;        public override void SynchChanges()&lt;br&gt;        {&lt;br&gt;            EditorTestWebPart webPart = this.WebPartToEdit as EditorTestWebPart;&lt;br&gt;&lt;br&gt;            if (webPart != null)&lt;br&gt;            {&lt;br&gt;                list.SelectedValue = webPart.PropertyAsInteger.ToString();&lt;br&gt;            }&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;}&lt;/pre&gt;&lt;br&gt;&lt;strong&gt;&lt;h2&gt;&lt;strong&gt;Step 4: &lt;/strong&gt;Add a Editor Part reference to your Web Part &lt;/h2&gt;&lt;/strong&gt;&lt;p&gt;We are almost finished. Our simple custom Editor Part is finished, but, the Web Part framework does not know that we want to bind this editor part to our Web Part. Therefore, we need to tell to the &lt;em&gt;EditorTestWebPart&lt;/em&gt;, that we want to use this custom Editor Part when going in edit mode. In addition, we have to tell to the Web Part framework, that the property &lt;em&gt;PropertyAsInteger&lt;/em&gt; should not be generated automatically in our editor. To do this we have to follow these steps:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Go to the &lt;em&gt;EditorTestWebPart.cs &lt;/em&gt;&lt;/li&gt;&lt;li&gt;Override the method &lt;em&gt;CreateEditorParts&lt;/em&gt; and add your Web Part to the EditorPart collection &lt;/li&gt;&lt;li&gt;Remove the &lt;em&gt;WebBrowsable&lt;/em&gt; attribute from the &lt;em&gt;PropertyAsInteger&lt;/em&gt; property &lt;/li&gt;&lt;li&gt;The final code in the Web Part &lt;em&gt;EditorTestWebPart.cs&lt;/em&gt; will look like that:&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;pre class="brush: csharp; ruler: true; collapse: true;"&gt;namespace EditorPartExample.EditorTestWebPart&lt;br&gt;{    &lt;br&gt;    public enum EditorTestEnum    &lt;br&gt;    {        &lt;br&gt;        Value = 1,        &lt;br&gt;        Value = 2,        &lt;br&gt;        Value = 3    &lt;br&gt;    }    &lt;br&gt;&lt;br&gt;    [ToolboxItemAttribute(false)]    &lt;br&gt;    public class EditorTestWebPart : WebPart    &lt;br&gt;    {        &lt;br&gt;        // Visual Studio might automatically update this path when you change the Visual Web Part project item.        &lt;br&gt;        private const string _ascxPath = @~/_CONTROLTEMPLATES/EditorPartExample/EditorTestWebPart/EditorTestWebPartUserControl.ascx";        &lt;br&gt;&lt;br&gt;        [Personalizable(), WebBrowsable(), Category("Web Part Properties")&amp;gt;        &lt;br&gt;        public String PropertyAsString { get; set; }        &lt;br&gt;&lt;br&gt;        [Personalizable(), WebBrowsable(), Category("Web Part Properties")&amp;gt;        &lt;br&gt;        public int PropertyAsInteger { get; set; }        &lt;br&gt;&lt;br&gt;        [Personalizable(), WebBrowsable(), Category("Web Part Properties")&amp;gt;        &lt;br&gt;        public Boolean PropertyAsBoolean { get; set; }        &lt;br&gt;&lt;br&gt;        [Personalizable(), WebBrowsable(), Category("Web Part Properties")&amp;gt;        &lt;br&gt;        public EditorTestEnum PropertyAsEnum { get; set; }        &lt;br&gt;&lt;br&gt;        protected override void CreateChildControls()        &lt;br&gt;        {            &lt;br&gt;            Control control = Page.LoadControl(_ascxPath);            &lt;br&gt;            Controls.Add(control);        &lt;br&gt;        }&lt;br&gt;&lt;br&gt;        public override EditorPartCollection CreateEditorParts()&lt;br&gt;        {&lt;br&gt;            List&amp;lt;EditorPart&amp;gt; editorParts = new List&amp;lt;EditorPart&amp;gt;();&lt;br&gt;            SampleEditor sampleEditor = new SampleEditor();&lt;br&gt;            sampleEditor.ID = this.ID + "_sampleEditorPart";&lt;br&gt;            editorParts.Add(sampleEditor);&lt;br&gt;        &lt;br&gt;            return new EditorPartCollection(base.CreatEditorPart, editorPart);&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;}&lt;/pre&gt;&lt;pre class="brush: csharp; ruler: true; collapse: true;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;p&gt;And we are done. Finally, you only need to deploy the solution to SharePoint and use your Web Part.&lt;/p&gt;&lt;h2&gt;Summary&lt;/h2&gt;&lt;p&gt;Now, that you saw how to create and combine a custom Editor Part with a Web Part, you can do whatever you want. However, there is still a big drawback with this technique. You have to create your Editor Part from scratch by hand. However, I will show you in a post that will follow in the next day, that with some simple modifications, we will be able to use the same approach of the Visual Web Parts with our Editor Parts. Are you interested how this might work? Then follow and bookmark my &lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-visual-web-parts-in.html" target="_blank"&gt;post series&lt;/a&gt; about Visual Web Part development. :)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Best regards,&lt;/p&gt;&lt;p&gt;Patrick Lamber&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-1288953834889260572?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/1288953834889260572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/05/how-do-i-create-custom-editor-parts-for.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/1288953834889260572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/1288953834889260572'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/05/how-do-i-create-custom-editor-parts-for.html' title='How do I create custom Editor Parts for my Visual Web Parts?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_3lC_bucoo88/TAENcHa1hOI/AAAAAAAAAOo/Ax04WZ6IyIo/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-1558402967749782854</id><published>2010-05-21T11:20:00.001+02:00</published><updated>2010-05-21T11:20:59.817+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Developer Walkthroughs'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Parts'/><title type='text'>How do I create custom properties in Visual Web Parts?</title><content type='html'>&lt;p&gt;Hi,&lt;/p&gt;  &lt;p&gt;in this post of my Visual Web Part &lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-visual-web-parts-in.html" target="_blank"&gt;post series&lt;/a&gt; we are going to see how to setup custom properties in Visual Web Parts. As you probably know, the most interesting aspect of Visual Web Parts is the ability to configure them directly on a SharePoint page by changing properties during runtime. These properties are stored into the database and reused on each page load. This provides endless scenarios to build configurable pages. &lt;/p&gt;  &lt;p&gt;We will follow the creation process of a simple Web Part storing addresses. This Web Part will provide custom properties that are modifiable by a SharePoint user. We will follow the steps that we already covered in detail &lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-configure-basic-project.html" target="_blank"&gt;here&lt;/a&gt;. The address Web Part will look like the Web Part in the next figure. We have a simple address consisting of a name, street, zip code and city. We want that these settings are configurable on each single page by our customers. &lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/S_ZQV0KFfVI/AAAAAAAAANw/xVUjUhMfmmc/s1600-h/image%5B9%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/S_ZQWqnSe6I/AAAAAAAAAN0/PsOdFdCyj5o/image_thumb%5B4%5D.png?imgmax=800" width="484" height="98" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This post is subdivided into three sections:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Preparing the project&lt;/strong&gt;: we setup the Visual Web Part project and check the settings that we might want to change before deploying our Web Part&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Personalize the Address Web Part&lt;/strong&gt;: we see how we can add customizable properties, and how we connect them to our Visual Web Part&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Some improvements&lt;/strong&gt;: we make some small modifications to the Web Part that we created to improve the “look &amp;amp; feel” and “usability” of our Web Part&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Points to conside&lt;/strong&gt;r: some notes to consider during Web Part development&lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Preparing the project&lt;/h4&gt;  &lt;p&gt;Let us jump in directly in the creation of the Visual Studio project with the Visual Web Part project template for SharePoint 2010.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;create a new Visual Web Part project named “Examples.AddressWebPart” (if you don’t know how to do it, follow &lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-my-first-web-part-with.html" target="_blank"&gt;this link&lt;/a&gt;). &lt;/li&gt;    &lt;li&gt;since the assembly name is called exactly the same, we don’t need to make further changes in the project property page &lt;/li&gt;    &lt;li&gt;delete the Visual Web Part called “VisualWebPart1” &lt;/li&gt;    &lt;li&gt;add a new “Visual Web Part” and call it “Address” &lt;/li&gt;    &lt;li&gt;open the “Features” folder and double click on “Feature 1”. Change the feature name to “Addresses Feature” and description to “This feature activates the address-related Web Parts”. Ensure that the “Address” Web Part is listed in this feature on the right side. You see an example in the next picture: &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/S_ZQXFYGuvI/AAAAAAAAAN4/Q0yErPgp5K0/s1600-h/image3.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/S_ZQYChQxOI/AAAAAAAAAN8/-eArjVkyCrA/image_thumb1.png?imgmax=800" width="484" height="248" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;we don’t make any changes to the package name, because it will be called like our project name. This is good for us. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now, we are going to make small changes to our Web Part configuration files “Address.webpart” and “Elements.xml” in the “Address” container. We make these changes to complete our configuration process and to provide a better description to our Web Part on our SharePoint site.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Let us change the description shown in the Web Part catalog. Double click on the Address.webpart file in the Address container and change the description of the Web Part to “Displays a personalizable address on the screen”. The code will look similar to the next code snipped: &lt;/li&gt; &lt;/ul&gt;  &lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  1: &lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&lt;span style="color: #0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  2: &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;webParts&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  3:   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;webPart&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;http://schemas.microsoft.com/WebPart/v3&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  4:     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;metaData&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  5:       &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;type&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;Examples.AddressWebPart.Address.Address, $SharePoint.Project.AssemblyFullName$&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  6:       &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;importErrorMessage&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;$Resources:core,ImportErrorMessage;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;importErrorMessage&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  7:     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;metaData&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  8:     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;data&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  9:       &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;properties&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 10:         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Address&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 11:         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;Description&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Displays a personalizable address on the screen&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 12:       &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;properties&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 13:     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;data&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 14:   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;webPart&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 15: &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;webParts&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Finally, we change the category associated to our Web Part in the Web Part catalog. We will change the property value to “Utilities”. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  1: &lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&lt;span style="color: #0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  2: &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Elements&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;http://schemas.microsoft.com/sharepoint/&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  3:   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Module&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;Address&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;List&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;113&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Url&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;_catalogs/wp&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  4:     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;File&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Path&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;Address\Address.webpart&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Url&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;Address.webpart&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;GhostableInLibrary&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  5:       &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;Group&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;Utilities&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  6:     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;File&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  7:   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Module&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  8: &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Elements&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&amp;#160;&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Personalize the Address Web Part&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Development of Visual Web Parts is simple if you know the most important files to change:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;“Address.cs”: the class inheriting from the Web Part base class and used to setup personalization settings. In addition, this class is loading the web user control needed for our Visual Web Part functionalities&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;“AddressUserControl.ascx”: this controls gives us the design time capabilities of Visual Studio 2010 &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The basic approach is:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;configure the properties of the Web Part class to be persisted&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;combine the Web Part class with the web user control to control the rendering behavior&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;First, let us add the properties that we want to persist with the Web Part framework by adding some code in the “Address.cs” file. Follow the next code example.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  1: &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Examples.AddressWebPart.Address&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  2: {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  3:     [ToolboxItemAttribute(&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;)]&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  4:     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Address : WebPart&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  5:     {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  6:         &lt;span style="color: #008000"&gt;// Visual Studio might automatically update this path when you change the Visual Web Part project item.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  7:         &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; _ascxPath = @&amp;quot;&lt;span style="color: #8b0000"&gt;~/_CONTROLTEMPLATES/Examples.AddressWebPart/Address/AddressUserControl.ascx&lt;/span&gt;&amp;quot;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  8: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  9:         [Personalizable(), WebBrowsable]&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 10:         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; String Firstname { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 11: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 12:         [Personalizable(), WebBrowsable]&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 13:         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; String Lastname { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 14: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 15:         [Personalizable(), WebBrowsable]&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 16:         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; String Street { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 17: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 18:         [Personalizable(), WebBrowsable]&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 19:         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; Zip { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 20: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 21:         [Personalizable(), WebBrowsable]&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 22:         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; String City { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 23: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 24:         &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CreateChildControls()&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 25:         {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 26:             Control control = Page.LoadControl(_ascxPath);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 27:             Controls.Add(control);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 28:         }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 29:     }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 30: }&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;We added some basic type properties to the class. Important is to consider the attributes associated to our properties:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;“Personalizable” tells the Web Part framework to store this property in the database &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;“WebBrowsable” tells the Web Part framework to display the property in the editor zone of your Web Part. If you don’t use this attribute, the property can be used for storage, but is not displayed in the editor zone to your end user. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;You can store any type that is serializable with the Web Part framework (basic types and complex types). &lt;strong&gt;Hint:&lt;/strong&gt; if you want to make your custom class serializable, put the “Serializable” attribute on the top of your class definition. These properties are only persisted when the Web Part is in “edit mode”. So, if you change some properties in the Web Part class above, they won’t be saved in the database. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Let us see what we did until now on our SharePoint site. Deploy the solution and add the Web Part to any page. When you press the “Edit Web Part” button, you will notice the five properties that we specified before added in the “miscellaneous” category of our editor part as textboxes. In addition, each textbox has a label with text containing the property name.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/S_ZQY-B_nbI/AAAAAAAAAOA/zG9jgzUetoc/s1600-h/image7.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" align="left" src="http://lh4.ggpht.com/_3lC_bucoo88/S_ZQZkFLoyI/AAAAAAAAAOE/8mKAagJQHls/image_thumb3.png?imgmax=800" width="384" height="246" /&gt;&lt;/a&gt; &lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/S_ZQaNJ7b2I/AAAAAAAAAOI/VpeUSqSdMc0/s1600-h/image12.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/S_ZQa89BVUI/AAAAAAAAAOM/WqS2jn_FvPI/image_thumb6.png?imgmax=800" width="141" height="246" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Start inserting some values into the textboxes and press “OK” to confirm your choice. The Web Part framework stores the values into the database and associates them with the Web Part instance that you are editing. That means, after each page load, the properties in the Web Part class are populated with the settings that you defined in the editor part. However, until now nothing happens in our Web Part because we did not add some controls for rendering into our “AddressUserControl.ashx”. Before we start adding controls, we have to make a last change to our “AddressUserControl.ashx.cs” file. You see them in the next code snipped:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  1: &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Examples.AddressWebPart.Address&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  2: {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  3:     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; partial &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; AddressUserControl : UserControl&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  4:     {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  5:         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Address WebPart { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  6:     }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  7: }&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;To end it, we have to make a small change in the “Address.cs” class and edit the “CreateChildControls” event:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  1: &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CreateChildControls()&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  2: {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  3:    AddressUserControl control = Page.LoadControl(_ascxPath) &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; AddressUserControl;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  4:             &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  5:    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (control != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  6:    {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  7:       control.WebPart = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  8:    }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  9: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 10:    Controls.Add(control);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 11: }&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;With the code changes above we are telling our “AddressUserControl” to populate the property that we specified with the instance of our Web Part. In this way, we are able to access the Web Part properties specified in the “Address.cs” class.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Finally, we are able to add some controls to our “AddressUserControl.ascx” file that looks like that (please note that I used the designer to create this code):&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  1: &lt;span style="background-color: #ffff00; color: black"&gt;&amp;lt;%@ Assembly Name=&amp;quot;$SharePoint.Project.AssemblyFullName$&amp;quot; %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  2: &lt;span style="background-color: #ffff00; color: black"&gt;&amp;lt;%@ Assembly Name=&amp;quot;Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  3: &lt;span style="background-color: #ffff00; color: black"&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;SharePoint&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.WebControls&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  4: &lt;span style="background-color: #ffff00; color: black"&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;Utilities&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.Utilities&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  5: &lt;span style="background-color: #ffff00; color: black"&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;asp&amp;quot; Namespace=&amp;quot;System.Web.UI&amp;quot; Assembly=&amp;quot;System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&amp;quot; %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  6: &lt;span style="background-color: #ffff00; color: black"&gt;&amp;lt;%@ Import Namespace=&amp;quot;Microsoft.SharePoint&amp;quot; %&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  7: &lt;span style="background-color: #ffff00; color: black"&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;WebPartPages&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.WebPartPages&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  8: &lt;span style="background-color: #ffff00; color: black"&gt;&amp;lt;%@ Control Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; CodeBehind=&amp;quot;AddressUserControl.ascx.cs&amp;quot; Inherits=&amp;quot;Examples.AddressWebPart.Address.AddressUserControl&amp;quot; %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  9: &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Label&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;lblFirstname&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;style&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;font-weight: 700&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Label&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&amp;amp;nbsp;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Label&lt;/span&gt; &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 10:     &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;lblLastname&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;style&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;font-weight: 700&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Label&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 11: &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;br&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 12: &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;br&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 13: &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Label&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;lblStreet&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Label&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 14: &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;br&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 15: &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Label&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;lblZip&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Label&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&amp;amp;nbsp;-&amp;amp;nbsp;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Label&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;lblCity&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Label&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The last step is to add in the “OnPrerender” event of the “AddressUserControls.ascx.cs” file. We are simply assigning to the text properties of the labels the corresponding Web Part properties that are persisted by the Web Part framework. The code looks like that:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  1: &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnPreRender(EventArgs e)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  2: {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  3:    &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.OnPreRender(e);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  4: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  5:    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.WebPart != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  6:    {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  7:       &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.lblFirstname.Text = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.WebPart.Firstname;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  8:       &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.lblLastname.Text = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.WebPart.Lastname;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  9:       &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.lblStreet.Text = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.WebPart.Street;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 10:       &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.lblZip.Text = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.WebPart.Zip.ToString();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 11:       &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.lblCity.Text = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.WebPart.City;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 12:    }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 13: }&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;Let us deploy the solution, add a Web Part to a page and modify it’s properties. The result may look like the next figure:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/S_ZQbY_Bi0I/AAAAAAAAAOQ/MaKQ8ZiUZUU/s1600-h/image%5B10%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_3lC_bucoo88/S_ZQb7cuvmI/AAAAAAAAAOU/Ul1XTkQvZ7U/image_thumb%5B5%5D.png?imgmax=800" width="484" height="98" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Some improvements&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;To end our Address development, we want to improve two aspects of our Web Part. First, we want to remove the label “Address” on the top of our Web Part when looking at our page. Something similar to the next figure:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/S_ZQcQhq4cI/AAAAAAAAAOY/GrS7_4bQAHM/s1600-h/image%5B20%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_3lC_bucoo88/S_ZQdOoj7MI/AAAAAAAAAOc/ZmO8N1jw3tk/image_thumb%5B11%5D.png?imgmax=800" width="289" height="98" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Second, we want to prohibit the end user, to minimize, hide or close the Web Part. In addition, we improve the editor zone by moving the properties from the “miscellaneous” section to a section that we are going to call “address settings”. Finally, we change the label associated to our city textbox to “city or town”. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_3lC_bucoo88/S_ZQeCgagkI/AAAAAAAAAOg/ixOeKjSb1Y0/image_thumb%5B12%5D.png?imgmax=800" width="164" height="302" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This is done by changing some attributes and properties of our “Address.cs” class. The changes that we made are:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;  &lt;li&gt;set the “AllowMinimize” and “AllowHide” property to false to disable minimizing and hiding capabilities&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;set the “ChromType” of the Web Part to hide the chrome around our Web Part during page load&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;added to each property the attribute “Category(&amp;quot;Address settings&amp;quot;)” to move the property in the new category of our editor part&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;added to the city property the attribute “WebDisplayName(&amp;quot;City or Town&amp;quot;)” to change the label associated to the textbox “city”&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  1: &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Examples.AddressWebPart.Address&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  2: {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  3:     [ToolboxItemAttribute(&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;)]&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  4:     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Address : WebPart&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  5:     {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  6:         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Address()&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  7:         {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  8:             &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.AllowMinimize = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  9:             &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.AllowHide = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 10:             &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.AllowClose = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 11:             &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ChromeType = PartChromeType.None;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 12:         }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 13: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 14:         &lt;span style="color: #008000"&gt;// Visual Studio might automatically update this path when you change the Visual Web Part project item.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 15:         &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; _ascxPath = @&amp;quot;&lt;span style="color: #8b0000"&gt;~/_CONTROLTEMPLATES/Examples.AddressWebPart/Address/AddressUserControl.ascx&lt;/span&gt;&amp;quot;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 16: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 17:         [Personalizable(), WebBrowsable, Category(&amp;quot;&lt;span style="color: #8b0000"&gt;Address settings&lt;/span&gt;&amp;quot;)]&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 18:         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; String Firstname { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 19: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 20:         [Personalizable(), WebBrowsable, Category(&amp;quot;&lt;span style="color: #8b0000"&gt;Address settings&lt;/span&gt;&amp;quot;)]&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 21:         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; String Lastname { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 22: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 23:         [Personalizable(), WebBrowsable, Category(&amp;quot;&lt;span style="color: #8b0000"&gt;Address settings&lt;/span&gt;&amp;quot;)]&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 24:         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; String Street { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 25: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 26:         [Personalizable(), WebBrowsable, Category(&amp;quot;&lt;span style="color: #8b0000"&gt;Address settings&lt;/span&gt;&amp;quot;)]&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 27:         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; Zip { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 28: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 29:         [Personalizable(), WebBrowsable, WebDisplayName(&amp;quot;&lt;span style="color: #8b0000"&gt;City or Town&lt;/span&gt;&amp;quot;), Category(&amp;quot;&lt;span style="color: #8b0000"&gt;Address settings&lt;/span&gt;&amp;quot;)]&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 30:         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; String City { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 31: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 32:         &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CreateChildControls()&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 33:         {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 34:             AddressUserControl control = Page.LoadControl(_ascxPath) &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; AddressUserControl;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 35:             &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 36:             &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (control != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 37:             {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 38:                 control.WebPart = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 39:             }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 40: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 41:             Controls.Add(control);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 42:         }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 43:     }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 44: }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 45: &lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Points to consider&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;During Web Part development consider following points:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Never change assembly name, namespace or class name of a Web Part used by your customers. The customer will get an exception to this. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Never change property names that are personalized to change the description in the editor zone. Use the “WebDisplayName” instead&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;If you set a property in your Web Part class, this setting will not be stored in the database.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Base types are rendered automatically in your editor zone. If you want “complex” types, you need to extend the editor zone with custom code&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Complex types must be serializable, or you will get exceptions on runtime&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Summing up&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In this post we created a simple address Web Part with customizable properties. We saw how to combine the Web Part class with our web user control and how to personalize some basic Web Part and Editor Part settings. If you want to get more information about Visual Web Part development, simply follow my &lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-visual-web-parts-in.html" target="_blank"&gt;post series&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Hope this helps,&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-1558402967749782854?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/1558402967749782854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/05/how-do-i-create-custom-properties-in.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/1558402967749782854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/1558402967749782854'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/05/how-do-i-create-custom-properties-in.html' title='How do I create custom properties in Visual Web Parts?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_3lC_bucoo88/S_ZQWqnSe6I/AAAAAAAAAN0/PsOdFdCyj5o/s72-c/image_thumb%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-2171432958009197448</id><published>2010-05-19T19:00:00.001+02:00</published><updated>2010-08-09T17:30:23.008+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Parts'/><title type='text'>How do I configure the basic project properties of my newly created Visual Web Part project?</title><content type='html'>&lt;p&gt;&lt;em&gt;Hi all,&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;in my &lt;/em&gt;&lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-my-first-web-part-with.html" target="_blank"&gt;&lt;em&gt;last post&lt;/em&gt;&lt;/a&gt;&lt;em&gt; about Visual Web Part development with Visual Studio 2010 I was talking about the creation of a simple Visual Web Part for SharePoint Foundation 2010. I will continue with the example that we made last time and emphasize the settings that you might want to setup in your project. In addition, I will give you some hints, how to avoid some common pitfalls during Web Part creation. Web Part development has become easier, however, there remain some important aspects to consider during development. If you are interested in an overview of all my posts about Visual Web Parts, then follow &lt;/em&gt;&lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-visual-web-parts-in.html" target="_blank"&gt;&lt;em&gt;this link&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;For the sake of simplicity, we are going to add a new Visual Web Part including only a “Hello World” text into our project (I will use the project we created &lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-my-first-web-part-with.html" target="_blank"&gt;last post&lt;/a&gt;, but you can also create one from scratch). Simply add a new Visual Web Part to your project. Your project should look similar to the next screen:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/S_QZIaDNisI/AAAAAAAAAMY/Mynke7EKH7o/s1600-h/image4%5B1%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_3lC_bucoo88/S_QZI95NxbI/AAAAAAAAAMc/v-MhZridKQU/image_thumb21.png?imgmax=800" width="384" height="465" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;The project structure and the most important folders that you might encounter are described below. The next sections describe more deeply the usage of these folders:&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;Properties: this section is used to make the most basic settings for your project such as namespace definitions, DLL name definition, DLL signing, debug properties and so on… &lt;/li&gt;  &lt;li&gt;References: the DLLs that are used and referenced in your project &lt;/li&gt;  &lt;li&gt;Package: the package folder defines all settings needed for a SharePoint solution. Here you are able to configure the most important settings, defining for example which features you will package for this solution. &lt;/li&gt;  &lt;li&gt;Features: the features folder can contain one or more feature definitions that are associated to your package. Each feature definition can be used to encapsulate the items you might want to publish and activate on your SharePoint sites &lt;/li&gt;  &lt;li&gt;Web Part Containers (e.g., HelloWorld, SimpleWebPart): this container summarizes the most important elements for your Visual Web Parts &lt;/li&gt;  &lt;li&gt;key.snk: this is the key needed to sign your solution. Each DLL that is deployed in the Global Assembly Cache (GAC) must also be signed. Visual Studio does this automatically for you during project creation of SharePoint projects. &lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;1) Properties&lt;/h2&gt;&lt;p&gt;For most of you, the properties section of a Visual Studio project should not be something new. Depending on the project type you created, the section provides you more or less configuration properties. You can access this section by double clicking the “folder” “Properties” in your solution explorer. The result should be a window similar to the next one. The properties relevant to our Visual Web Part development are situated in the “Application”, “Resources”, and “SharePoint sections. This post will cover the “Application” and “SharePoint” section, the “Resource” section will be explained in the postings talking about Web Part localization.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_3lC_bucoo88/S_QZJkZlALI/AAAAAAAAAMg/gpLgQAebxjI/s1600-h/image8.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_3lC_bucoo88/S_QZJ8uF7QI/AAAAAAAAAMo/q9GRR16XAfY/image_thumb4.png?imgmax=800" width="384" height="278" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Properties: Application&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;In this section you are able to change the assembly name, default namespace, assembly information and many more settings relevant to your assembly file. You should consider changing the assembly file and default namespace at the beginning of the development or at least before deploying the solution on a production environment. In addition, I recommend not to change any names related to the assembly, namespace or Web Part class name after deployment. Now, I will explain why you should not do it:&lt;/p&gt;&lt;blockquote&gt;  &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; As you probably know, SharePoint stores the full qualified path of your class (assembly name, namespace and class name) into it’s database and connects this entry with the page where you added the desired Web Part. Now imagine that you need to change any of the above names and you can imagine what will happen. SharePoint can’t find the Web Part that you recently added and returns an exception for your Web Part.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Let’s do a test to verify what exactly happens when we are doing something like that. We can do it by simply deploying our current project on our site and adding a Web Part to our pages (if you don’t know how to do it, I would recommend you to read my &lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-my-first-web-part-with.html" target="_blank"&gt;last post&lt;/a&gt;). Afterwards, we simply need to change the assembly name to something else (let us take for example the name “Examples.VisualWebPart”). It should look similar to next figure: &lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/S_QZKrU-JCI/AAAAAAAAAMs/seifCkqLeHI/s1600-h/image12.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_3lC_bucoo88/S_QZLkzDbBI/AAAAAAAAAMw/Jd_0DqOaiu0/image_thumb61.png?imgmax=800" width="384" height="272" /&gt;&lt;/a&gt;Now, we can deploy again the solution. Refresh the pages and SharePoint is not able to find your Web Parts anymore. If you used a Wiki Page, probably, the Web Part will not be displayed anymore. On the other hand, if you are using Web Part pages, you might encounter an error similar to the next one:&lt;/p&gt;&lt;blockquote&gt;  &lt;p&gt;&lt;em&gt;“Web Part Error: A Web Part or Web form Control on this Page cannot be displayed or imported. The type … could not be found or it is not registered as safe.”&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/S_QZL5H7KPI/AAAAAAAAAM0/oBI3VOgwa9Q/s1600-h/image20.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/S_QZMVlVnJI/AAAAAAAAAM4/OeOCUekTI2U/image_thumb10.png?imgmax=800" width="384" height="211" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Properties: SharePoint&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;In this section you can change some settings related to the SharePoint deployment. You can configure pre- and post-deployment command line settings. In addition you are able to choose different kind of deployment configurations for your project or create your own.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/S_QZM-SzDlI/AAAAAAAAAM8/ge_QtPtEYeQ/s1600-h/image51.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_3lC_bucoo88/S_QZNXoKK0I/AAAAAAAAANA/blP81HMb0tw/image_thumb2.png?imgmax=800" width="384" height="198" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You only need to press the “New” button to create a new deployment configuration. You see in the next window that you have different possibilities to configure it. You can differentiate between the steps executed during deployment or even retraction. But to be honest, I think that the basic configurations provided in the figure above will be enough for most of your development scenarios. However, this remains a great way to customize your deployment process.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_3lC_bucoo88/S_QZNmydRJI/AAAAAAAAANE/ycf90Brvtzw/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_3lC_bucoo88/S_QZOPAFmDI/AAAAAAAAANI/ybMZPhXXaGg/image_thumb%5B1%5D.png?imgmax=800" width="384" height="399" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;h2&gt;2) Package folder&lt;/h2&gt;&lt;p&gt;The SharePoint project template supports you during development of so called SharePoint solutions. The “Package” folder is the main container of your solution that you can configure to your needs. The most important settings you might want to change are the name and the list of feature you want to include to your solution. You can even change the feature order with a button click. In the background, Visual Studio builds the necessary manifest files needed by your solution. In the advanced tab you can add additional assemblies that must be deployed with your solution on the server. Finally, you can even change manually the manifest of your solution in the manifest tab of this window. &lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/S_QZOkLDyOI/AAAAAAAAANM/8HXYhb2B-lw/s1600-h/image91.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/S_QZPF2y7_I/AAAAAAAAANQ/dN3Q3luTN6o/image_thumb41.png?imgmax=800" width="384" height="204" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;h2&gt;3) Features folder&lt;/h2&gt;&lt;p&gt;A feature is a collection of files that are deployed to your SharePoint project. You can add as many features you want in the features folder. If you click on a feature, you can define the usual settings such as the feature name and the contents that should be included into your feature. If you are adding a new feature to your project, you can define different items for your feature and add it to your solution by using the package folder. Finally, you are able to define the scope of your feature and even feature dependencies by using this window. Similar to the package folder, you can change also here the manifest file manually.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/S_QZPn3E91I/AAAAAAAAANU/wXIcyVf9R0k/s1600-h/image13.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_3lC_bucoo88/S_QZP1v66II/AAAAAAAAANY/U7Oq2QLnCiU/image_thumb6.png?imgmax=800" width="384" height="207" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;h2&gt;4) Web Part Container&lt;/h2&gt;&lt;p&gt;Now, we are talking about the most important section of our post. The Visual Web Part containers that you see in the solution explorer image at the beginning of this post (in our cases the HelloWorld and SimpleWebPart containers) summarize all important files related to our Visual Web Part(s). We will check the different files by considering the “HelloWorld” Web Part container.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/S_QZQcf1JAI/AAAAAAAAANc/CHZofbiU4Y8/s1600-h/image4.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/S_QZQ1SzDWI/AAAAAAAAANg/JNa-pB4ohfA/image_thumb1.png?imgmax=800" width="384" height="148" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;Elements.xml: this file contains the necessary feature settings needed for the Web Part deployment &lt;/li&gt;  &lt;li&gt;HelloWorld.cs: this is the Web Part class inheriting from the System.UI.WebControls.WebPart. You will need it to create personalizable Web Part properties in future &lt;/li&gt;  &lt;li&gt;HelloWorld.webpart: this is an additional file defining some Web Part default properties for SharePoint. When you add a Web Part to your page, these properties will be considered. Please note that these properties are used during first time instantiation. Afterwards, they can’t be overridden without manual intervention. &lt;/li&gt;  &lt;li&gt;HelloWorldUserControl.ascx: this is the magic behind the Visual Web Part concept. The web user control that you will use to personalize your Web Part visually &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Let us look behind behind the scenes to understand what Visual Web Parts really are. Let us open the “HelloWorld.cs” file to check this. &lt;/p&gt;&lt;pre class="brush: csharp; ruler: true;"&gt;namespace VisualWebPartExample.HelloWorld&lt;br /&gt;{&lt;br /&gt;    [ToolboxItemAttribute(false)]&lt;br /&gt;    public class HelloWorld : WebPart&lt;br /&gt;    {&lt;br /&gt;        // Visual Studio might automatically update this path when you change the Visual Web Part project item&lt;br /&gt;        private const string _ascxPath = @&amp;quot;~/_CONTROLTEMPLATES/VisualWebPartExamples/HelloWorld/HelloWorldUserControl.asxcx&amp;quot;;&lt;br /&gt;&lt;br /&gt;        protected override void CreateChildControls()&lt;br /&gt;        {&lt;br /&gt;            Control control = Page.LoadControl(_ascxPath);&lt;br /&gt;            Controls.Add(control);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;This Web Part looks similar to our “old-school” Web Parts we created in the previous versions of SharePoint. You see that at the end the Visual Web Part concept is nothing else than a web user control (our “HelloWorldUserContro.ascx”) loaded dynamically in the “CreateChildControls” event of our Web Part. That means, that most of our development efforts base on the customization of both files, “HelloWorld.cs” and “HelloWorldUserControl.ascx”. We will see more about this in my next posts.&lt;/p&gt;&lt;p&gt;In the meantime, we are covering the last two files. The “Elements.xml” file looks like that:&lt;/p&gt;&lt;pre class="brush: xml; ruler: true;"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;Elements xmlns=&amp;quot;http://schemas.microsoft.com/sharepoint/&amp;quot; &amp;gt;&lt;br /&gt;    &amp;lt;Module Name=&amp;quot;HelloWorld&amp;quot; List=&amp;quot;113&amp;quot; Url=&amp;quot;_catalogs/wp&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;File Path=&amp;quot;HelloWorld\HelloWorld.webpart&amp;quot; Url=&amp;quot;HelloWorld.webpart&amp;quot; Type=&amp;quot;GhostableInLibrary&amp;quot; &amp;gt;&lt;br /&gt;            &amp;lt;Property Name=&amp;quot;Group&amp;quot; Value=&amp;quot;Custom&amp;quot; /&amp;gt;&lt;br /&gt;        &amp;lt;/File&amp;gt;&lt;br /&gt;    &amp;lt;/Module&amp;gt;&lt;br /&gt;&amp;lt;/Elements&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Line 4 defines in which category our Web Part will be inserted in the Web Part catalog of our SharePoint site. You can see this in the next figure:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/S_QZRedtGAI/AAAAAAAAANk/Lllj_xKTGRY/s1600-h/image%5B8%5D.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_3lC_bucoo88/S_QZR5W9nDI/AAAAAAAAANs/0i4oOC5mdP4/image_thumb%5B3%5D.png?imgmax=800" width="384" height="151" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The last file is the file called “HelloWorld.webpart”. The code of this file looks similar to the next code section:&lt;/p&gt;&lt;p&gt;  &lt;pre class="brush: xml; ruler: true;"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;webParts&amp;gt;&lt;br /&gt;    &amp;lt;webPart xmlns=&amp;quot;http://schemas.microsoft.com/WebPart/v3&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;metaData&amp;gt;&lt;br /&gt;            &amp;lt;type name=&amp;quot;VisualWebPartExamples.HelloWorld.HelloWorld, $SharePoint.Project.AssemblyFullName$&amp;quot; /&amp;gt;&lt;br /&gt;            &amp;lt;importErrorMessage&amp;gt;$Resource:core,ImportMessage;&amp;lt;/importErrorMessage&amp;gt;&lt;br /&gt;        &amp;lt;/metaData&lt;br /&gt;        &amp;lt;data&amp;gt;&lt;br /&gt;            &amp;lt;properties&amp;gt;&lt;br /&gt;                &amp;lt;property name=&amp;quot;Title&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;HelloWorld&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;property name=&amp;quot;Description&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;My Visual WebPart&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;/properties&amp;gt;&lt;br /&gt;        &amp;lt;/data&amp;gt;&lt;br /&gt;    &amp;lt;/webPart&amp;gt;&lt;br /&gt;&amp;lt;/webParts&amp;gt;&lt;/pre&gt;  &lt;br /&gt;In the properties section you can change the properties of your Web Part such as the title or description that are visible in the “About the Web Part” section of the picture that we saw before. In addition, you are able to add additional property settings that are used during the addition of your Web Part in a SharePoint page. These settings are used as default settings for your personalizable properties. In the next posts we will see more about that.&lt;/p&gt;&lt;h2&gt;Summary&lt;/h2&gt;&lt;p&gt;In this post we saw the different project sections and their most important properties of a Visual Web Part project in Visual Studio 2010. With this knowledge, we can continue with our Visual Web Part journey and discover how to personalize them with this &lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-my-first-web-part-with.html" target="_blank"&gt;post series&lt;/a&gt;. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Best regards,&lt;/p&gt;&lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-2171432958009197448?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/2171432958009197448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/05/how-do-i-configure-basic-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/2171432958009197448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/2171432958009197448'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/05/how-do-i-configure-basic-project.html' title='How do I configure the basic project properties of my newly created Visual Web Part project?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_3lC_bucoo88/S_QZI95NxbI/AAAAAAAAAMc/v-MhZridKQU/s72-c/image_thumb21.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-5838467419634707411</id><published>2010-05-17T12:43:00.001+02:00</published><updated>2010-08-09T17:15:31.355+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Developer Walkthroughs'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Parts'/><title type='text'>How do I create my first Web Part with Visual Studio 2010 and SharePoint Foundation 2010?</title><content type='html'>&lt;p&gt;&lt;em&gt;Hi all,&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;in this post of my Visual Web Part &lt;/em&gt;&lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-visual-web-parts-in.html" target="_blank"&gt;&lt;em&gt;post series&lt;/em&gt;&lt;/a&gt;&lt;em&gt; I’m going to explain how to create your first Visual Web Part with Visual Studio 2010 and SharePoint Foundation 2010. &lt;/em&gt;&lt;/p&gt;&lt;h2&gt;Walkthrough&lt;/h2&gt;&lt;p&gt;We are going to create a new Visual Web Part project for SharePoint 2010. In this project we will add a small Visual Web Part containing only a label and a button. In addition, connect a button click event with this button and change with it the content of the label. Nothing special, but enough to discover the steps needed for simple Visual Web Part development on this new platform. &lt;/p&gt;&lt;p&gt;During this post we are following these steps:&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;Step 1: Setup the project&lt;/li&gt;  &lt;li&gt;Step 2: Create and customize the Visual Web Part&lt;/li&gt;  &lt;li&gt;Step 3: Deploy and test the Visual Web Part&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;  &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; that you need the SharePoint Development Tools for SharePoint 2010 activated to do this tutorial. &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;So, let us start with it…&lt;/p&gt;&lt;h4&gt;Step 1: Setup the project&lt;/h4&gt;&lt;p&gt;In this step we are going to create a &lt;em&gt;Visual Web Part &lt;/em&gt;project and connect it with a SharePoint server.&lt;/p&gt;&lt;p&gt;1. Create a new project in Visual Studio 2010 (SharePoint –&amp;gt; 2010 –&amp;gt; &lt;strong&gt;Visual Web Part&lt;/strong&gt;), call it &lt;em&gt;VisualWebPartExample&lt;/em&gt; and press &lt;strong&gt;ok&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/S_EdlchqVZI/AAAAAAAAAK4/WtJ0DWyUXN8/s1600-h/image81.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_3lC_bucoo88/S_EdnGpG3vI/AAAAAAAAAK8/N_azf9nUsQ8/image_thumb49.png?imgmax=800" width="424" height="305" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2. The &lt;em&gt;SharePoint Customization Wizard&lt;/em&gt; opens. Specify the desired target site (in my case called &lt;a href="http://jacklaptop"&gt;http://jacklaptop&lt;/a&gt;) and select &lt;em&gt;Deploy as a farm solution&lt;/em&gt;. Confirm your selection with &lt;strong&gt;finish&lt;/strong&gt;&amp;#160;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/S_EdonfvPsI/AAAAAAAAALA/78EFuPIe6u8/s1600-h/image82.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_3lC_bucoo88/S_EdpxythgI/AAAAAAAAALE/dY77f96tt_M/image_thumb50.png?imgmax=800" width="424" height="344" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;3. Visual Studio creates for you a project customized for the SharePoint development. It adds automatically packaging and feature settings and an example Visual Web Part. Delete from the project &lt;em&gt;VisualWebPart1&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;To sum up, we created a new Visual Web Parts project which will be deployed as a farm solution. This solution is then activated automatically on the site collection that we specified at the beginning. Pretty cool. &lt;/p&gt;&lt;h2&gt;Step 2: Create and customize the Visual Web Part&lt;/h2&gt;&lt;p&gt;In this step we are going to add a new Visual Web Part to our project and customize it a little bit by adding a label with simple content&lt;/p&gt;&lt;p&gt;1) Press the right mouse button on your project and go to “&lt;strong&gt;Add –&amp;gt; new item&lt;/strong&gt;”. Add a new Web Part called &lt;em&gt;SimpleWebPart&lt;/em&gt; and confirm with &lt;strong&gt;add&lt;/strong&gt;. &lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_3lC_bucoo88/S_EdqwtDX7I/AAAAAAAAALI/cvnQGm9WzoM/s1600-h/image83.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_3lC_bucoo88/S_EdsEAsWeI/AAAAAAAAALM/Zaj0e6WONUI/image_thumb51.png?imgmax=800" width="424" height="301" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The solution explorer should look like in the next figure so far:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/S_EdtAcjRJI/AAAAAAAAALQ/_V8_sGIl7H8/s1600-h/image84.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/S_EdtwpKrNI/AAAAAAAAALU/Gh-3tn68lTI/image_thumb52.png?imgmax=800" width="186" height="304" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You can see in the solution explorer that there is a small container called S&lt;em&gt;impleWebPart&lt;/em&gt;. In this container you can find all necessary support files needed for the Visual Web Part development. A Visual Web Part is nothing else than a classic Web Part that automatically loads a web user control in it. The advantage of this approach is that you are able to use the design support with web user controls in Visual Studio. Now, we are going to finalize our Web Part development by customizing the most important file, the &lt;em&gt;SimpleWebPartUserControl.ascx&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;2) Open the file &lt;em&gt;SimpleWebPartUserControl.ascx&lt;/em&gt; and go in &lt;strong&gt;design&lt;/strong&gt; mode&lt;/p&gt;&lt;p&gt;3) Add a &lt;strong&gt;label&lt;/strong&gt; and a &lt;strong&gt;button&lt;/strong&gt;. This should look similar to next figure&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/S_EduTacVEI/AAAAAAAAALY/ysEonhq5sxo/s1600-h/image47.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_3lC_bucoo88/S_Edu1fYGRI/AAAAAAAAALc/TdvkNZ0ROfE/image_thumb31.png?imgmax=800" width="142" height="109" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;4) By double clicking on the &lt;strong&gt;button&lt;/strong&gt;, a button click event handler is associated to it. Please add in the previously generated method the code like in next code snippet:&lt;/p&gt;&lt;pre class="brush: csharp; ruler: true;"&gt;namespace VisualWebPartExamples.SimpleWebPart&lt;br /&gt;{&lt;br /&gt;    public partial class SimpleWebPartUserControl : UserControl&lt;br /&gt;    {&lt;br /&gt;        protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        protected void Button1_Click(object sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            Label1.Text = &amp;quot;Event triggered&amp;quot;;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;That’s all for now. We don’t need to add more functionality to this Web Part. Go to the next step to deploy the solution on your web application.&lt;/p&gt;&lt;h2&gt;Step 3: Deploy and test the Visual Web Part&lt;/h2&gt;&lt;p&gt;Our next step is to deploy this solution and to activate the feature on our web application. Guess what? Visual Studio 2010 is doing it for you automatically. Afterwards, we are going to test our Web Part on the web application.&lt;/p&gt;&lt;p&gt;1) Right mouse button on our project and press &lt;strong&gt;deploy&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/S_EdxYrbqgI/AAAAAAAAALo/IW2EW2_C9RA/s1600-h/image55.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_3lC_bucoo88/S_EdyYvvyWI/AAAAAAAAALs/kFAzXaLDeIU/image_thumb35.png?imgmax=800" width="400" height="386" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2) Visual Studio starts the building, solution packaging and feature activating for you. That is really great, because these steps were made manually some years ago.&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/S_EdzsA7i4I/AAAAAAAAALw/QOtXGGGlAjE/s1600-h/image60.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_3lC_bucoo88/S_Ed0zphRZI/AAAAAAAAAL0/Kujh7tb3kvE/image_thumb38.png?imgmax=800" width="400" height="170" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;3) Open the web application that was specified at the beginning and add the newly added Web Part to any zone you like. Please note (I can’t say it often enough… Visual Studio did everything for you…). Do this by editing the page and going to the “insert” tab. Press the “Web Part” button and select from the “Custom” category the previously created Web Part.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/S_Ed1olt6RI/AAAAAAAAAL4/ts8s7MMFqt0/s1600-h/image88.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/S_Ed2bQIcXI/AAAAAAAAAL8/sVFpAsWX-ME/image_thumb56.png?imgmax=800" width="400" height="267" /&gt;&lt;/a&gt; &lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/S_Ed3NDcKWI/AAAAAAAAAMA/3ikw4U_PMkg/s1600-h/image86.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/S_Ed39yC6lI/AAAAAAAAAME/uQAXc3yMRyQ/image_thumb54.png?imgmax=800" width="400" height="265" /&gt;&lt;/a&gt; &lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/S_Ed4ntHr_I/AAAAAAAAAMI/RR7bd1oiPpw/s1600-h/image87.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_3lC_bucoo88/S_Ed5WlrSAI/AAAAAAAAAMM/td-Liq0DuAU/image_thumb55.png?imgmax=800" width="400" height="278" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;#160; 4) Last but not least, test the Web Part by pressing the &lt;strong&gt;Click me&lt;/strong&gt; button&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_3lC_bucoo88/S_Ed6Jv-rjI/AAAAAAAAAMQ/pmNniHvVPHA/s1600-h/image89.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_3lC_bucoo88/S_Ed6zPPkxI/AAAAAAAAAMU/nnIAZ2D3Z14/image_thumb57.png?imgmax=800" width="424" height="302" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;Summary&lt;/h2&gt;&lt;p&gt;The example above is naturally nothing exciting. However, the most exciting thing is to see how simple the Web Part development has become with the support of Visual Studio 2010 and the SharePoint Development Tools. Great job to everyone who contributed to this fantastic feature. &lt;/p&gt;&lt;p&gt;Not enough? Ah, I forgot. If you want to debug the Web Part that you created before, you don’t need to attach the process manually anymore. With Visual Studio 2010 it is enough to press the debug button and you are ready for debugging. &lt;/p&gt;&lt;p&gt;That’s all for now. You can follow my &lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-visual-web-parts-in.html" target="_blank"&gt;post series&lt;/a&gt; of Visual Web Part development here, if you are interested in hearing more about this exciting new feature.&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Best regards,&lt;/p&gt;&lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-5838467419634707411?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/5838467419634707411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/05/how-do-i-create-my-first-web-part-with.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5838467419634707411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5838467419634707411'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/05/how-do-i-create-my-first-web-part-with.html' title='How do I create my first Web Part with Visual Studio 2010 and SharePoint Foundation 2010?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_3lC_bucoo88/S_EdnGpG3vI/AAAAAAAAAK8/N_azf9nUsQ8/s72-c/image_thumb49.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-8224938455175977044</id><published>2010-05-17T12:41:00.001+02:00</published><updated>2010-08-09T17:16:25.085+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Developer Walkthroughs'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Parts'/><title type='text'>How do I create Visual Web Parts in SharePoint Foundation 2010 with Visual Studio 2010?</title><content type='html'>&lt;p&gt;Hi all,&lt;/p&gt;&lt;p&gt;Web Parts are one of the key aspects in development of customizable SharePoint projects. I’m developing Web Parts in SharePoint and ASP.NET for years now and used them for many of my projects although the development speed is slightly slower than for custom web control development. Finally, with the introduction of the new SharePoint version and Visual Studio 2010, we are finally able to create Web Parts with designer support. &lt;/p&gt;&lt;p&gt;Because of that I’m starting a blog series which talks about Visual Web Part development in SharePoint 2010. The topics that I will cover are:&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;&lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-my-first-web-part-with.html" target="_blank"&gt;How do I create my first Web Part with Visual Studio 2010 and SharePoint Foundation 2010?&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-configure-basic-project.html" target="_blank"&gt;How do I configure the basic project properties of my newly created Visual Web Part project?&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-custom-properties-in.html" target="_blank"&gt;How do I create custom properties in Visual Web Parts?&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://patricklamber.blogspot.com/2010/05/how-do-i-create-custom-editor-parts-for.html" target="_blank"&gt;How do I create custom Editor Parts for my Visual Web Parts?&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://patricklamber.blogspot.com/2010/06/visual-web-parts-are-cool-but-how-do-i.html" target="_blank"&gt;Visual Web Parts are cool… but how do I create Visual Editor Parts?&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://patricklamber.blogspot.com/2010/07/how-do-i-passexchange-data-between-two.html" target="_blank"&gt;How do I pass/exchange data between two Visual Web Parts?&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;What do I need to follow this post series?&lt;/h2&gt;&lt;p&gt;Basically, my development environment for this post series is based on a SharePoint Foundation 2010 installed on as a standalone instance on my Windows Server 2008. The Visual Web Part development is done by using Visual Studio 2010 with the SharePoint developer tools installed on the same machine.&lt;/p&gt;&lt;p&gt;Bookmark this page if you are interested in this topic, because more posts will follow in the future.&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;Best regards,&lt;/p&gt;&lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-8224938455175977044?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/8224938455175977044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/05/how-do-i-create-visual-web-parts-in.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/8224938455175977044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/8224938455175977044'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/05/how-do-i-create-visual-web-parts-in.html' title='How do I create Visual Web Parts in SharePoint Foundation 2010 with Visual Studio 2010?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-7034552963588995228</id><published>2010-05-13T17:31:00.001+02:00</published><updated>2010-05-13T17:31:07.083+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>How do I copy/retrieve DLLs from the Global Assembly Cache (GAC)?</title><content type='html'>&lt;p&gt;Hi all,&lt;/p&gt;  &lt;p&gt;the global assembly cache (GAC) is a special windows directory sharing machine-wide .NET assemblies. As you probably know, this central repository is situated on %WINHOME%\assembly. When you open the directory you will probably see something similar like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_3lC_bucoo88/S-wbMc_ArFI/AAAAAAAAAKg/YXYR99-UGYo/s1600-h/image%5B21%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_3lC_bucoo88/S-wbM-FledI/AAAAAAAAAKk/7ohWtDwyfOo/image_thumb%5B11%5D.png?imgmax=800" width="298" height="296" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is a special way to visualize the DLLs that reside on your operating system. Please note that the DLLs are only shown like that in this window, but organized in a folder structure in a certain way in the background. Fortunately, as long as you want to add, replace and delete a DLL from the GAC, you don’t really need to know the folder structure in the background. You can add or replace assemblies by simply dragging &amp;amp; dropping them into this window. The deletion of an assembly requires only your finger on the delete button. Windows is responsible for creating or cleaning the necessary files and directory structure in the background.&lt;/p&gt;  &lt;p&gt;Unfortunately, there is no copy function provided by this window. You cannot drag &amp;amp; drop assemblies from the GAC window into another location. However, you can copy it by using the command prompt window. To show how this works, I created a test DLL called “Lamber.Example”. The DLL has the version “1.0.0.0”, the Public Key Token “f9df494f643bd199” and the Processor Architecture “MSIL”. You can see this in the next picture:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3lC_bucoo88/S-wbNRyXpYI/AAAAAAAAAKo/njFxgn2DCNs/s1600-h/image%5B8%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_3lC_bucoo88/S-wbNu_6iwI/AAAAAAAAAKs/lBVG5a734CY/image_thumb%5B4%5D.png?imgmax=800" width="575" height="71" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You need this information to find the correct location in the folder structure that Windows manages in the background for you. The steps are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;open a new command prompt window&lt;/li&gt;    &lt;li&gt;navigate to&amp;#160; %WINHOME%\assembly&lt;/li&gt;    &lt;li&gt;we want to reference an assembly of the MSIL architecture, therefore enter into the directory “GAC_MSIL”&lt;/li&gt;    &lt;li&gt;enter into the directory with the name of your assembly (in my case “Lamber.Example”)&lt;/li&gt;    &lt;li&gt;enter into the directory that has the name composed of the version number and Public Key Token (in my case “1.0.0.0___f9df494f643bd199”)&lt;/li&gt;    &lt;li&gt;press dir to see your DLL file. You should see something similar to the next picture&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://lh3.ggpht.com/_3lC_bucoo88/S-wbOCiSIWI/AAAAAAAAAKw/FnBDnsQGxvQ/s1600-h/image%5B20%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3lC_bucoo88/S-wbOizQHeI/AAAAAAAAAK0/LARd4FlDmEk/image_thumb%5B10%5D.png?imgmax=800" width="633" height="204" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;now copy the file by using the copy command (in our case “copy Lamber.Example C:\” to copy it into the C:\ root folder)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-7034552963588995228?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/7034552963588995228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/05/how-do-i-copyretrieve-dlls-from-global.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/7034552963588995228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/7034552963588995228'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/05/how-do-i-copyretrieve-dlls-from-global.html' title='How do I copy/retrieve DLLs from the Global Assembly Cache (GAC)?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_3lC_bucoo88/S-wbM-FledI/AAAAAAAAAKk/7ohWtDwyfOo/s72-c/image_thumb%5B11%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-6924252233269517550</id><published>2010-05-12T07:39:00.001+02:00</published><updated>2010-05-12T07:39:43.051+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Installation'/><title type='text'>SharePoint Foundation 2010, SharePoint Server 2010 and Project Server 2010 language packs released</title><content type='html'>&lt;p&gt;Hi all,&lt;/p&gt;  &lt;p&gt;just on time before the official launch of SharePoint Server 2010, Microsoft released the official language packs of SharePoint Foundation 2010, SharePoint Server 2010 and Project Server 2010. You can pick them by using these links:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=646e311a-aaf3-4d30-b03c-2f3c70d19a22" target="_blank"&gt;Language Packs for SharePoint Foundation 2010&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=046f16a9-4bce-4149-8679-223755560d54" target="_blank"&gt;2010 Server Language Packs for SharePoint Server 2010, Project Server 2010, Search Server 2010, and Office Web Apps 2010&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The installation is similar to the installation of the 2007 version. &lt;/p&gt;  &lt;p&gt;Best regards,&lt;/p&gt;  &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-6924252233269517550?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/6924252233269517550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/05/sharepoint-foundation-2010-sharepoint.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/6924252233269517550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/6924252233269517550'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/05/sharepoint-foundation-2010-sharepoint.html' title='SharePoint Foundation 2010, SharePoint Server 2010 and Project Server 2010 language packs released'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-291418569255658130</id><published>2010-05-12T07:31:00.001+02:00</published><updated>2010-05-12T07:40:10.753+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Development environment'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>SharePoint Developer: Should I switch to Windows Server 2008 on my laptop?</title><content type='html'>&lt;p&gt;Hi guys,&lt;/p&gt;  &lt;p&gt;every SharePoint developer is thinking once in a while about re-installing the developer machine and installing a complete server infrastructure on it. In the last couple of years I was always thinking about it really often. I was annoyed to use a laptop connected over remote desktop connection to a server and develop on it for SharePoint or Project. &lt;/p&gt;  &lt;p&gt;Finally, last week I decided to do it and installed a fresh copy of Windows Server 2008 R2 on my HP HDX 1080EL with 4GB of RAM (you might think that this guy is crazy). I was able to install everything I needed for simple SharePoint development on the new infrastructure such as:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Visual Studio 2010 &lt;/li&gt;    &lt;li&gt;SharePoint 2010 Foundation &lt;/li&gt;    &lt;li&gt;SharePoint 2010 Designer &lt;/li&gt;    &lt;li&gt;Office 2010 Plus &lt;/li&gt;    &lt;li&gt;Hyper-V &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Cool, everything seems to work as expected. I can develop on SharePoint 2010 Foundation with all the new tools and even use Hyper-V for virtualization for simple tests (please note that I can’t exaggerate with these tests since I’m only having 4 GB of RAM). And now? I have my developer machine converted in a server and I’m missing something… now this machine a server and I’m missing my fancy features of Windows 7 (… what a jerk). &lt;/p&gt;  &lt;p&gt;You might think: guy, Windows Server 2008 is the wrong decision if you want this. Fortunately, there is a solution that gives you the best of both: why shouldn’t it possible to convert your Windows Server 2008 to a workstation? Yes, we can! Just do it by customizing your Windows Server 2008. There are plenty resources explaining the necessary steps, but I think that the following resources are the best:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://www.win2008workstation.com/" href="http://www.win2008workstation.com/" target="_blank"&gt;http://www.win2008workstation.com/&lt;/a&gt;: describes the manual path and provides a small tool that does this job for you if you want &lt;/li&gt;    &lt;li&gt;&lt;a href="http://win2k8.msfn.org/" target="_blank"&gt;http://win2k8.msfn.org/&lt;/a&gt;: describes the manual path with plenty of pictures. From the first installation to the final configuration &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;After the execution of the steps described in the manuals above, I’m able to use Windows Server 2008 getting the best of booth, SharePoint development on a server environment and an operating system behaving similar to my beloved Windows 7. Should I switch to Windows Server 2008 on your laptop? Yes, why not? I think you should just try it. &lt;/p&gt;  &lt;p&gt;Best regards,&lt;/p&gt;  &lt;p&gt;patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-291418569255658130?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/291418569255658130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/05/sharepoint-developer-should-i-switch-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/291418569255658130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/291418569255658130'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/05/sharepoint-developer-should-i-switch-to.html' title='SharePoint Developer: Should I switch to Windows Server 2008 on my laptop?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-4442356655270207166</id><published>2010-05-08T16:34:00.001+02:00</published><updated>2010-05-08T16:34:11.066+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>Ready to rumble? SharePoint 2010 and Office 2010 are coming…</title><content type='html'>&lt;p&gt;Hi guys,&lt;/p&gt;  &lt;p&gt;not too many days are missing until the official launch of SharePoint 2010 and Office 2010 on May 12th, 2010. On the &lt;a href="http://sharepoint.microsoft.com/businessproductivity/proof/pages/2010-launch-events.aspx#fbid=WwqImeB_NXa" target="_blank"&gt;“2010 Launch Events”&lt;/a&gt; page you will find following statement:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“The future of business productivity is here with the Office 2010 and SharePoint 2010 global launch on May 12 at 11 a.m. EDT. Watch the keynote, join the virtual launch conversation, and participate in on-demand sessions where you’ll learn more about how Microsoft products can solve the unique productivity challenges you’re facing as you look to the future.”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Seems to be a promising event. Therefore, save the date and be ready to rumble :)!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cheers,&lt;/p&gt;  &lt;p&gt;patrick&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;img style="width: 0px; height: 0px; visibility: hidden" border="0" src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNzMzMjkxNjY*NDkmcHQ9MTI3MzMyOTE3MjA4MiZwPTMyNjQ3MiZkPVdhdmUxNFdpZGdldCUyZldhdmUxNFdpZGdl/dCZnPTMmbz*xNzY2ODI1YzY*YzU*NDM*YTEzZjAxMjFkYmQyYWQ5NSZzPW1pY3Jvc29mdC5jb2*mb2Y9MA==.gif" width="0" height="0" /&gt;&lt;OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=FlashPlayer10,0,0,0" WIDTH="290" HEIGHT="340" id="Join 2010"&gt;&lt;PARAM NAME="movie" VALUE="http://apps.ignitesocialmedia.com/flash/wave14/Join2010Widget.swf" /&gt;&lt;PARAM NAME="quality" VALUE="high" /&gt;&lt;PARAM NAME="bgcolor" VALUE="#ffffff" /&gt;&lt;PARAM NAME="flashVars" value="gig_cfg=Wave14Widget&amp;amp;crtr=1&amp;amp;gig_lt=1273329166449&amp;amp;gig_pt=1273329172082&amp;amp;gig_g=3&amp;amp;gig_s=microsoft.com&amp;amp;gig_cfg=Wave14Widget&amp;amp;gig_crtr=1" /&gt;&lt;EMBED src="http://apps.ignitesocialmedia.com/flash/wave14/Join2010Widget.swf" quality="high" bgcolor="#ffffff" WIDTH="290" HEIGHT="340" NAME="Join 2010" flashVars="gig_cfg=Wave14Widget&amp;crtr=1&amp;gig_lt=1273329166449&amp;gig_pt=1273329172082&amp;gig_g=3&amp;gig_s=microsoft.com&amp;gig_cfg=Wave14Widget&amp;gig_crtr=1" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/EMBED&gt;&lt;/OBJECT&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-4442356655270207166?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/4442356655270207166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/05/ready-to-rumble-sharepoint-2010-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4442356655270207166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/4442356655270207166'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/05/ready-to-rumble-sharepoint-2010-and.html' title='Ready to rumble? SharePoint 2010 and Office 2010 are coming…'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-5493705063020735175</id><published>2010-05-08T07:12:00.001+02:00</published><updated>2010-05-08T07:12:48.290+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Pack'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Cumulative Update'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><title type='text'>April 2010 CU for SharePoint Server 2007, Project Server 2007, WSS 3.0 available</title><content type='html'>&lt;p&gt;The next cumulative update of the Office System is available for download from the Microsoft pages. This was announced&lt;/p&gt;  &lt;p&gt;The next cumulative update of the Office System is available for download from the Microsoft pages. This was announced on April, 28th on the &lt;a href="http://projectserverblogs.com/?p=3857" target="_blank"&gt;project server blog&lt;/a&gt;. Unfortunately, I was not able to request the hot fix packages immediately. Now, it seems that they enabled them on the Microsoft pages. The server rollup packages are available through the following links:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Server products:&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SharePoint Services 3.0:&amp;#160; &lt;a href="http://support.microsoft.com/kb/981043"&gt;http://support.microsoft.com/kb/981043&lt;/a&gt;&lt;b&gt;&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;SharePoint Server 2007 (includes also hot fixes for Project Server): &lt;a href="http://support.microsoft.com/kb/981042"&gt;http://support.microsoft.com/kb/981042&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Requirement for this installation is the SP1. However, SP2 is strongly recommended to be installed as soon as possible. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Clients:&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Project 2007 Client: &lt;a href="http://support.microsoft.com/kb/981732"&gt;http://support.microsoft.com/kb/981732&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Requirement for this installation is the SP1.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In addition, it’s recommended to test the rollup packages on a testing environment prior the final deployment.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Best regards&lt;/p&gt;  &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-5493705063020735175?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/5493705063020735175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/05/april-2010-cu-for-sharepoint-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5493705063020735175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5493705063020735175'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/05/april-2010-cu-for-sharepoint-server.html' title='April 2010 CU for SharePoint Server 2007, Project Server 2007, WSS 3.0 available'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-1687889828056393683</id><published>2010-05-05T13:45:00.001+02:00</published><updated>2010-05-05T13:45:45.658+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='System architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Installation'/><title type='text'>How to share internet access from your hosting machine with your hyper-v internal network instances?</title><content type='html'>&lt;p&gt;Hi to everyone,&lt;/p&gt;  &lt;p&gt;I’m using a small server for testing purposes at home. My development environment consists of a Windows Server 2008 R2 instance with the Hyper-V role enabled. The server is in my office connected to the internet with a wireless adapter. The server hierarchy looks as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Root Server: Hyper-V role installed      &lt;ul&gt;       &lt;li&gt;Server 1: Active Directory, DHCP, DNS &lt;/li&gt;        &lt;li&gt;Server 2: SharePoint Foundation 2010 &lt;/li&gt;        &lt;li&gt;Server 3: Exchange Server 2010 &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The virtual server instances use a Hyper-V internal network adapter to communicate with each other and the Hyper-V host. Last week, I was wondering, if it is possible to share my internet connection provided by my wireless adapter on the host machine with my virtual machines. After some research I found &lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2008/01/09/using-hyper-v-with-a-wireless-network-adapter.aspx" target="_blank"&gt;this&lt;/a&gt; interesting blog post which addresses exactly my issue. I followed all steps described by &lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2008/01/09/using-hyper-v-with-a-wireless-network-adapter.aspx" target="_blank"&gt;the post&lt;/a&gt;. At the very first moment, this was not enough to get exactly the results I wanted. Until now, I was not able to connect to the internet on my virtual machines. After some checks I found following steps to follow:&lt;/p&gt;  &lt;p&gt;After pressing “&lt;strong&gt;Allow other network users to connect through this computer's Internet connection&lt;/strong&gt;” described in &lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2008/01/09/using-hyper-v-with-a-wireless-network-adapter.aspx" target="_blank"&gt;the post&lt;/a&gt;, the Hyper-v internal network adapter gets a new static IP address. This IP address is important to finish your configuration, because this is the IP of the default gateway for your virtual hosts.&lt;/p&gt;  &lt;p&gt;To finish your configuration, you have to specify the IP adress assigned to your Hyper-V internal network adapter as default gateway for your virtual hosts. After the correct assignment of the default gateway on your virtual machines, you are able to use the shared internet connection.&lt;/p&gt;  &lt;p&gt;Best regards&lt;/p&gt;  &lt;p&gt;Patrick Lamber&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-1687889828056393683?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/1687889828056393683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/05/how-to-share-internet-access-from-your.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/1687889828056393683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/1687889828056393683'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/05/how-to-share-internet-access-from-your.html' title='How to share internet access from your hosting machine with your hyper-v internal network instances?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-3338856740205287840</id><published>2010-05-01T17:06:00.001+02:00</published><updated>2010-05-01T17:06:58.801+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='maintainance'/><category scheme='http://www.blogger.com/atom/ns#' term='minimization'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Automatization of JavaScript and CSS minification with PowerShell</title><content type='html'>&lt;p&gt;Hi to everyone,&lt;/p&gt;  &lt;p&gt;currently I’m close to an important project’s deadline, therefore I’m not able to write more blog entries that I would like to do. However, today I found the time to write something about an automating task for JavaScript and CSS minification by using PowerShell.&lt;/p&gt;  &lt;p&gt;For those of you that do not know the JavaScript and CSS minification process, it is a process that tries to reduce the file size of your JavaScript and CSS files by removing all unnecessary comments and spaces. In this way your file is smaller and can be downloaded faster by your end-user when accessing your homepage.&lt;/p&gt;  &lt;p&gt;There is a free project that gives you the possibility to execute the minification on a choosen file. &lt;a href="http://developer.yahoo.com/yui/compressor/" target="_blank"&gt;YUI Compressor&lt;/a&gt; is a Java community project that does exactly this job. Unfortunately, you have to execute the minification process on each file you want to minify. Because of that I wrote a small PowerShell script that automates also this task. In this way, every time you deploy your JavaScript and CSS files, you can execute the minification script to reduce automatically the file size of your CSS and JavaScript files.&lt;/p&gt;  &lt;p&gt;To begin, you have to download the &lt;a href="http://yuilibrary.com/downloads/download.php?file=2a526a9aedfe2affceed1e1c3f9c0579" target="_blank"&gt;YUI Compressor&lt;/a&gt; on &lt;a href="http://developer.yahoo.com/yui/compressor/" target="_blank"&gt;their official homepage&lt;/a&gt;. (The script was tested with the version yuicompressor-2.4.2). Afterwards, you only need to use the script below and adapt it a little bit to your needs:&lt;/p&gt;  &lt;p&gt;1) $javaCommand = 'C:\Program Files\Java\jre1.6.0_04\bin\java.exe'    &lt;br /&gt;2) $styleSheetPath = &amp;quot;C:\StyleAndJavaScriptDirectory&amp;quot;;     &lt;br /&gt;3) $yuicompressorPath = &amp;quot;c:\yuicompressor-2.4.2.jar&amp;quot;; &lt;/p&gt;  &lt;p&gt;4) $childItems = get-childitem -path $styleSheetPath -include *.css,*.js -Recurse; &lt;/p&gt;  &lt;p&gt;5) foreach ($item in $childItems) {    &lt;br /&gt;6)&amp;#160;&amp;#160; &amp;amp; $javaCommand -jar $yuicompressorPath --type $item.Extension.Substring(1) -v $item.FullName -o $item.FullName     &lt;br /&gt;7) }&lt;/p&gt;  &lt;p&gt;The first three lines are intended for basic configuration. Line one is the path of the java.exe on your system. Line two is the directory that is recursively scanned for CSS and JS files. The third line is the path of the current yuicompressor. Change these lines to your configuration needs.&lt;/p&gt;  &lt;p&gt;The rest of the script is only getting all childitems with the .js and .css extention and executes on each of them the yuicompressor jar by using the “&amp;amp;” command.&lt;/p&gt;  &lt;p&gt;This script is handy if you have a lot of file to minimize and don’t want to waste your time in creating your own batch or PowerShell script. &lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-3338856740205287840?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/3338856740205287840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/05/automatization-of-javascript-and-css.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3338856740205287840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3338856740205287840'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/05/automatization-of-javascript-and-css.html' title='Automatization of JavaScript and CSS minification with PowerShell'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-7490605597945924392</id><published>2010-04-23T17:28:00.001+02:00</published><updated>2010-04-23T17:28:42.877+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><title type='text'>SharePoint Foundation 2010 is officially available</title><content type='html'>&lt;p&gt;Hi,&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/stefan_gossner/" target="_blank"&gt;Stefan Goßner&lt;/a&gt; announced in this &lt;a href="http://blogs.technet.com/stefan_gossner/archive/2010/04/23/wss-4-0-also-known-as-microsoft-sharepoint-foundation-2010-is-available-for-download.aspx" target="_blank"&gt;post&lt;/a&gt; that SharePoint 2010 is officially available and downloadable by &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=49c79a8a-4612-4e7d-a0b4-3bb429b46595" target="_blank"&gt;this&lt;/a&gt; link since today.&lt;/p&gt;  &lt;p&gt;Happy downloading&lt;/p&gt;  &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-7490605597945924392?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/7490605597945924392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/04/sharepoint-foundation-2010-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/7490605597945924392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/7490605597945924392'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/04/sharepoint-foundation-2010-is.html' title='SharePoint Foundation 2010 is officially available'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-3817045572273235136</id><published>2010-04-18T10:38:00.001+02:00</published><updated>2010-04-18T10:38:58.594+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>The Office 2010 is coming</title><content type='html'>&lt;p&gt;&lt;strong&gt;We've Shipped!,&lt;/strong&gt; announced the Microsoft Office 2010 Technical Beta Program Team in this &lt;a href="http://yasirbutt.spaces.live.com/Blog/cns!A8677D5751E6B4DA!5707.entry" target="_blank"&gt;post&lt;/a&gt; yesterday. Office 2010, SharePoint 2010, Visio 2010 and Project 2010 have reached the RTM (Release to Manufacturing) status, which is the final engineering milestone of Microsoft’s product development cycle. &lt;/p&gt;  &lt;p&gt;Visit the &lt;a href="http://www.the2010event.com/"&gt;http://www.the2010event.com&lt;/a&gt; homepage if you want to join the virtual launch of this exciting products on May 12th.&lt;/p&gt;  &lt;p&gt;Best regards&lt;/p&gt;  &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-3817045572273235136?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/3817045572273235136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/04/2010-wave-is-not-stopping.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3817045572273235136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3817045572273235136'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/04/2010-wave-is-not-stopping.html' title='The Office 2010 is coming'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-3064808453018049133</id><published>2010-04-10T12:04:00.001+02:00</published><updated>2010-04-10T12:04:04.018+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Exception'/><title type='text'>You are not able to create pages or sites in Moss 2007</title><content type='html'>&lt;p&gt;Hi,&lt;/p&gt;  &lt;p&gt;when you press create page or site on SharePoint 2007 and you get a similar exception below, you probably screwed up the permissions of your master page gallery. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;List does not exist &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;The page you selected contains a list that does not exist.&amp;#160; It may have been deleted by another user.&amp;#160;&amp;#160; at Microsoft.SharePoint.Library.SPRequestInternalClass.GetListsWithCallback(String bstrUrl, Guid foreignWebId, String bstrListInternalName, Int32 dwBaseType, Int32 dwBaseTypeAlt, Int32 dwServerTemplate, UInt32 dwGetListFlags, UInt32 dwListFilterFlags, Boolean bPrefetchMetaData, Boolean bSecurityTrimmed, Boolean bGetSecurityData, ISP2DSafeArrayWriter p2DWriter, Int32&amp;amp; plRecycleBinCount)      &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SharePoint.Library.SPRequest.GetListsWithCallback(String bstrUrl, Guid foreignWebId, String bstrListInternalName, Int32 dwBaseType, Int32 dwBaseTypeAlt, Int32 dwServerTemplate, UInt32 dwGetListFlags, UInt32 dwListFilterFlags, Boolean bPrefetchMetaData, Boolean bSecurityTrimmed, Boolean bGetSecurityData, ISP2DSafeArrayWriter p2DWriter, Int32&amp;amp; plRecycleBinCount)       &lt;br /&gt;Troubleshoot issues with Windows SharePoint Services.&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;Go to the master page gallery and modify the permissions (probably some permissions of your groups or users where removed) and add the necessary groups or users to your master page gallery.&lt;/p&gt;  &lt;p&gt;Best regards&lt;/p&gt;  &lt;p&gt;patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-3064808453018049133?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/3064808453018049133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/04/you-are-not-able-to-create-pages-or.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3064808453018049133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3064808453018049133'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/04/you-are-not-able-to-create-pages-or.html' title='You are not able to create pages or sites in Moss 2007'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-3707324204673512037</id><published>2010-04-03T19:26:00.001+02:00</published><updated>2010-04-03T19:28:23.466+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Developer Walkthroughs'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Why the Moss crawler might not working?</title><content type='html'>&lt;p&gt;This week I had to fight against our indexing and querying server in our new SharePoint farm. It is a farm environment consisting of several web-front ends and this poor little guy :). At the beginning, as usual, everything seemed to work as expected and we started to create our first content sources for indexing. You know what… my long and apparently endless journey begun exactly at this moment:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;The crawler could not communicate with the server. Check that the server is available and that the firewall access is configured &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;At the beginning this error was misleading. I double-checked the firewall settings and found no issues. The machines are communicating with each other without issues. Now you might be thinking… what else? &lt;/p&gt;  &lt;p&gt;Before I start to tell you how I solved this and another issue, I would like to give you an advice:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Advice&lt;/strong&gt;: before banging your head against the wall or trying to kill some developers near you, do following:&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;1) use RDC to connect on your indexing and crawling server&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;2) open a browser and try to open the SharePoint site you want to crawl by using the credentials of your search account&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Most of the issues will popup during this moment: &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;1) You see if the search account has not enough rights to access your page&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;2) You see if there are missing assemblies or errors in the web.config&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Only because your site is working on your web-front ends, this does not mean that it works on your indexing and querying machine. If some of the above cases occur, probably, you know what are your next steps.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;In my case it was a custom WebPart developed in our team. The WebPart was working like a charm when it was not crawled. When the pages were crawled, an exception was caught causing the misleading error message you saw before. Probably, you are using some kind of customizations that are breaking the indexer. Try to remove them from your site for testing purposes or debug the code with Visual Studio. &lt;em&gt;&amp;#160;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Still here? Damn… . After the correction of the bug I was also thinking that everything should work. But I was wrong. And voila’, the next error occurred:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Error in the site data web service&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Interestingly, the improved WebPart was not throwing the exception and the pages worked when browsed on the indexing server. After hours of research I finally found the solution for my problem. It was again a customization of our development team. It is a HTTPModule that is responsible for the URL rewriting of our SharePoint pages. The indexer seemed to hate our redirections with the &lt;em&gt;Response.Redirect&lt;/em&gt; command. I simply removed the automatic redirection on the indexing server. Afterwards, everything worked fine.&lt;/p&gt;  &lt;p&gt;Naturally, this special case occurred only because of our custom code. But I think that we can learn from it anyway. If some of the errors above are occurring, you probably forgot to update some code or you are missing some dlls on your indexing server. So try to debug and test your pages on the server to see what your issue might be.&lt;/p&gt;  &lt;p&gt;Hope this helps. Happy eastern&lt;/p&gt;  &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-3707324204673512037?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/3707324204673512037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/04/why-might-moss-crawler-not-working.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3707324204673512037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/3707324204673512037'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/04/why-might-moss-crawler-not-working.html' title='Why the Moss crawler might not working?'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-6109850841082217954</id><published>2010-04-02T09:30:00.001+02:00</published><updated>2010-04-02T09:30:29.396+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Development environment'/><category scheme='http://www.blogger.com/atom/ns#' term='Developer Walkthroughs'/><title type='text'>How to programmatically change the page template in Moss 2007</title><content type='html'>&lt;p&gt;Hello to everyone,&lt;/p&gt;  &lt;p&gt;in our team we are using the WCM features for Moss 2007 for some customers. It’s a common practice to backup the production environments up to a certain degree and restore them into our development environments. Until now, this approach worked well until we noticed an interesting exception when we tried to change the page properties of a publishing page:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;8e2s&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Unknown SPRequest error occurred. More information: 0x80070057 03/24/2010 08:09:26.88&amp;#160;&amp;#160;&amp;#160;&amp;#160; w3wp.exe (0x3AA8)&amp;#160; 0x27AC CMS&amp;#160; Publishing&amp;#160; 6wyd&amp;#160;&amp;#160;&amp;#160; Medium&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GetFileFromUrl: ArgumentException when attempting get file Url &lt;/em&gt;&lt;a href="http://productionServerUrl/_catalogs/masterpage/pageTemplateUrl.aspx"&gt;&lt;em&gt;http://productionServerUrl/_catalogs/masterpage/pageTemplateUrl.aspx&lt;/em&gt;&lt;/a&gt;&lt;em&gt; Value does not fall within the expected range.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Moss 2007 is not able to open the resource located on that URL. This is clear, we are working on our development environment and Moss tries to access a resource from the productive environment. How should it be possible to get a resource that is not reachable? :) The absolute path stored in the page layouts property ensures that we get one of these beautiful yellow pages that probably every developers encountered once in a SharePoint life.&lt;/p&gt;  &lt;p&gt;My basic idea was to solve this issue by changing the page layout reference that is defined in our site collection. Instead of using the absolute path it would be better to store as page layout the relative path. In this way we ensure that the reference also works in our development environment.&lt;/p&gt;  &lt;p&gt;My first approach was to try to modify this property directly in the publishing object model of Moss 2007. So I simply tried to reassign the page layout on the development environment. Unfortunately, without success. When you try to access the PageLayout property of the publishing page, you will get exactly the exception you saw before.&lt;/p&gt;  &lt;p&gt;Therefore, I changed the approach and went to the more general object model. I used the SPItem class and the Field properties of this class to modify the page layouts settings. The layout settings are stored into a property called “PublishingPageLayout” in your list item. The information is stored in comma-delimited format:&lt;/p&gt;  &lt;p&gt;- Address of the Resource, Title of the Resource&lt;/p&gt;  &lt;p&gt;The code snipped below uses a publishing page (the variable page):&lt;/p&gt;  &lt;p&gt;1.&amp;#160; String[] pageLayouts = page.ListItem.Properties&amp;#160; [&amp;quot;PublishingPageLayout&amp;quot;].ToString().Split(','); &lt;/p&gt;  &lt;p&gt;2. if (Uri.IsWellFormedUriString(pageLayouts[0], UriKind.Absolute))   &lt;br /&gt;3. {    &lt;br /&gt;4.&amp;#160;&amp;#160;&amp;#160; String newPageLayout = Regex.Replace(page.ListItem.Properties[&amp;quot;PublishingPageLayout&amp;quot;].ToString(), @&amp;quot;^([a-zA-Z]+:\/\/)?([^\/]*)&amp;quot;, String.Empty);&lt;/p&gt;  &lt;p&gt;5.&amp;#160;&amp;#160;&amp;#160; page.CheckOut();&amp;#160; &lt;br /&gt;6.&amp;#160;&amp;#160;&amp;#160; page.ListItem.Properties[&amp;quot;PublishingPageLayout&amp;quot;] = newPageLayout; &lt;/p&gt;  &lt;p&gt;7.&amp;#160;&amp;#160;&amp;#160; page.ListItem.Update();    &lt;br /&gt;8.&amp;#160;&amp;#160;&amp;#160; page.CheckIn(&amp;quot;Publishing PageLayout correction&amp;quot;); &lt;/p&gt;  &lt;p&gt;9.&amp;#160;&amp;#160;&amp;#160; if (page.ListItem.ParentList.EnableModeration)    &lt;br /&gt;10.&amp;#160; {     &lt;br /&gt;11.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; page.ListItem.File.Approve(&amp;quot;Publishing PageLayout correction&amp;quot;);     &lt;br /&gt;12.&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;13. } &lt;/p&gt;  &lt;p&gt;At line 1-2 we check if we really have an absolute page layout. If this is true, remove with the regular expression the domain name. In this case we are getting the relative path to the resource (please read the warning afterwards). Then the code checks-out the page and assigns the new value to the &amp;quot;PublishingPageLayout” property (line 5 and 6). After an update and a check-in, we get in business.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Warning: &lt;/strong&gt;this piece of code was only tested with a site collection residing directly in the host. For solutions like &lt;/em&gt;&lt;a href="http://host/siteCollectionName"&gt;&lt;em&gt;http://host/siteCollectionName&lt;/em&gt;&lt;/a&gt;&lt;em&gt; this solution has to be adapted.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;After running this code it was possible for me to change the wrong page layouts address with a relative one. After this change, the development environment worked as expected and the exception above vanished.&lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-6109850841082217954?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/6109850841082217954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/04/how-to-programmatically-change-page.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/6109850841082217954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/6109850841082217954'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/04/how-to-programmatically-change-page.html' title='How to programmatically change the page template in Moss 2007'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-6676621009478864496</id><published>2010-04-01T21:07:00.001+02:00</published><updated>2010-04-01T21:10:54.187+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Developer Walkthroughs'/><title type='text'>MOSS 2007: access a choice field via object model or filter it using CAML queries</title><content type='html'>&lt;p&gt;Hi,&lt;/p&gt;  &lt;p&gt;sometimes you are coming across to some personalization where you need to directly access, modify or filter some kind of SharePoint lists. Today, I’m going to speak in which way you can access a choice field of a SharePoint list. The first example shows how to access the different attributes of a choice field via code. The second example shows how you might filter the list items depending of their stored choice field values.&lt;/p&gt;  &lt;p&gt;First of all, let’s say for the shake of simplicity that we have a personalized list of contacts with a custom field called “ContactType”. This field is a choice field containing three different options: “Friends”, “Business”, and “Other”. Finally, imagine we created some test data in that list.&lt;/p&gt;  &lt;h2&gt;How do I access the different choices of a choice group?&lt;/h2&gt;  &lt;p&gt;Now, we want to know which choices are available in the choice field. We can do it programmatically by referencing the field and casting it into a SharePoint object model class. This class encapsulates the attributes of the choice field and simplifies the access on them. The next example shows how we retrieve the choice field “ContactType” and how we are able to loop the different choices a user might have in the list. The code snipped is shown below:&lt;/p&gt;  &lt;p&gt;1.&amp;#160; String webUrl = “putYourUrlHere”; &lt;/p&gt;  &lt;p&gt;2.&amp;#160; String listName = “putYourListNameHere”;&lt;/p&gt;  &lt;p&gt;4. using (SPSite site = new SPSite(webUrl)) {&lt;/p&gt;  &lt;p&gt;5.&amp;#160;&amp;#160; using (SPWeb web = site.OpenWeb()) {&lt;/p&gt;  &lt;p&gt;6.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SPList list = web.Lists[listName];&lt;/p&gt;  &lt;p&gt;7.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SPFieldChoice field = (SPFieldChoice)list.Fields[“ContactType”];&lt;/p&gt;  &lt;p&gt;8.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach (String item in field.Choices) {&lt;/p&gt;  &lt;p&gt;9.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // do whatever you need to do here&lt;/p&gt;  &lt;p&gt;10.&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p&gt;11.&amp;#160; }&lt;/p&gt;  &lt;p&gt;12.}&lt;/p&gt;  &lt;p&gt;The code is straightforward. We are only accessing the SPWeb and SPList that we want to retrieve. Afterwards, we access the field of the list called “ContactType” and cast it into a SPFieldChoice. From now on, we are able to process the field without any issues and simply by calling the instantiated object.&lt;/p&gt;  &lt;h2&gt;How do I filter values directly from the list?&lt;/h2&gt;  &lt;p&gt;Image we want to retrieve from our list the contacts of a certain contact type. Let’s say we want to retrieve all friends stored in the list. That means that we want to get all list items with the “ContactType” = “Friend”. Naturally, you can get all list items and loop over all. However, this certainly does not speed up your code :). Because of that, we are going to use a CAML query to retrieve only the desired records from the database. I would like to recommend you using CAML Builder of U2U. This tool simplifies your life building CAML queries dramatically.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Hint: &lt;/strong&gt;when you are creating a query with the U2U CAML Builder, it generates for you the CAML syntax encapsulated into a query tag. If you want to use these queries in your code, remove the query tags from the query. if you don’t do it, you might encounter an exception. You can see that I don’t use the enclosing query tags in my example below&lt;/em&gt; .&lt;/p&gt;  &lt;p&gt;The next code snipped does nothing special. We are only retrieving the list and web. Afterwards, we execute the query in this list using a SPQuery instance. This instance needs the CAML query that should be executed.&lt;/p&gt;  &lt;p&gt;1.&amp;#160; String webUrl = “putYourUrlHere”; &lt;/p&gt;  &lt;p&gt;2.&amp;#160; String listName = “putYourListNameHere”;&lt;/p&gt;  &lt;p&gt;3.&amp;#160; String filteringValue = “Friend”;&lt;/p&gt;  &lt;p&gt;4.&amp;#160; SPQuery filterQuery = new SPQuery();&lt;/p&gt;  &lt;p&gt;5.&amp;#160; // generate the query and put the filtering value&lt;/p&gt;  &lt;p&gt;6.&amp;#160; // please note that the “FieldRef” in my case is ‘ContactType’. &lt;/p&gt;  &lt;p&gt;7.&amp;#160; // you have to ensure that you are using the right field reference. &lt;/p&gt;  &lt;p&gt;8.&amp;#160; query.Query = @&amp;quot;&amp;lt;Where&amp;gt;&amp;lt;Contains&amp;gt;&amp;lt;FieldRef&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 9.&amp;#160; Name='ContactType' /&amp;gt;&amp;lt;Value&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10. Type='Choice'&amp;gt;Friend&amp;lt;/Value&amp;gt;&amp;lt;/Contains&amp;gt;&amp;lt;/Where&amp;gt;&amp;quot;;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;11. // open the site and get the corresponding web instance&lt;/p&gt;  &lt;p&gt;12. using (SPSite site = new SPSite(webUrl)) {&lt;/p&gt;  &lt;p&gt;13.&amp;#160;&amp;#160; using (SPWeb web = site.OpenWeb()) {&lt;/p&gt;  &lt;p&gt;14.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SPList list = web.Lists[listName];&lt;/p&gt;  &lt;p&gt;15.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SPListItemCollection result= list.Get(query);&lt;/p&gt;  &lt;p&gt;16.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // do whatever you need to do with your filtered results &lt;/p&gt;  &lt;p&gt;17.&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p&gt;18. }&lt;/p&gt;  &lt;p&gt;The most important lines of code are between 8 and 10. You see I’m using the CAML query and filter all the fields containing ContactType (=&amp;gt; fieldRef=’ContactType’) with the values of type ‘Choice’ having the value “Friend”.&lt;/p&gt;  &lt;p&gt;Naturally, I left for simplicity all exception handling. &lt;/p&gt;  &lt;p&gt;Hope this helps&lt;/p&gt;  &lt;p&gt;Patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-6676621009478864496?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/6676621009478864496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/04/moss-2007-access-choice-group.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/6676621009478864496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/6676621009478864496'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/04/moss-2007-access-choice-group.html' title='MOSS 2007: access a choice field via object model or filter it using CAML queries'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-5765307506475412705</id><published>2010-03-20T07:30:00.001+01:00</published><updated>2010-03-20T07:30:33.206+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>The first Italian SharePoint community is online!</title><content type='html'>&lt;p&gt;&lt;a href="http://blogs.devleap.com/igor/archive/2010/03/19/italian-sharepoint-community.aspx?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+devleap%2FZKHx+%28Igor+Macori%29" target="_blank"&gt;Igor&lt;/a&gt; announced the launch of the first &lt;a href="http://www.sharepointcommunity.it/news/default.aspx" target="_blank"&gt;SharePoint community&lt;/a&gt; in Italy. These are great news for are SharePointer in my country. I wish them good luck for this new project!&lt;/p&gt;  &lt;p&gt;patrick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5316505371619816173-5765307506475412705?l=patricklamber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://patricklamber.blogspot.com/feeds/5765307506475412705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://patricklamber.blogspot.com/2010/03/first-italian-sharepoint-community-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5765307506475412705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5316505371619816173/posts/default/5765307506475412705'/><link rel='alternate' type='text/html' href='http://patricklamber.blogspot.com/2010/03/first-italian-sharepoint-community-is.html' title='The first Italian SharePoint community is online!'/><author><name>Patrick Lamber ...</name><uri>http://www.blogger.com/profile/15634334165482535248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://3.bp.blogspot.com/-WEG_jT5dcTM/TXoCMdL1j3I/AAAAAAAAAXQ/56lX6DPD3cs/s220/plamber.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5316505371619816173.post-9097725919400897465</id><published>2010-03-20T07:28:00.001+01:00</published><updated>2010-03-20T07:28:18.000+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Forms authentication'/><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>SPOC 2010 – Day 3</title><content type='html'>&lt;p&gt;Hi all,&lt;/p&gt;  &lt;p&gt;the last day of the SharePoint and Office conference was the most intense day of al
