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

<channel>
	<title>My SharePoint of View &#187; Solution</title>
	<atom:link href="http://mysharepointofview.com/category/solution/feed/" rel="self" type="application/rss+xml" />
	<link>http://mysharepointofview.com</link>
	<description>Thoughts, reflections and solutions from the field in SharePoint land</description>
	<lastBuildDate>Tue, 10 Aug 2010 18:23:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hide the quick launch navigation &#8211; the easy way</title>
		<link>http://mysharepointofview.com/2010/01/hide-the-quick-launch-navigation-the-easy-way/</link>
		<comments>http://mysharepointofview.com/2010/01/hide-the-quick-launch-navigation-the-easy-way/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 12:18:50 +0000</pubDate>
		<dc:creator>Mattias Karlsson</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Solution]]></category>
		<category><![CDATA[CEWP]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[MOSS]]></category>
		<category><![CDATA[Quick Launch]]></category>
		<category><![CDATA[Stylesheet]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://mysharepointofview.com/?p=707</guid>
		<description><![CDATA[Sometimes you have SharePoint lists or sites where you want to hide the Left hand navigation bar commonly called the Quick Launch. For instance it&#8217;s common that people want their News or Announcement lists that the visitor only have read access to, to only show all the news items and not the Quick Launch. Usually, if you have [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes you have SharePoint lists or sites where you want to hide the Left hand navigation bar commonly called the Quick Launch. For instance it&#8217;s common that people want their News or Announcement lists that the visitor only have read access to, to only show all the news items and not the Quick Launch. Usually, if you have set the permissions correctly this is not a problem from an security point of view because of the Security trimming SharePoint have but it might look better.</p>
<p>There is a verry easy way to hide the Quick Launch if you only want to do this on or two pages.</p>
<p>This is how you do:</p>
<p>1. Go to the site or list where you want to hide the Quick Launch.</p>
<p>2. Go to <em>Site Settings</em> and select<em> Edit Page</em></p>
<p>3. Add a <em>Content Editor Web Part</em> to any of your <em>Web Part Zones</em> (This web part will be hidden so it doesn&#8217;t matter where you put it).</p>
<p><a href="http://mysharepointofview.com/wp-content/uploads/2010/01/AddWebPart.jpg"><img class="alignnone size-medium wp-image-710" title="AddWebPart" src="http://mysharepointofview.com/wp-content/uploads/2010/01/AddWebPart-300x139.jpg" alt="AddWebPart" width="300" height="139" /></a></p>
<p>4. Make sure that you select the <em>Hidden</em> attribute for the <em>Web Part</em> and the click on <em>Source Editor&#8230;</em></p>
<p><a href="http://mysharepointofview.com/wp-content/uploads/2010/01/EditContentEditorWebPart.jpg"><img class="alignnone size-medium wp-image-711" title="EditContentEditorWebPart" src="http://mysharepointofview.com/wp-content/uploads/2010/01/EditContentEditorWebPart-187x300.jpg" alt="EditContentEditorWebPart" width="187" height="300" /></a></p>
<p>5. A little bit depending on if it&#8217;s on a site, what kind of list, theme and if you have any custom styles on your site the below code could change but it will work in most cases and I will describe how you find make it work in case it doesn&#8217;t.<br />
Copy the below code and past it in the <em>Source editor</em></p>
<p>&lt;style&gt;</p>
<p>.ms-pagetitleareaframe<br />
{<br />
display: none;<br />
}<br />
.ms-navframe<br />
{<br />
display: none;<br />
}<br />
.ms-titleareaframe<br />
{<br />
display: none;<br />
}<br />
&lt;/style&gt;</p>
<p><a href="http://mysharepointofview.com/wp-content/uploads/2010/01/HideQuickLaunchCode.jpg"><img class="alignnone size-medium wp-image-712" title="HideQuickLaunchCode" src="http://mysharepointofview.com/wp-content/uploads/2010/01/HideQuickLaunchCode-300x172.jpg" alt="HideQuickLaunchCode" width="300" height="172" /></a></p>
<p>6. Click <em>Save </em>and then <em>Ok</em> in the Web Part Settings frame and finally exit the <em>Editing Mode</em></p>
<p>7. You should now have a page that does not show the <em>Quick Launch </em>and we have done this by overriding the style sheet. If parts of the navigation is still showing you need to override more attributes and to know which ones I recommend you to use the IE Developer Toolbar.</p>
<p>This IE plugin from Microsoft makes it easy to click on an object on a web site and show what attributes or classes it is using. If you are using IE 6 or 7 you can download it from here: <a href="http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;displaylang=en</a></p>
<p>And if you are running IE 8 which is default in Windows 7 you have it already built in, how to use it can be found here:<br />
<a href="http://msdn.microsoft.com/sv-se/library/dd565628(en-us,VS.85).aspx">http://msdn.microsoft.com/sv-se/library/dd565628(en-us,VS.85).aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mysharepointofview.com/2010/01/hide-the-quick-launch-navigation-the-easy-way/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Web Application builder</title>
		<link>http://mysharepointofview.com/2009/09/web-application-builder/</link>
		<comments>http://mysharepointofview.com/2009/09/web-application-builder/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 19:00:44 +0000</pubDate>
		<dc:creator>Mattias Karlsson</dc:creator>
				<category><![CDATA[Script]]></category>
		<category><![CDATA[Solution]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Site Collection]]></category>
		<category><![CDATA[User group]]></category>
		<category><![CDATA[Web Application]]></category>

		<guid isPermaLink="false">http://mysharepointofview.com/?p=444</guid>
		<description><![CDATA[
Visualize yourself the scenario were you are about to set up a SharePoint environment containing a lot of Web Applications and that some of them needs to be extended both two and three times. Add to that, that you need to set it up in a Test, QA and a production environment and in the same [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mysharepointofview.com/wp-content/uploads/2009/08/ConfigGenerator.jpg"></a></p>
<p>Visualize yourself the scenario were you are about to set up a SharePoint environment containing a lot of Web Applications and that some of them needs to be extended both two and three times. Add to that, that you need to set it up in a Test, QA and a production environment and in the same way have a good recovery plan for setting them up again in case of a disaster.</p>
<p>In two earlier posts I have written about how to <a href="http://mysharepointofview.com/2009/06/create-new-web-application-with-powershell/">create a Web Application</a> and how to <a href="http://mysharepointofview.com/2009/07/extend-a-web-application-with-powershell/">extend a Web Application</a>using PowerShell. Now it’s time to combine the two into one script where we use a input file as source. In this case I decided to use Excel, so it&#8217;s easy to fill in all info on your Web Applications in an Excel file. By using a macro you can then by pushing a button in Excel generate a xml-config and that&#8217;s the one to use as input for your PowerShell script.</p>
<p>First, let me introduce the Config Generator. This is an excel file where you fill in the info on the Web Applications that you want to set up. Below is a list of all the settings you fill in, in the Excel sheet. One Web Application or extend of Web Application per row.</p>
<table border="1" width="100%">
<tbody>
<tr>
<td><strong>Setting</strong></td>
<td><strong>Value</strong></td>
<td><strong>Example</strong></td>
</tr>
<tr>
<td>Type</td>
<td>New/Extend <em>(drop down)</em></td>
<td> New</td>
</tr>
<tr>
<td>Extend</td>
<td> url of site to extend if applicable</td>
<td> http://portalsite.com</td>
</tr>
<tr>
<td>WebAppDisplayName</td>
<td> Used e.g. in IIS</td>
<td> The Portal site</td>
</tr>
<tr>
<td>WebAppHostHeader</td>
<td> the url of the site</td>
<td> portalsite.com</td>
</tr>
<tr>
<td>LoadBalancerURL</td>
<td> The load balancer url</td>
<td> http://portalsite.com</td>
</tr>
<tr>
<td>WebAppPort</td>
<td> Port to use</td>
<td> 80</td>
</tr>
<tr>
<td>SSL</td>
<td> true/false <em>(drop down)</em></td>
<td> false</td>
</tr>
<tr>
<td>AllowAnynomousAccess</td>
<td> true/false <em>(drop down)</em></td>
<td> false</td>
</tr>
<tr>
<td>Zone</td>
<td> Default/Internet/Extranet/Intranet/Custom <em>(drop down)</em></td>
<td> Default</td>
</tr>
<tr>
<td>WebAppContentDBName</td>
<td> Name of the content database</td>
<td> WebApp_PortalSite_01</td>
</tr>
<tr>
<td>WebAppPoolName</td>
<td> IIS Application pool to use.</td>
<td> Portalsite</td>
</tr>
<tr>
<td>WebAppPoolUsername</td>
<td> Username to use as identity of Application Pool, if applicable</td>
<td> Username</td>
</tr>
<tr>
<td>WebAppPoolPassword</td>
<td> Password for the Application Pool identity account</td>
<td> Password</td>
</tr>
<tr>
<td>DatabaseServer</td>
<td> Database server to use</td>
<td> SQLsrv01</td>
</tr>
<tr>
<td>ISSRootDirectory</td>
<td> File path to your IIS root directory</td>
<td> c:\inetpub\wwwroot\&#8230;</td>
</tr>
</tbody>
</table>
<p>As you can see you have a couple of fields related to the IIS Application Pool. What the script does is that, if you have filled in the WebAppUsername the Application Pool will be created with the new credentials. If you leave the WebAppUsername blank it assumes that the Application Pool exist and connects the site to that Application Pool.</p>
<p>You will also find columns to insert Site Collection information. This info will be put into the config file as well and used for creating the root Site Collection of your new Web Application. The following settings are available:</p>
<table border="1" width="100%">
<tbody>
<tr>
<td><strong>Setting</strong></td>
<td><strong>Value</strong></td>
<td><strong>Example</strong></td>
</tr>
<tr>
<td>Title</td>
<td>Title of the site</td>
<td>Start page</td>
</tr>
<tr>
<td>Description</td>
<td>Description of the site</td>
<td>This is the start page for the Sales organisation</td>
</tr>
<tr>
<td>Template</td>
<td>The template name to use. To view existing templates<br />
an their name check this <a href="http://www.powershell.nu/2009/01/08/create-a-new-site-in-sharepoint/" target="_blank">article</a></td>
<td>STS#1</td>
</tr>
<tr>
<td>Admin</td>
<td>AD-account of who should be owner of the site</td>
<td> AD\username</td>
</tr>
<tr>
<td>AdminName</td>
<td> The display name of the admin</td>
<td> Mattias Karlsson</td>
</tr>
<tr>
<td>AdminEmail</td>
<td>The e-mail address of the admin</td>
<td>Mattias.Karlsson@nima.com</td>
</tr>
</tbody>
</table>
<p>When you have filled in the info on all your Web Applications just push the Generate Config File button and Excel will generate a config.xml file in the same folder as the Excel file is located in.</p>
<p><a href="http://mysharepointofview.com/wp-content/uploads/2009/08/ConfigGenerator.jpg"><img title="ConfigGenerator" src="http://mysharepointofview.com/wp-content/uploads/2009/08/ConfigGenerator-300x180.jpg" alt="ConfigGenerator" width="450" /></a></p>
<p>What you then need to do is to copy the config.xml to the server along with the CreateWebApps.ps1 file.</p>
<p>Open up the PowerShell command shell, include the file CreateWebApps.ps1 file by typing:</p>
<p><strong>. ./CreateWebApps.ps1</strong></p>
<p>Then you call the function by typing:</p>
<p><em><strong>SP-WebAppBuilder -ConfigPath [path]\config.xml</strong></em></p>
<p>This will now generate all your Web Applications as you have specified in the Excel-file so go grab yourself some coffee and let the script handle the rest.</p>
<p>The above example is an teaser of what will be covered in the coming book <a href="http://www.sharepointandpowershell.com/" target="_blank">SharePoint and PowerShell &#8211; In real life</a> that I together with <a href="http://powershell.nu" target="_blank">Niklas Goude</a> is writing. The code can be found in the <a href="http://mysharepointofview.com/downloads">download </a>section.</p>
]]></content:encoded>
			<wfw:commentRss>http://mysharepointofview.com/2009/09/web-application-builder/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Search stopped working after Windows update</title>
		<link>http://mysharepointofview.com/2009/04/search-stopped-working-after-windows-update/</link>
		<comments>http://mysharepointofview.com/2009/04/search-stopped-working-after-windows-update/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 10:09:00 +0000</pubDate>
		<dc:creator>Mattias Karlsson</dc:creator>
				<category><![CDATA[Solution]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[MOSS]]></category>
		<category><![CDATA[Search]]></category>

		<guid isPermaLink="false">http://mysharepointofview.com/2009/04/search-stoped-working-after-windows-update/</guid>
		<description><![CDATA[So I got called up by a customer about that their search on a standalone machine has suddenly stopped working. No results appeared in the results page. So I asked them to check Central administration and the Shared Service Provider Search log and found the following error for what seemed to be one for each [...]]]></description>
			<content:encoded><![CDATA[<p>So I got called up by a customer about that their search on a standalone machine has suddenly stopped working. No results appeared in the results page. So I asked them to check Central administration and the Shared Service Provider Search log and found the following error for what seemed to be one for each file that already existed in the index.</p>
<p> </p>
<p><em><span style="color: #000000;">Access is denied. Check that the Default Content Access Account has access to this content, or add a crawl rule to crawl this content. (The item was deleted because it was either not found or the crawler was denied access to it.)</span></em></p>
<p><em><span style="color: #000000;"><br />
</span></em>My first thought was of course that something had changed with the Service Account used for crawling, something that got more obvious since they had almost the same error message in the Event View:</p>
<div></div>
<p><span style="color: #000000;"></p>
<div><em>Access is denied. Check that the Default Content Access Account has access to this content, or add a crawl rule to crawl this content.</em></div>
<p> </p>
<p></span><br />
But when we looked at the Service Account everything seemed ok, the account had not been disabled or expired. Then I suddenly got another call from a customer that had the same problem and she also had another very strange problem since she could not access the SSP settings page. Central Administration worked but she got access denied on the SSP.</p>
<p>Two different environments with almost the same problem. This had to be with some updates on the server, right I was. Both machines had automatic Windows Updates and had therefore got an update that caused problems with use of fully qualified domain name (FQDN) when browsing a local site.</p>
<p>There is a solution for this and you find the Microsoft KB here: <a href="http://support.microsoft.com/default.aspx/kb/896861">http://support.microsoft.com/default.aspx/kb/896861</a></p>
<p>So what have we learned? Well, first of all, never use automatic updates in production environment and always use a test, QA, staging or pre-production (whatever name you choose) to test all new changes. Things can fail even if it&#8217;s not a specific SharePoint update.</p>
]]></content:encoded>
			<wfw:commentRss>http://mysharepointofview.com/2009/04/search-stopped-working-after-windows-update/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>5 stages of search</title>
		<link>http://mysharepointofview.com/2009/04/5-stages-of-search/</link>
		<comments>http://mysharepointofview.com/2009/04/5-stages-of-search/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 20:58:09 +0000</pubDate>
		<dc:creator>Mattias Karlsson</dc:creator>
				<category><![CDATA[Fivelist]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[Fast]]></category>
		<category><![CDATA[MOSS]]></category>
		<category><![CDATA[Ontolica]]></category>
		<category><![CDATA[Wild card search]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://mysharepointofview.com/?p=266</guid>
		<description><![CDATA[Time flies doesn&#8217;t it? It&#8217;s time for a new Fivelist and since I have had a couple of discussions recently regarding different search solutions I thought it&#8217;s time to once again talk about SharePoint Search.
Search in WSS
I&#8217;m not sure that the standard search in WSS is actually allowed to be called search&#8230; It&#8217;s not very [...]]]></description>
			<content:encoded><![CDATA[<p>Time flies doesn&#8217;t it? It&#8217;s time for a new Fivelist and since I have had a couple of discussions recently regarding different search solutions I thought it&#8217;s time to once again talk about SharePoint Search.</p>
<p><strong>Search in WSS</strong><br />
I&#8217;m not sure that the standard search in WSS is actually allowed to be called search&#8230; It&#8217;s not very customizable but the good thing here is that Microsoft gives you the Search Server Express for free. This at least gives you quite a lot of extra things to do. For instance Federated search, iFilters, index file shares etc.</p>
<p><a href="http://www.microsoft.com/enterprisesearch/serverproducts/searchserverexpress/default.aspx" target="_blank">http://www.microsoft.com/enterprisesearch/serverproducts/searchserverexpress/default.aspx</a></p>
<p><strong>MOSS Search<br />
</strong>For those of you that installed Moss in its first version know that since the Infrastructure update released almost a year ago it has taken a few steps forward when it know contain all the functionality that is included in Microsoft Search Server. There is however a huge disadvantage (as in the WSS with or without Search Server Express), there is no wild card search. Something that everyone needs to be able to find, well, anything&#8230;<br />
But on the other hand, if you can solve that (as I will talk about below) you have quite a lot of options to tweak the search and since the SharePoint Search Results pages are built on publishing sites you have a lot of options to give the users a good search experience.</p>
<p>If your organization use My Sites then you have huge amount of advantages in sharing knowledge finding internal resources etc.</p>
<p><a href="http://www.microsoft.com/enterprisesearch/serverproducts/moss/default.aspx" target="_blank">http://www.microsoft.com/enterprisesearch/serverproducts/moss/default.aspx</a></p>
<p> </p>
<p><strong>Dot net mafia wild card search<br />
</strong>The Dot net mafia wild card search is a Codeplex project that has been around for a while and now starts to be quite competitive, especially if you have the luck of internal development resources. What this wild card search does is that it actually replaces the standard (well you have to do it yourself) results web part and then displays a wild card search results. It works both for document&#8217;s items and for people search.</p>
<p><a href="http://www.codeplex.com/WildcardSearch" target="_blank">http://www.codeplex.com/WildcardSearch</a></p>
<p><strong>Ontolica<br />
</strong>Ontolica has a couple of different solutions for SharePoint and they come with different licenses. The basic search they offer is a wild card search that allows you to use &#8220;*&#8221; in any search webpart you have, it works very well but it&#8217;s probably their Ontolica Saerch solution for Moss that is most impressive. This offers a whole new search site template and includes Metadata search, Drill down results and images search. Just such a small thing as to search for people by letters makes it so much easier to work in Moss. (And no, I did not get anything for this&#8230;)<strong></strong></p>
<p><a href="http://www.ontolica.com/" target="_blank">http://www.ontolica.com/</a></p>
<p><strong>Fast<br />
</strong>No one has probably missed that Microsoft know owns the Norwegian company Fast that delivers cutting edge search platforms and has been since quite a while be innovators within the field. Already today there are integration possibilities between Moss and Fast and this combination is one discussion for itself. I have not worked with this integration myself, just seen it so if anyone of you has and want to share your knowledge I will be more than happy to listen.<br />
Moving forward with &#8220;Office 14&#8243; we will see not one but a couple of steps forward for SharePoint and Search.</p>
<p><a href="http://www.fast.no" target="_blank">http://www.fast.no</a></p>
<p><strong> </strong></p>
<p>Looking forward and looking at the more complex search engines that are still very expensive and mostly targeted for enterprise usage we have only seen the top of the iceberg. After having seen a couple of the cutting edge platforms in action I can&#8217;t stop thinking of Metadata and how much we actually will need it. We don&#8217;t need metadata? You will say I&#8217;m crazy, but the new search engines are so cleaver in indexing the content of the actual files that it will not surprise me if the huge focus on tagging everything with metadata values might decrease. I mean, think about it.<br />
If you have a document with security classification &#8220;Internal&#8221; attached to it with a Site Column, and then in the actual file it says Security Classification &#8220;Secret&#8221;, what is most likely the accurate classification? And since the larger Search Engines or platforms can handle this, with language support and then sort it or classify it, don&#8217;t you agree just slightly with me?<br />
I however still think that Site Columns and categorization in for instance SharePoint will remain a very important cornerstone of document management. But the usage will probably be more focused on sorting and grouping your documents or list items to present the data in different ways. Not as much as support for the search engine.</p>
<p>Microsoft has a Enterprise Search site where you can compare their own solutions and find more information: <a href="http://www.microsoft.com/enterprisesearch/default.aspx" target="_blank">http://www.microsoft.com/enterprisesearch/default.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mysharepointofview.com/2009/04/5-stages-of-search/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Create site with approval workflow using PowerShell Part 1</title>
		<link>http://mysharepointofview.com/2009/03/create-site-with-approval-workflow-using-powershell-part-1/</link>
		<comments>http://mysharepointofview.com/2009/03/create-site-with-approval-workflow-using-powershell-part-1/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 21:54:02 +0000</pubDate>
		<dc:creator>Mattias Karlsson</dc:creator>
				<category><![CDATA[Solution]]></category>
		<category><![CDATA[MOSS]]></category>
		<category><![CDATA[PowerShell]]></category>

		<guid isPermaLink="false">http://mysharepointofview.com/?p=233</guid>
		<description><![CDATA[It&#8217;s a common scenario that a SharePoint environment or at least a part of it is dedicated to a more unstructured collaboration area with team sites, project sites, sites for virtual teams etc. This type of collaboration areas tend to grow in the amount of sites quite fast. From a SharePoint perspective this is not [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a common scenario that a SharePoint environment or at least a part of it is dedicated to a more unstructured collaboration area with team sites, project sites, sites for virtual teams etc. This type of collaboration areas tend to grow in the amount of sites quite fast. From a SharePoint perspective this is not a problem if you have set up your environment in a good way. But from an administration point of view this could take up quite a large amount of time if you don&#8217;t have a good process to handle the site creation and maintenance. Because, you might not want everyone to be able to create new sites whenever they want, at least not if you have a large environment. And it might also be so that the IT department has set up a service around team sites that the business is paying for, in that case the new sites needs to go through an request process.</p>
<p>What we will do in the following two posts is that we will create a workflow to automate this process so that the end users can request a site. When the site is approved the site will automatically be created.</p>
<p>In our case we will as in earlier post use the Site Directory in MOSS but you could easily change this to be any kind of list in either MOSS or WSS.</p>
<p>Below is a picture of the Site Directory. The only thing we have added is Type of Site, this will be used later to know what template to use in the site creation process. What we then do is that we allow users to create entries in the list and as default the Site Directory has the content approval turned on. If you don&#8217;t use the Site Directory you can turn on the Content Approval in List Settings and Versioning Settings.</p>
<p><img class="alignnone size-full wp-image-238" title="sitedirectory1" src="http://mysharepointofview.com/wp-content/uploads/2009/03/sitedirectory1.png" alt="sitedirectory1" width="500" height="347" /></p>
<p>When we have added all the fields we need in the Site Directory the end user can go to the form and fill in the information about the site they want to have.</p>
<p><img class="alignnone size-full wp-image-240" title="requestsite1" src="http://mysharepointofview.com/wp-content/uploads/2009/03/requestsite1.jpg" alt="requestsite1" width="500" height="549" /></p>
<p>And when the item is added, the Approval Status will be saying pending. Now it&#8217;s time for the administrator or the owner of the collaboration area to approve or decline the request. He or she also has the possibility to add or change some of the information if the request does not follow the policy in naming standards etc.</p>
<p><img class="alignnone size-full wp-image-241" title="sitedirectoryrequestsite" src="http://mysharepointofview.com/wp-content/uploads/2009/03/sitedirectoryrequestsite.png" alt="sitedirectoryrequestsite" width="500" height="398" /></p>
<p>What we also need to do is to have a PowerShell script that is set up as a timer job and that with your chosen frequency looks in the list and sees if there are any items that has an Approval Status = Approved and no Created Date. If it finds any entries matching the criteria it takes the information from the list and creates the site.</p>
<p>Curious about how the script is done? Niklas will not disappoint you, <a href="http://www.powershell.nu/2009/03/09/create-site-with-approval-workflow-using-powershell-part-2/" target="_blank">part 2</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mysharepointofview.com/2009/03/create-site-with-approval-workflow-using-powershell-part-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Export a list with all the Sites in a Site Collection part 1</title>
		<link>http://mysharepointofview.com/2009/02/export-a-list-with-all-the-sites-in-a-site-collection-part-1/</link>
		<comments>http://mysharepointofview.com/2009/02/export-a-list-with-all-the-sites-in-a-site-collection-part-1/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 20:59:10 +0000</pubDate>
		<dc:creator>Mattias Karlsson</dc:creator>
				<category><![CDATA[Solution]]></category>
		<category><![CDATA[MOSS]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://mysharepointofview.com/?p=195</guid>
		<description><![CDATA[One feature that many people ask for in Moss is a way to generate a list of all existing sites in a Site Collection. This especially useful when you want to make an inventory before a migration or just to get a good view of how many sites you actually have. What you have out [...]]]></description>
			<content:encoded><![CDATA[<p>One feature that many people ask for in Moss is a way to generate a list of all existing sites in a Site Collection. This especially useful when you want to make an inventory before a migration or just to get a good view of how many sites you actually have. What you have out of the box is the Site Hierarchy and the Site Content and Structure both found in the Site Settings at the root site.</p>
<p>The Site Hierarchy simply shows a list of all sites in the Site Collection with URL, Title and a link to their respectively Site Settings page.</p>
<p><img class="alignnone size-full wp-image-196" title="sitehierarchy" src="http://mysharepointofview.com/wp-content/uploads/2009/02/sitehierarchy.png" alt="sitehierarchy" width="500" height="326" /></p>
<p>From this page you could do a copy and paste in to Excel and then from there do whatever you want do with the information; count the sites, or use it as a base for your inventory.</p>
<p>The other option, the Site Content and Structure page gives you a little bit more information like, last modified and who has created the site but on the other hand, you will not be able to generate any report and there is no good way to copy the information and past to Excel.</p>
<p><img class="alignnone size-full wp-image-197" title="sitecontentandstructuer" src="http://mysharepointofview.com/wp-content/uploads/2009/02/sitecontentandstructuer.png" alt="sitecontentandstructuer" width="500" height="325" /></p>
<p>There are a couple of 3de party products out there that could help you with generating such a report and in addition you often get other various statistics such as size, created date, owner etc.</p>
<p>But there are other ways to do this that is more customizable and best of all, it&#8217;s free! It is possible with PowerShell to loop through all sites in a Site Collection and then easy export it to a CSV file to open up in Excel. In this script we will extract the following information:</p>
<p><em>Name<br />
Title<br />
Description<br />
Theme<br />
WebTemplate<br />
Author<br />
Created<br />
Modified<br />
Sites<br />
Users<br />
ParentWeb<br />
Url<br />
ServerRelativeUrl<br />
ID </em></p>
<p>But more information is available and it should also be mentioned that the loop is useful in many other scenarios were you want to perform the same task on all your sites. For instance you could use it in our previous post where we removed old users from a site (<a href="http://mysharepointofview.com/2009/02/16/remove-sharepoint-users-programmatically-part-1/">found here</a>). So, let&#8217;s take a look at the script and get an explanation of how it&#8217;s done and what it does. Read part 2 at <a href="http://www.powershell.nu/2009/02/23/export-a-list-with-all-the-sites-in-a-site-collection-part-2/">www.powershell.nu</a></p>
<p>If you want to download the script you find it on the <a href="http://mysharepointofview.com/downloads">downloads section</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mysharepointofview.com/2009/02/export-a-list-with-all-the-sites-in-a-site-collection-part-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Custom category in Site Directory</title>
		<link>http://mysharepointofview.com/2009/02/custom-category-in-the-site-directory/</link>
		<comments>http://mysharepointofview.com/2009/02/custom-category-in-the-site-directory/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 19:51:35 +0000</pubDate>
		<dc:creator>Mattias Karlsson</dc:creator>
				<category><![CDATA[Search]]></category>
		<category><![CDATA[Solution]]></category>
		<category><![CDATA[MOSS]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Site Directory]]></category>

		<guid isPermaLink="false">http://mysharepointofview.com/?p=167</guid>
		<description><![CDATA[The Site Directory in Moss is very useful when it comes to categorize and sort your sites. If you are using the Site Directory in your environment you might know that by adding Columns to the Sites list in the Site Directory site, columns will show up on the Create New Site page. This is [...]]]></description>
			<content:encoded><![CDATA[<p>The Site Directory in Moss is very useful when it comes to categorize and sort your sites. If you are using the Site Directory in your environment you might know that by adding Columns to the Sites list in the Site Directory site, columns will show up on the Create New Site page. This is a very good thing since it forces you to fill in the necessary metadata about the site. For instance in this example each site in the Site Collection will be holding all the information about a specific customer. By adding a column in the Sites list we can upon creation of sites add information about which service the customer is using and then later sort and group them by that same metadata.</p>
<p>The picture below shows how it looks with custom fields in the Create New Site page.</p>
<p> <a href="http://mysharepointofview.com/wp-content/uploads/2009/02/createsiteinsitedirectory.jpg"><img title="createsiteinsitedirectory" src="/wp-content/uploads/2009/02/createsiteinsitedirectory.jpg" alt="createsiteinsitedirectory" width="450" /></a></p>
<p>What also happens automatically is that all the choice fields will be listed as links were you by clicking on them get a search result with all the, in this case customers. But unfortunately this only happens if the field is a choice field added to the list, not even if you have a Site Column or Lookup field it shows up on your Site Directory page. You might also in some cases avoid having choice fields directly on the Sites list because in the name changes, it will not change on all sites automatically. In that case you need to have a lookup field, and as mentioned that does not automatically appear on the Site Directory page. So what if you want to have your other fields searchable in the same way? Well, it&#8217;s possible with some good old html.</p>
<p>Below you see that we only have the two choice fields to choose between.</p>
<p><a href="http://mysharepointofview.com/wp-content/uploads/2009/02/site-directory-category.jpg"><img title="site-directory-category" src="/wp-content/uploads/2009/02/site-directory-category.jpg" alt="site-directory-category" width="450" /></a></p>
<p>But before we create our custom category with links, let us analyze what happens when clicking on any of the existing categories. The page that the link takes us to is the categoryresults.aspx located in the Pages directory. So let take a look at the querystring:</p>
<p><span style="color:#888888;"><em><span style="color:#333333;">categoryresults.aspx?Column=<span style="color:#ff0000;">DivisionMulti</span>&amp;ColumnDisplayName=<span style="color:#ff0000;">Division</span>&amp;Value=<span style="color:#ff0000;">IT%20Services</span></span></em></span></p>
<p>The querystring field Column is the column that SharePoint will search in, and what you need to know is that it&#8217;s the columns internal name and not the display name that needs to be put in here. So if you have create a lookup field named Service you just change the &#8220;DivistionMulti&#8221; to Services. The next querystring value is the display name, and in this case that means that it&#8217;s simply that value that will be printed out on the page to show the end user what they search for. And in the last querystring value, named Value you type the value you want to search on.</p>
<p>The final result will look like this:</p>
<p><em><span style="color:#333333;">categoryresults.aspx?Column=<span style="color:#ff0000;">Service</span>&amp;ColumnDisplayName=<span style="color:#ff0000;">Service</span>&amp;Value=<span style="color:#ff0000;">SomeService</span></span></em></p>
<p>So, let&#8217;s go to the Site Directory page, select Edit page from the Site Actions drop down and add a new Content Editor Web Part. Now, it&#8217;s all up to you to populate and to style it your way. If you want (and why shouldn&#8217;t you?) to have the same style, take view source on the page and you will find the right style classes used.</p>
<p>Yes, this will make you have to manually update the categories if they change but, by experience they don&#8217;t change that often and this is a quite solution that don&#8217;t involve any custom web parts.</p>
<p>Below you see the final result and one screenshot on the page in edit mode.</p>
<p><a href="http://mysharepointofview.com/wp-content/uploads/2009/02/sitedirectorycustomcategoryeditpage.jpg"><img title="sitedirectorycustomcategoryeditpage" src="/wp-content/uploads/2009/02/sitedirectorycustomcategoryeditpage.jpg" alt="sitedirectorycustomcategoryeditpage" width="450" /></a></p>
<p><a href="http://mysharepointofview.com/wp-content/uploads/2009/02/sitedirectorycustomcategory.jpg"><img title="sitedirectorycustomcategory" src="/wp-content/uploads/2009/02/sitedirectorycustomcategory.jpg" alt="sitedirectorycustomcategory" width="450" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://mysharepointofview.com/2009/02/custom-category-in-the-site-directory/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Remove SharePoint users programmatically part 1</title>
		<link>http://mysharepointofview.com/2009/02/remove-sharepoint-users-programmatically-part-1/</link>
		<comments>http://mysharepointofview.com/2009/02/remove-sharepoint-users-programmatically-part-1/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 18:47:44 +0000</pubDate>
		<dc:creator>Mattias Karlsson</dc:creator>
				<category><![CDATA[Solution]]></category>
		<category><![CDATA[MOSS]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://mysharepointofview.com/?p=169</guid>
		<description><![CDATA[How often do you run in to the situation where you look at the Site Permissions page on a SharePoint site and find out that a couple of the users listed there is no longer at the company? I write situation and not problem because from a security point of view it&#8217;s not an issue [...]]]></description>
			<content:encoded><![CDATA[<p>How often do you run in to the situation where you look at the Site Permissions page on a SharePoint site and find out that a couple of the users listed there is no longer at the company? I write situation and not problem because from a security point of view it&#8217;s not an issue if you have properly removed or deleted the user in your AD. In addition, you will probably also save a couple of Help Desk calls from confused Site Owners that wonders why the former employee is not automatically removed and worries if he or she still has access to the site.</p>
<p>As you might know this is not done automatically and it&#8217;s not possible with any standard out-of-the-Box feature in either WSS or Moss but it can be accomplished with PowerShell. The script, which will be described in more detail by Niklas Goude, simply removes the user from the site. This can of course be modified so that i loops through the site collection, but hang on, we will soon update this script with more goodies.</p>
<p>If you are using Moss, you should keep the employees User Profile and My Site, because if you remove the User Profile you will get problems with references pointing to that user e.g. in the Created By field.</p>
<p>What you can do in the My Site to not confuse your users (or if you&#8217;re in a larger company where not everyone gets informed when someone quits) is to have a custom Property displaying the employment status.</p>
<p>Now it&#8217;s time to check out the script and move over to part 2 at <a href="http://www.powershell.nu/2009/02/16/remove-sharepoint-users-programmatically-part-2/">www.powershell.nu</a>. If you want to download it right away you find it on my <a href="http://mysharepointofview.com/downloads/">download section</a>.<br />
<span style="color:#808080;">This is the second cross-posting together with Niklas Goude, if you missed the first one about how to batch create sites you find the article <a href="http://mysharepointofview.com/2009/02/09/batch-creation-of-sharepoint-sites-part-1/" target="_blank">here</a>.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://mysharepointofview.com/2009/02/remove-sharepoint-users-programmatically-part-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Batch creation of SharePoint sites</title>
		<link>http://mysharepointofview.com/2009/02/batch-creation-of-sharepoint-sites-part-1/</link>
		<comments>http://mysharepointofview.com/2009/02/batch-creation-of-sharepoint-sites-part-1/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 20:12:29 +0000</pubDate>
		<dc:creator>Mattias Karlsson</dc:creator>
				<category><![CDATA[Solution]]></category>
		<category><![CDATA[MOSS]]></category>
		<category><![CDATA[PowerShell]]></category>

		<guid isPermaLink="false">http://mattiaskarlsson.wordpress.com/?p=107</guid>
		<description><![CDATA[This post will be divided into two parts. The first one is written by me and will describe the scenario, the problem to solve and how to prepare the setup in SharePoint. The other part will be written by Niklas Goude and describes the solution made with PowerShell from a more detailed and technical point [...]]]></description>
			<content:encoded><![CDATA[<p>This post will be divided into two parts. The first one is written by me and will describe the scenario, the problem to solve and how to prepare the setup in SharePoint. The other part will be written by Niklas Goude and describes the solution made with PowerShell from a more detailed and technical point of view. The full script is available for download from from mine or Niklas <a href="http://mysharepointofview.com/downloads/">Download section</a>.</p>
<p>Let&#8217;s start off with the scenario. You are about to move a large amount of customer data in to your MOSS environment. To structure it you have decided to create a site for each customer and store all relevant information about the customer in each site. The problem you face is that in SAP you currently having 700+ customers and if you should create all of them one by one, you will probably need to pass the task on to your grandchildren before it&#8217;s finished.</p>
<p>What you also want to do is to add all the new sites to your Site Directory and use your custom Site Template that you have created.</p>
<p>So how do we do this? The answer is spelled PowerShell! But before we hand over to Niklas and look at the code we will take a look at the prerequisites. </p>
<p><strong>Site Directory</strong><br />
First of all we need to make sure that we have a Site Directory. The Site directory is a separate site that ships with MOSS and helps you sort and categorize your sites within a Site Collection. If you have created your Site Collection based on one of the publishing site templates you will already have the Site Directory. If not, you can create the Site Directory from the Create Site and you find the Site Template under the Enterprise section on the create new site page. The sites created in the Site Directory is actually just a simple SharePoint List. So you can add your own columns with your own metadata values which makes it possible to sort the sites on your metadata. You can also, as in our case, add a Business Data Column pointing back to SAP so that you can present SAP information in a standardized way on each customer site.</p>
<p><img class="alignnone size-medium wp-image-133" title="customersitedirectory" src="http://mysharepointofview.com/wp-content/uploads/2009/01/customersitedirectory.png" alt="customersitedirectory" /><br />
<em>Click to see a larger picture</em></p>
<p><strong>Site Template</strong><br />
In our case we want to use our own Custom Site Template, this is of course not necessary from a technical point of view but when structuring this amount of data you need to put a lot of effort in making a good Site Template that includes everything you need. Make sure that the document library has the right content types, Versioning Settings etc. because that is not something you want to do afterwards.</p>
<p> <img class="alignnone size-medium wp-image-134" title="customertemplate" src="http://mysharepointofview.com/wp-content/uploads/2009/01/customertemplate.png?w=300" alt="customertemplate" /><br />
<em>Click to se a larger picture</em></p>
<p><strong>List of sites<br />
</strong>To be able to create the 700+ sites we of course need some kind of source data. In our case we were able to get this list from SAP. We got an Excel worksheet that we exported from Excel to a CSV file. What we also need to take care of is that not all of the customers have URL friendly names. This could cause problems in the batch script but instead of modifying the list we got, we decided to move this in to the script and let PowerShell take care of that.</p>
<p>So, let&#8217;s move over to <a href="http://www.powershell.nu/2009/02/09/batch-creation-of-sharepoint-sites-part-2/">www.powershell.nu</a>, stage is yours Niklas.</p>
]]></content:encoded>
			<wfw:commentRss>http://mysharepointofview.com/2009/02/batch-creation-of-sharepoint-sites-part-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Hide form fields in SharePoint</title>
		<link>http://mysharepointofview.com/2009/01/hide-form-fields-in-sharepoint/</link>
		<comments>http://mysharepointofview.com/2009/01/hide-form-fields-in-sharepoint/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 09:28:21 +0000</pubDate>
		<dc:creator>Mattias Karlsson</dc:creator>
				<category><![CDATA[Solution]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[MOSS]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://mattiaskarlsson.wordpress.com/?p=88</guid>
		<description><![CDATA[Sometimes when building SharePoint solutions or creating custom lists you want to hide some columns from the new or edit form. But the default new and edit form are automatically generating the form fields with all the columns that are created for the list.
This can be done in three different ways. The first way to [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes when building SharePoint solutions or creating custom lists you want to hide some columns from the new or edit form. But the default new and edit form are automatically generating the form fields with all the columns that are created for the list.</p>
<p>This can be done in three different ways. The first way to do this is to use SharePoint Designer and make a custom form field, there are a couple of good articles about this (but you should be aware of that this could in some cases cause problems with e.g. attachments not working properly without extra coding). The second way, and the easiest way, is with content type as I will guide you through today. This might on the other hand be the least flexible. The last way is by using PowerShell which I will get back to later in the article.</p>
<p>Start by going to your list that you want to modifye the form fields on, this could be any kind of list or library. In the list go to List Settings and then click on the Advanced List settings.</p>
<p>What you first need to do is to allow management of Content Types. Click on Yes and then Ok.</p>
<p><img class="alignnone size-medium wp-image-89" title="allowmanagementofcontenttypes" src="http://mysharepointofview.com/wp-content/uploads/2009/01/allowmanagementofcontenttypes.jpg?w=300" alt="allowmanagementofcontenttypes" /></p>
<p>You will then return back to the List Settings page which now looks a bit different. You will see a new section called Content Type. In my example I have used an Issue list so what I have is the Content Type Issue like shown in the picture below. </p>
<p> <img class="alignnone size-full wp-image-92" title="listsettingscontenttype" src="http://mysharepointofview.com/wp-content/uploads/2009/01/listsettingscontenttype.jpg" alt="listsettingscontenttype" /></p>
<p>What you see now is a list of all the Site Columns that is connected to the Content Type Issue. This could have been any kind of Content Type, default or custom made that has default or custom made Site Columns.</p>
<p><img class="alignnone size-medium wp-image-93" title="contenttypecolumns" src="http://mysharepointofview.com/wp-content/uploads/2009/01/contenttypecolumns.jpg?w=300" alt="contenttypecolumns" /></p>
<p>By clicking on any of the columns you are able to do some modifications to the column. In the Column Settings section you have three options. Required, Optional and Hidden. By Selecting Hidden the form field will not show up in forms. You should however note that this makes the form field hidden both in the NewForm.aspx and the EditForm.aspx forms.</p>
<p><img class="alignnone size-medium wp-image-94" title="changelistcontenttypecolumn" src="http://mysharepointofview.com/wp-content/uploads/2009/01/changelistcontenttypecolumn.jpg?w=300" alt="changelistcontenttypecolumn" /></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"><span style="font-size:small;"><span style="font-family:Calibri;">As I mentioned earlier there is a way to do this with PowerShell. By doing it programmatically you can part from the Content Type way just described decide which fields that should be visible individually between the NewForm.aspx and the EditForm.aspx. Since this solution is made by our PowerShell Guru I will simply link to his <a href="http://www.powershell.nu/?p=290">article</a> and hope that this post was useful for you.</span></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span lang="EN-US"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://mysharepointofview.com/2009/01/hide-form-fields-in-sharepoint/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
	</channel>
</rss>
