<?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>21apps &#187; Tips</title>
	<atom:link href="http://www.21apps.com/tag/tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.21apps.com</link>
	<description>Inspiring people to change the way they work</description>
	<lastBuildDate>Sun, 05 Feb 2012 17:23:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>SharePoint 2010 on Windows 7 Tip</title>
		<link>http://www.21apps.com/sharepoint/windows7-tip/</link>
		<comments>http://www.21apps.com/sharepoint/windows7-tip/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 20:22:35 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=1383</guid>
		<description><![CDATA[There are some great articles out about setting up SharePoint 2010 to work on Windows 7. Spence has a few great tips as always. MSDN has a good post which actually gets you up and running. One things that I &#8230; <a href="http://www.21apps.com/sharepoint/windows7-tip/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There are some great articles out about setting up SharePoint 2010 to work on Windows 7.</p>
<p>Spence has a few <a href="http://www.harbar.net/archive/2010/02/08/tips-and-tricks-for-running-sharepoint-server-2010-on-windows.aspx">great tips</a> as always.</p>
<p>MSDN has a <a href="http://msdn.microsoft.com/en-us/library/ee554869(office.14).aspx">good post</a> which actually gets you up and running.</p>
<p>One things that I found after getting SharePoint installed was a lack of access to some of the services &#8211; namely Services on Server and Add New on Web Applications.<br />
<span id="more-1383"></span><br />
After a bit of playing I found the solution.  The default installation adds the URL to the machine to the Trusted Sites in Internet Explorer. In order to get options to work correctly you need to add the URL for the local machine to the Local Intranet.</p>
<ul>
<li>Click tools Internet options</li>
<li>Select the security tab</li>
<li>Select Local Intranet and click sites</li>
<li>Add the current machine URL site to the list</li>
<li>Close the dialogs and the browser</li>
</ul>
<p><a href="http://www.21apps.com/wp-content/uploads/2010/08/image2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2010/08/image_thumb2.png" border="0" alt="image" width="538" height="484" /></a></p>
<p>Once added you will now see the options to manage services on server.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/windows7-tip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 &#8211; Have to Extend to have Multiple URLs</title>
		<link>http://www.21apps.com/sharepoint/sharepoint-2010-and-multiple-urls/</link>
		<comments>http://www.21apps.com/sharepoint/sharepoint-2010-and-multiple-urls/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 17:50:58 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=1141</guid>
		<description><![CDATA[I think this was a best practice in SharePoint 2007, but was one that you could get away with.  You have internal and external URLs that will be used to access the same web application.   Internally for historical or vanity &#8230; <a href="http://www.21apps.com/sharepoint/sharepoint-2010-and-multiple-urls/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I think this was a best practice in SharePoint 2007, but was one that you could get away with.  You have internal and external URLs that will be used to access the same web application.   Internally for historical or vanity reasons this is set as something like <a href="http://companyname">http://companyname</a>, externally you provide access, often via a proxy like ISA Server, via <a href="https://extranet.companyname.com">https://extranet.companyname.com</a> &#8211; and you do SSL termination at the ISA server as well.</p>
<p>You create the web application using the internal name,  get everything setup and then do the following to provide external access</p>
<ul>
<li>- Add an Alternative Access Mapping for <a href="https://extranet.companyname.com">https://extranet.companyname.com</a> in the Internet Zone</li>
<li>- Add another internal URL to the Internet Zone <a href="http://extranet.companyname.com">http://extranet.companyname.com</a></li>
<li>- In IIS add a new binding to the web application so it picks up <a href="http://extranet.companyname.com">http://extranet.companyname.com</a></li>
<li>- Publish the SharePoint site via ISA, with SSL access externally and no SSL internally</li>
</ul>
<p>This scenario would work well,  you would cut down on the web.configs to be maintained &#8211; assuming you didn&#8217;t use features to do this for you, and you would have a slightly lower overhead on the server &#8211; which was often needed in the 32bit setups.</p>
<h3>Problems in 2010  (and for some in 2007)</h3>
<p>With the introduction of the client API, and a few other services, Microsoft is now making use of the WCF for its web services.   These offer lots and lots of advantages,  but have one limitation (at least in 3.5) that makes the above scenario fail. </p>
<blockquote><p>You cannot have multiple bindings on any IIS website</p></blockquote>
<p>If you do set your environment up this way and you are using the client API you will hit problems.  Assuming you have coded you client requests with a fail delegate (like this code snippet)</p>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  1: <span style="color: #0000ff">var</span> lists;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  2: <span style="color: #0000ff">var</span> context;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  3:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  4: <span style="color: #0000ff">function</span> sample() {</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  5:     context = <span style="color: #0000ff">new</span> SP.ClientContext.get_current();</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  6:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  7:     <span style="color: #0000ff">this</span>.site = context.get_web();</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  8:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  9:     context.load(<span style="color: #0000ff">this</span>.site);</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 10:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 11:     lists = site.get_lists();</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 12:     context.load(lists);</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 13:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 14:     context.executeQueryAsync(onPass, onFail);</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 15: }</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 16:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 17: <span style="color: #0000ff">function</span> onFail(sender, args) {</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 18:     <span style="color: #0000ff">alert</span>("<span style="color: #8b0000">Fail:</span>" + args.get_message() + '\n' + args.get_stackTrace());</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 19: }</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 20:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 21: <span style="color: #0000ff">function</span> onPass(sender, args) {</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 22:     onPass(lists.getByTitle('List'));</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;"> 23: }</pre>
<p>when the async mehtod is called it will fail and the onFail method will show a 500 error.  One of the best things is the logging in 2010 has been improved so a quick look on the server and you should see something like the following in the event log:</p>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Log Name:      Application</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Source:        System.ServiceModel 3.0.0.0</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Date:          31/12/2009 16:22:06</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Event ID:      3</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Task Category: WebHost</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Level:         Error</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Keywords:      Classic</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">User:          domain\sp-admin</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Computer:      computername</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Description:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">WebHost failed to process a request.
 Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/2389992
 Exception: System.ServiceModel.ServiceActivationException: The service '/_vti_bin/client.svc'
cannot be activated due to an exception during compilation.
The exception message is: This collection already contains an address with scheme http.
There can be at most one address per scheme in this collection.</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Parameter name: item. ---&gt; System.ArgumentException:
This collection already contains an address with scheme http.
There can be at most one address per scheme in this collection.</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Parameter name: item</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.UriSchemeKeyedCollection.InsertItem(Int32 index, Uri item)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.Collections.Generic.SynchronizedCollection`1.Add(T item)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.UriSchemeKeyedCollection..ctor(Uri[] addresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(Type
serviceType, Uri[] baseAddresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(
String constructorString, Uri[] baseAddresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(
String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(
String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(
String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   --- End of inner exception stack trace ---</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(
String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath)
 Process Name: w3wp
 Process ID: 3924</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Event Xml:</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">&lt;Event xmlns="<span style="color: #8b0000">http://schemas.microsoft.com/win/2004/08/events/event</span>"&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  &lt;System&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Provider Name="<span style="color: #8b0000">System.ServiceModel 3.0.0.0</span>" /&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;EventID Qualifiers="<span style="color: #8b0000">49154</span>"&gt;3&lt;/EventID&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Level&gt;2&lt;/Level&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Task&gt;5&lt;/Task&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Keywords&gt;0x80000000000000&lt;/Keywords&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;TimeCreated SystemTime="<span style="color: #8b0000">2009-12-31T16:22:06.000000000Z</span>" /&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;EventRecordID&gt;99264&lt;/EventRecordID&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Channel&gt;Application&lt;/Channel&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Computer&gt;computername&lt;/Computer&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Security UserID="<span style="color: #8b0000">S-1-5-21-2646386180-1731120971-3670236442-1114</span>" /&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  &lt;/System&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  &lt;EventData&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Data&gt;System.ServiceModel.ServiceHostingEnvironment+HostingManager/2389992&lt;/Data&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Data&gt;System.ServiceModel.ServiceActivationException: The service '/_vti_bin/client.svc'
cannot be activated due to an exception during compilation.
The exception message is: This collection already contains an address with scheme http.
There can be at most one address per scheme in this collection.</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Parameter name: item. ---&amp;gt; System.ArgumentException:
This collection already contains an address with scheme http.
There can be at most one address per scheme in this collection.</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">Parameter name: item</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.UriSchemeKeyedCollection.InsertItem(Int32 index, Uri item)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.Collections.Generic.SynchronizedCollection`1.Add(T item)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.UriSchemeKeyedCollection..ctor(Uri[] addresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 97.91%; font-family: consolas,'Courier New',courier,monospace; height: 31px; font-size: 11px;">   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(Type serviceType,
Uri[] baseAddresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString,
Uri[] baseAddresses)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(
String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   --- End of inner exception stack trace ---</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(
String normalizedVirtualPath)</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">   at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(
String relativeVirtualPath)&lt;/Data&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Data&gt;w3wp&lt;/Data&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">    &lt;Data&gt;3924&lt;/Data&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">  &lt;/EventData&gt;</pre>
<pre style="background-color: #d8d8d8; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 11px;">&lt;/Event&gt;</pre>
<p> </p>
<p>The problem, although not obvious from the error message is related to the WCF framework not being able to work with multiple names on the same schema (where schema means HTTP).</p>
<h3>Solution</h3>
<p>The solution to this is to Extend the web application to another IIS web site.  It will make use of the same application pool but is likely to add a small overhear to the server.  The biggest challenge is to ensure that you get your deployments automated so that SharePoint can keep the web.config&#8217;s inline.   And with the introduction of the Sandboxed solution the other issues with artifacts deployed to the 80 (inetpub) folder will likely go away over time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/sharepoint-2010-and-multiple-urls/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Top Tool Tips</title>
		<link>http://www.21apps.com/uncategorized/top-tool-tips/</link>
		<comments>http://www.21apps.com/uncategorized/top-tool-tips/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 09:23:00 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Random Stuff]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://21apps.co.uk/?p=91</guid>
		<description><![CDATA[Do you write proposals?   do bug testing?   or write books? post blogs? or just need screen shots to help explain what you mean?  If Yes then you need the latest version of SnagIt by TechSmith.   In it&#8217;s version 9 release &#8230; <a href="http://www.21apps.com/uncategorized/top-tool-tips/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Do you write proposals?   do bug testing?   or write books? post blogs? or just need screen shots to help explain what you mean? </p>
<p>If Yes then you need the latest version of SnagIt by TechSmith.   In it&#8217;s version 9 release SnagIt has moved from being just a good screen capture applet to being a fantastic, indispensable application that every good developer, author, tester etc etc should have installed.</p>
<p>It&#8217;s only when you start to use the new features without noticing you realise what a great piece of software you are using.   Having installed the V9 release a few weeks ago  I initially liked the OneClick pop-up that made switching capture modes a breeze,  but what I have found most useful is how SnagIt now keeps all my captures for me &#8211; no more having to save/or losing that key image. </p>
<p><a title="SNAG_Program-0000" href="http://www.flickr.com/photos/10785452@N00/2637942479/"><img src="http://static.flickr.com/3282/2637942479_3ee75f6bb1.jpg" border="0" alt="SNAG_Program-0000" /></a></p>
<p>The Library view showing this weeks captures.  Whats really cool is any annotations are all stored and can be edited.  No more saving as a PNG and then having to fudge the text using Paint.</p>
<h2>Tags</h2>
<p>I only found this today, the ability to Tag captures using simple icons and allowing you to get find them quickly.</p>
<p><a title="SNAG_Program-0001" href="http://www.flickr.com/photos/10785452@N00/2638771280/"><img src="http://static.flickr.com/3261/2638771280_7aed789f14.jpg" border="0" alt="SNAG_Program-0001" /></a></p>
<h3>Whilst we&#8217;re on the subject of tools</h3>
<p>Writing this blog post it suddenly dawned on me how many tools (all by different creators) I was using to bring this post to you.</p>
<p><strong><a href="http://www.techsmith.com/screen-capture.asp" target="_blank">SnagIt</a> </strong></p>
<p>To capture the screen shots.   I have tweaked this slightly and  added another Program to the SnagIt Send to that allows me to send captures directly to Flickr Uploadr.</p>
<p><a title="SNAG_Program-0002" href="http://www.flickr.com/photos/10785452@N00/2637952753/"><img src="http://static.flickr.com/3148/2637952753_07818a6051.jpg" border="0" alt="SNAG_Program-0002" /></a></p>
<p><strong><a href="http://www.flickr.com/help/tools/" target="_blank">Flickr Uploadr</a></strong></p>
<p>Making uploading images to Flickr just that little bit easier.   Why upload to Flickr you may ask,  well I user Windows Live Writer to author my blog posts</p>
<p><a title="SNAG_Program-0006" href="http://www.flickr.com/photos/10785452@N00/2638801766/"><img src="http://static.flickr.com/3156/2638801766_cdc2e3d344.jpg" border="0" alt="SNAG_Program-0006" /></a></p>
<p><a href="http://windowslivewriter.spaces.live.com/" target="_blank">Windows Live Writer</a></p>
<p>This is one of the best bits of software anyone could install if they are serious about blogging.   The ability to link to multiple blogs, be able to recall existing blog posts for editing and correcting (yes it does happen). </p>
<p><a title="SNAG_Program-0003" href="http://www.flickr.com/photos/10785452@N00/2638788550/"><img src="http://static.flickr.com/3020/2638788550_a6264724fb.jpg" border="0" alt="SNAG_Program-0003" /></a></p>
<p>Here you can see me authoring this very blog post. </p>
<p>But wait wasn&#8217;t I telling you why I used Flickr?   Yes,  and if you look closely at the right hand menu you will see some nice Insert options, one of which is Insert Flickr Image.</p>
<p><strong><a href="http://gallery.live.com/liveItemDetail.aspx?li=9cc421ec-b22e-45b6-98c4-3fae3846705e&amp;pl=8&amp;bt=9" target="_blank">Flickr for Writer</a></strong></p>
<p>This neat plug in allows you to insert Flickr images directly from Flickr,  normally this is defaulted to my account but you can also insert others.</p>
<p><a title="SNAG_Program-0004" href="http://www.flickr.com/photos/10785452@N00/2638791508/"><img src="http://static.flickr.com/3271/2638791508_49a1093e31.jpg" border="0" alt="SNAG_Program-0004" /></a></p>
<p>There are many more tools that I use day to day,  some more aimed at development some at just getting things done.   Hopefully this Top Tool Tips post will help you become a better blogger <img src='http://www.21apps.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/uncategorized/top-tool-tips/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Create Custom Policy programmatically</title>
		<link>http://www.21apps.com/sharepoint/create-custom-policy-programmatically/</link>
		<comments>http://www.21apps.com/sharepoint/create-custom-policy-programmatically/#comments</comments>
		<pubDate>Sat, 31 May 2008 10:34:00 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://21apps.co.uk/?p=86</guid>
		<description><![CDATA[Answering a forum thread I had to do a bit of digging into how to create new Policies in code. This post from Ethan helped point me in the right direction.   The requirement was to programmatically give users Full Control &#8230; <a href="http://www.21apps.com/sharepoint/create-custom-policy-programmatically/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Answering a forum thread I had to do a bit of digging into how to create new Policies in code.</p>
<p>This <a href="http://www.sharepointblogs.com/ethan/archive/2007/09/11/inspecting-policies-for-a-web-application.aspx" target="_blank">post</a> from Ethan helped point me in the right direction.   The requirement was to programmatically give users Full Control of a web application, the code snippet below shows how to achieve this.</p>
<div style="font-size: 8pt; margin: 20px 0px 10px; overflow: auto; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4; border: gray 1px solid; padding: 4px;">SPWebApplication oWebApplication = SPWebApplication.Lookup(<span style="color: #0000ff;">new</span> Uri(<span style="color: #006080;">&#8220;http://webappurl&#8221;</span>)); SPPolicy policy = oWebApplication.Policies.Add(<span style="color: #006080;">&#8220;domain\\username&#8221;</span>, <span style="color: #006080;">&#8220;MyCustomPolicy&#8221;</span>);policy.PolicyRoleBindings.Add(oWebApplication.PolicyRoles.GetSpecialRole(SPPolicyRoleType.FullControl));oWebApplication.Update(); </div>
<p>You may have noticed that the policy only allows for one username,  this is the case even though the UI gives you the option to enter multiple, only the first is stored.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/create-custom-policy-programmatically/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Windows Server 2008 developing SharePoint &#8211; Can&#8217;t connect from Office clients</title>
		<link>http://www.21apps.com/sharepoint/windows-server-2008-developing-sharepoint-cant-connect-from-office-clients/</link>
		<comments>http://www.21apps.com/sharepoint/windows-server-2008-developing-sharepoint-cant-connect-from-office-clients/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 00:06:00 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://21apps.co.uk/?p=82</guid>
		<description><![CDATA[Now that Windows 2008 Server is out SharePoint developers (and I&#8217;m sure lots of others as well) will start to move their development machines onto the new platform.  For SharePoint  developers tend to work in Virtual Machines and develop on &#8230; <a href="http://www.21apps.com/sharepoint/windows-server-2008-developing-sharepoint-cant-connect-from-office-clients/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Now that Windows 2008 Server is out SharePoint developers (and I&#8217;m sure lots of others as well) will start to move their development machines onto the new platform.  For SharePoint  developers tend to work in Virtual Machines and develop on the Server OS directly as the XP/Vista development story is not that good right now. </p>
<p>I have such a configuration (Windows Server 2008, Microsoft Office SharePoint Server 2007, SQL 2005, Office Suite 2007, Visual Studio 2008) and have been working through some Excel Services development tasks when I discovered I had a problem with my setup.</p>
<p>In Excel I often need to Publish workbooks to the server to enable parameter configuration and the like,  however this was not possible running in the VM (on Windows Server 2008),  when trying to enter a network path I always got the <strong>&#8216;Path does not exist.  Check Path and try again&#8221; </strong>error.</p>
<p><a title="Path Not Found" href="http://www.flickr.com/photos/10785452@N00/2423511313/"><img src="http://static.flickr.com/3231/2423511313_4b02d3d0c4.jpg" border="0" alt="Path Not Found" /></a></p>
<p>I proved the problem was not IIS or SharePoint related as I was able to connect happily from the Host Vista installation and upload the files from Office.</p>
<p>Having crawled the web and tried out various enabling and disabling of services and settings I was pointed to the solution by <a href="http://intelliem.com/about-intelliem/dan-holme/" target="_blank">Dan Homle</a> who I had the pleasure of meeting this week at the MVP Summit in Seattle. Dan is a fellow SharePoint MVP living in Maui (How cool is that!).</p>
<p>The problem is down to Windows Server 2008 adopting the don&#8217;t install anything approach which is great for its primary target &#8211; i.e. as a server &#8211; but less so for dev&#8217;s who need to know what to turn on where.,  The key missing Feature is the Desktop Experience</p>
<p><a title="Add Desktop Feature" href="http://www.flickr.com/photos/10785452@N00/2424344826/"><img src="http://static.flickr.com/3240/2424344826_b4f95da9e0.jpg" border="0" alt="Add Desktop Feature" /></a></p>
<p>Enabling this will require you to restart the server,  and although it says things like Media Player &#8211; it doesn&#8217;t enable them so shouldn&#8217;t add much bloat.</p>
<p>Now when you enter the url in the Save As dialog you get access to SharePoint sites and libraries.</p>
<p><a title="Save to SharePoint" href="http://www.flickr.com/photos/10785452@N00/2424376934/"><img src="http://static.flickr.com/2364/2424376934_6b7020f54a.jpg" border="0" alt="Save to SharePoint" /></a></p>
<p> </p>
<p>[Update] The Microsoft From the Field also posted on something very similar, enabling WedDav  for the client when this is Windows Server 2008. </p>
<p><a title="http://sharepoint.microsoft.com/blogs/fromthefield/Lists/Posts/Post.aspx?ID=51" href="http://sharepoint.microsoft.com/blogs/fromthefield/Lists/Posts/Post.aspx?ID=51">http://sharepoint.microsoft.com/blogs/fromthefield/Lists/Posts/Post.aspx?ID=51</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/windows-server-2008-developing-sharepoint-cant-connect-from-office-clients/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Low mic volume in Vista 64bit</title>
		<link>http://www.21apps.com/uncategorized/low-mic-volume-in-vista-64bit/</link>
		<comments>http://www.21apps.com/uncategorized/low-mic-volume-in-vista-64bit/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 21:06:00 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Random Stuff]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://21apps.co.uk/?p=80</guid>
		<description><![CDATA[Having previously been an avid Skype user I decided to reinstall on my Vista ultimate 64bit laptop build.   Download and software installation (version 3.6) went without issue, but making a Skype test call I could hardly hear myself.   I made &#8230; <a href="http://www.21apps.com/uncategorized/low-mic-volume-in-vista-64bit/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Having previously been an avid Skype user I decided to reinstall on my Vista ultimate 64bit laptop build.   Download and software installation (version 3.6) went without issue, but making a Skype test call I could hardly hear myself.   I made various changes to the settings including boosting the input without success. </p>
<p>I eventually found this <a href="http://www.vistaheads.com/forums/microsoft-public-windows-vista-hardware-devices/114260-microphone-sound.html" target="_blank">blog post</a> that had a solution way down at the bottom of the page.  Change your recording quality from the default DVD/CD quality down to something like Dictation or Tape Recorder and HEY PRESTO (to quote the blog post) it works.</p>
<p><a title="mic sound quality" href="http://www.flickr.com/photos/10785452@N00/2347708953/"><img src="http://static.flickr.com/2368/2347708953_ed8fa70f51.jpg" border="0" alt="mic sound quality" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/uncategorized/low-mic-volume-in-vista-64bit/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Scripted SharePoint Farm deployment</title>
		<link>http://www.21apps.com/sharepoint/scripted-sharepoint-farm-deployment/</link>
		<comments>http://www.21apps.com/sharepoint/scripted-sharepoint-farm-deployment/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 17:14:00 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://21apps.co.uk/?p=79</guid>
		<description><![CDATA[I normally do not cross post from other people blogs, but had to make an exception for this post by Ben Curry &#8211; because it mentions me Scripted SharePoint Farm Installation using PSConfig.exe and stsadm.exe Ben presented this session at &#8230; <a href="http://www.21apps.com/sharepoint/scripted-sharepoint-farm-deployment/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I normally do not cross post from other people blogs, but had to make an exception for this post by Ben Curry &#8211; because it mentions me <img src='http://www.21apps.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://mindsharpblogs.com/ben/archive/2008/03/08/4411.aspx" target="_blank">Scripted SharePoint Farm Installation using PSConfig.exe and stsadm.exe</a></p>
<p>Ben presented this session at SPC2008 and although the live demo (mucho kudos for not using Camtasia as heckled by Richard Taylor) had a small login issue it was voted as one of the best of the conference.  Check out how to automate you SharePoint installations and celebrate this with a pint of Guinness <img src='http://www.21apps.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/scripted-sharepoint-farm-deployment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint ate all my memory! &#8211; dealing with memory pressures in SharePoint</title>
		<link>http://www.21apps.com/sharepoint/sharepoint-ate-all-my-memory-dealing-with-memory-pressures-in-sharepoint/</link>
		<comments>http://www.21apps.com/sharepoint/sharepoint-ate-all-my-memory-dealing-with-memory-pressures-in-sharepoint/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 12:20:00 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://21apps.co.uk/?p=74</guid>
		<description><![CDATA[One of the areas covered during the training I do on WSS Development is how to correctly dispose of objects, specifically the the ones that have a reference to SPRequest like SPSite and SPWeb.  We talk about performance tuning but &#8230; <a href="http://www.21apps.com/sharepoint/sharepoint-ate-all-my-memory-dealing-with-memory-pressures-in-sharepoint/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>One of the areas covered during the training I do on <a href="http://www.combined-knowledge.com/Sharepoint%202007.htm" target="_blank">WSS Development</a> is how to correctly dispose of objects, specifically the the ones that have a reference to SPRequest like SPSite and SPWeb.  We talk about performance tuning but don&#8217;t really get deep down into how tuning the IIS worker process actually works.</p>
<p>Over the past few months there has been a marked improvement in the information being blogged on the subject so I thought it useful,  as a personal reference, but also to help future students and readers of my blog to list them here.</p>
<p><strong>Microsoft &#8211; Best Practices: Using Disposable Windows SharePoint Services Objects</strong></p>
<p>Learn the appropriate ways to write your code when using Microsoft Windows SharePoint Services objects so that you can avoid retaining the objects in memory with the Microsoft .NET Framework</p>
<p><a title="http://msdn2.microsoft.com/en-us/library/aa973248.aspx" href="http://msdn2.microsoft.com/en-us/library/aa973248.aspx">http://msdn2.microsoft.com/en-us/library/aa973248.aspx</a></p>
<p><strong>Roger Lamb&#8217;s SharePoint Developer Blog</strong></p>
<p>Roger has taken the original article and extended this,  he gives lots of examples of the right and wrong ways to code &#8211; you may spot some of yours in here <img src='http://www.21apps.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   He also documents the PublishingWeb object as another example that users the SPRequest object.</p>
<p><a title="http://blogs.msdn.com/rogerla/archive/2008/02/12/sharepoint-2007-and-wss-3-0-dispose-patterns-by-example.aspx" href="http://blogs.msdn.com/rogerla/archive/2008/02/12/sharepoint-2007-and-wss-3-0-dispose-patterns-by-example.aspx">http://blogs.msdn.com/rogerla/archive/2008/02/12/sharepoint-2007-and-wss-3-0-dispose-patterns-by-example.aspx</a></p>
<p><strong>Stefan Goßner &#8211; Dealing with memory Pressure problems in MOSS/WSS</strong></p>
<p>Stefan gives a very detailed insight into how memory is consumed and what&#8217;s happening inside the memory for the w3wp.exe process.   The reasons we have memory pressure and tips on how to resolve this.</p>
<p><a title="http://blogs.technet.com/stefan_gossner/archive/2007/11/26/dealing-with-memory-pressure-problems-in-moss-wss.aspx" href="http://blogs.technet.com/stefan_gossner/archive/2007/11/26/dealing-with-memory-pressure-problems-in-moss-wss.aspx">http://blogs.technet.com/stefan_gossner/archive/2007/11/26/dealing-with-memory-pressure-problems-in-moss-wss.aspx</a></p>
<p><strong>Steve Sheppard &#8211; Overlapped Recycling And SharePoint: Why SharePoint Requires it</strong></p>
<p>Steve explains why he thinks that SharePoint needs the safety net provided by overlapping recycling.   If you not sure what that means read the blog</p>
<p><a title="http://blogs.msdn.com/steveshe/archive/2007/12/17/overlapped-recycling-and-sharepoint-why-sharepoint-requires-it.aspx" href="http://blogs.msdn.com/steveshe/archive/2007/12/17/overlapped-recycling-and-sharepoint-why-sharepoint-requires-it.aspx">http://blogs.msdn.com/steveshe/archive/2007/12/17/overlapped-recycling-and-sharepoint-why-sharepoint-requires-it.aspx</a></p>
<p>One of the things that we all should take from this is that when we move to the 64Bit environment most of these challenges will become much less of an issue.   It does not mean we don&#8217;t need to code properly,  just that we will have a bit more room to move.</p>
<p>So for all of you that are thinking how do I move from 32bit to 64bit?  well Steve Smith and Penny Coventry have published a great <a href="http://www.combined-knowledge.com/Downloads%202007.htm" target="_blank">white paper</a> on this very subject.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/sharepoint-ate-all-my-memory-dealing-with-memory-pressures-in-sharepoint/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>User Profiles: Why do my changes not show in other sites?</title>
		<link>http://www.21apps.com/sharepoint/user-profiles-why-do-my-changes-not-show-in-other-sites/</link>
		<comments>http://www.21apps.com/sharepoint/user-profiles-why-do-my-changes-not-show-in-other-sites/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 11:10:00 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://21apps.co.uk/?p=73</guid>
		<description><![CDATA[A detailed look at how the Sync works I was asked recently to advise on how to configure a MOSS 2007 installation to allow end users to update their display name as they had previously been able to do in &#8230; <a href="http://www.21apps.com/sharepoint/user-profiles-why-do-my-changes-not-show-in-other-sites/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h3>A detailed look at how the Sync works</h3>
<p>I was asked recently to advise on how to configure a MOSS 2007 installation to allow end users to update their display name as they had previously been able to do in 2003.  My initial thoughts on this were that its a simple update of the profile properties to allow them to edit the Name field,  however the results achieved in testing appeared inconsistent.</p>
<p>In this article I will show</p>
<ul>
<li>How to setup the profile properties</li>
<li>What the user sees and can edit</li>
<li>What services/timer jobs are involved in the Sync and how to speed this up for testing</li>
<li>The conditions that need to be met to trigger the profile information to be replicated.</li>
</ul>
<h4>Setting Up Profile Properties</h4>
<p>The first step is to setup the profile properties.   In this example I will be looking at enabling users to edit the display name (&#8220;PreferredName&#8221;) field.  This example assumes that you have MOSS 2007 and a Shared Service Provider has been setup and configured.</p>
<p>From Central Admin choose the Shared Service Provider from the left hand menu.  This should display a screen similar to the one below.</p>
<p><a title="SSP Admin" href="http://www.flickr.com/photos/10785452@N00/2261486208/"><img src="http://static.flickr.com/2181/2261486208_c417f2f902.jpg" border="0" alt="SSP Admin" /></a></p>
<p>Select the User profiles and properties option as highlighted.   This will allow you to add new properties or as in this example edit an existing property.</p>
<p><a title="View properties" href="http://www.flickr.com/photos/10785452@N00/2260692331/"><img src="http://static.flickr.com/2058/2260692331_e24310208a.jpg" border="0" alt="View properties" /></a></p>
<p>Scroll to the bottom of the page and click View profile properties.  On the list of properties select the <strong>Name</strong> field and choose Edit.</p>
<p><a title="Edit Name" href="http://www.flickr.com/photos/10785452@N00/2261486298/"><img src="http://static.flickr.com/2310/2261486298_03a2e05e4b.jpg" border="0" alt="Edit Name" /></a></p>
<p>The profile properties page allows you to configure the profile property.  Ensure that the field selected is the PreferredName field, this has default Display Name of Name.</p>
<p><a title="PreferredName" href="http://www.flickr.com/photos/10785452@N00/2260692417/"><img src="http://static.flickr.com/2105/2260692417_4774282692.jpg" border="0" alt="PreferredName" /></a></p>
<p>Check that the field is checked for replication.   You will note that the text suggests that properties that can be replicated cannot be edited by the user, however this does not appear to be the case.</p>
<p><a title="Policy Setting Message Error" href="http://www.flickr.com/photos/10785452@N00/2261486392/"><img src="http://static.flickr.com/2329/2261486392_be46b10b79.jpg" border="0" alt="Policy Setting Message Error" /></a></p>
<p>Choose Allow users to edit values for this property,  this will allow the user to change the value via MySite.</p>
<p><a title="Allow Edit" href="http://www.flickr.com/photos/10785452@N00/2260692493/"><img src="http://static.flickr.com/2389/2260692493_a1cb2eae32.jpg" border="0" alt="Allow Edit" /></a></p>
<p>Change the mapping to &#8216;not mapped&#8217;.  If you do not change this any modification the user makes will be overwritten at the next profile import.</p>
<p><strong>Note: When a user firsts accesses a site the User Info is extracted directly from AD (or your provider, not tested) and it still pulls the AD based display name into this field as it is not related to the profile mapping.</strong></p>
<p><a title="Mapping" href="http://www.flickr.com/photos/10785452@N00/2260692569/"><img src="http://static.flickr.com/2388/2260692569_ce6c40b300.jpg" border="0" alt="Mapping" /></a></p>
<p>We will look at the different states for the User Info and profile imports below.</p>
<p>The properties page should show the PreferredName field is no longer mapped.</p>
<p><a title="Profile Import Blank" href="http://www.flickr.com/photos/10785452@N00/2261486576/"><img src="http://static.flickr.com/2351/2261486576_bf3ab185a3.jpg" border="0" alt="Profile Import Blank" /></a></p>
<p>That is all of the changes required to make the display name editable by the user.</p>
<h4>What The User Sees and Can Edit</h4>
<p>When the user navigates to a SharePoint site the initial view will show the information contained in AD (I assume this is the same for other providers but you will need to test) including the display name.</p>
<p><a title="AD User Info" href="http://www.flickr.com/photos/10785452@N00/2262771106/"><img src="http://static.flickr.com/2221/2262771106_020ff55c7c.jpg" border="0" alt="AD User Info" /></a></p>
<p>AD user with defined Display Name, this will be used initially when the user accesses a SharePoint site as shown below.</p>
<p><a title="Not Active on Team Site" href="http://www.flickr.com/photos/10785452@N00/2261907951/"><img src="http://static.flickr.com/2180/2261907951_a847fbc242.jpg" border="0" alt="Not Active on Team Site" /></a></p>
<p>To edit the display name navigate to your My Site, this will initially look like the image below,  notice that the Welcome message is not based on the display name from AD but the users account name. <em>In this example I have blurred the domain</em> <em>name</em>.</p>
<p><a title="Default My Site" href="http://www.flickr.com/photos/10785452@N00/2262698326/"><img src="http://static.flickr.com/2174/2262698326_c2da85ce43.jpg" border="0" alt="Default My Site" /></a></p>
<p>Click on the Details option under the My Profile Quick Launch and edit the Name field.</p>
<p><a title="New name" href="http://www.flickr.com/photos/10785452@N00/2261908033/"><img src="http://static.flickr.com/2146/2261908033_e161228711.jpg" border="0" alt="New name" /></a></p>
<p>In order to test this I have used a time stamp so I could repeat the tests and identify what had changed.</p>
<p>Clicking on Save will take you back to the My Site home page and will show some of the fields have updated but others have not.  The fields that have not updated are based on the User Info table and is updated by the Quick Profile Synchronization timer job (see below).</p>
<p><a title="Initial changes in My Site" href="http://www.flickr.com/photos/10785452@N00/2261908073/"><img src="http://static.flickr.com/2151/2261908073_3b28c2257d.jpg" border="0" alt="Initial changes in My Site" /></a></p>
<p>The Quick Profile Synchronization timer job is scheduled too run regularly (minutes) but I have found in testing, and this will increase as your number of users and sites increase, it can take a while for the changes to take place.   You can force this timer job by running the STSADM operation SYNC.</p>
<p>stsadm -o sync</p>
<p><a title="stsadm -o sync" href="http://www.flickr.com/photos/10785452@N00/2262698432/"><img src="http://static.flickr.com/2120/2262698432_a00467c2e8.jpg" border="0" alt="stsadm -o sync" /></a></p>
<p>Note: this starts the job, the changes will not appear instantly.</p>
<p>After the sync has been performed the User Info table will be updated with the values from the My Profile details.</p>
<p><a title="New name takes effect" href="http://www.flickr.com/photos/10785452@N00/2262698468/"><img src="http://static.flickr.com/2075/2262698468_b4303c2b60.jpg" border="0" alt="New name takes effect" /></a></p>
<h4>Why do some Team Sites not update with my details</h4>
<p>The main reason for confusion around the updating (sync&#8217;ing) of My Profile details into team sites is that it is now based on if the user is Active.   As part of the upgrade to V3 Microsoft introduced the idea of users being active in a site rather than just having access.</p>
<p>When you first visit a site a record is recorded in the UserInfo table of the sites Content Database.   The field tp_IsActive is defaulted to false, which means you have visited but have not interacted with the site.</p>
<p>The Sync process uses this value to determine if the user info should be replicated from the My Profile details as edited above.</p>
<p>Following on from the example above you should be able to refresh your team site that you had only visited and see the user name is still the same, it was not updated when the My Site was updated.</p>
<p><a title="Not Active on Team Site" href="http://www.flickr.com/photos/10785452@N00/2261907951/"><img src="http://static.flickr.com/2180/2261907951_a847fbc242.jpg" border="0" alt="Not Active on Team Site" /></a></p>
<p>If you now interact with the site, either add a document or edit a link,  in effect become an active user of the site, and then run the stsadm -o sync command as above the My Profile changes to the user name will be replicated to the site.</p>
<p><a title="Test Site Updated" href="http://www.flickr.com/photos/10785452@N00/2261908171/"><img src="http://static.flickr.com/2039/2261908171_791c6dfa68.jpg" border="0" alt="Test Site Updated" /></a></p>
<h4>Sync Timer Jobs and STSADM</h4>
<p>The synchronisation of the profile properties and information are based on two timer jobs,  and one stsadm command (as used above).  These jobs are per web application so you may see multiple of these configured in your environment.   Access to these is via Centra Admin -&gt; Operations.</p>
<p><a title="Profile Timer Jobs" href="http://www.flickr.com/photos/10785452@N00/2261941809/"><img src="http://static.flickr.com/2365/2261941809_8a41cddbf3.jpg" border="0" alt="Profile Timer Jobs" /></a></p>
<p>These timer jobs are part of the <a href="http://msdn2.microsoft.com/en-us/library/microsoft.office.server.userprofiles.aspx" target="_blank">Microsoft.Office.Server.UserProfiles</a> namespace and specifically<br />
<a href="http://msdn2.microsoft.com/en-us/library/ms574025.aspx">WSSProfileSynch</a><br />
Handles the synchronization of user profile data in the Windows SharePoint Services user information list on each site, and the synchronization of Windows SharePoint Services members group membership in the user profile memberships. This class is not intended to be used directly from your code; use stsadm.exe instead.<br />
<a href="http://msdn2.microsoft.com/en-us/library/ms573592.aspx">WSSSweepSynch</a><br />
Handles the incremental synchronization of user profile data in the Windows SharePoint Services user information list on each site. This class is not intended to be used directly from your code; use stsadm.exe instead.</p>
<p>I have yet to determine exactly which of these processes are triggered using the stsadm -o sync command.</p>
<h3>Additional Information</h3>
<p><a href="http://msdn2.microsoft.com/en-us/library/ms563846.aspx" target="_blank">Profile Synchronisation on MSDN</a></p>
<p>Sahil Malik has a good post on the high level information flow within MOSS <a href="http://blah.winsmarts.com/2007-7-MOSS_User_Profile_Info_-_How_the_information_flows.aspx" target="_blank">here</a>.</p>
<p>I have also included below some sample code that I used to try and speed up the timer jobs.   You may want to use these to help understand what each timer job does.   Note, changing the Profile Synchronization schedule will not remain,  another time job appears to reset this to the installed defaults.</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> Main(<span style="color: #0000ff;">string</span>[] args){ List&lt;System.Uri&gt; urls = <span style="color: #0000ff;">new</span> List&lt;System.Uri&gt;(); urls.Add(<span style="color: #0000ff;">new</span> System.Uri(<span style="color: #006080;">&#8220;http://mysite_webapplication&#8221;</span>)); urls.Add(<span style="color: #0000ff;">new</span> System.Uri(<span style="color: #006080;">&#8220;http://portal_webapplication&#8221;</span>)); <span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = 0; i &lt; urls.Count; i++) { SPWebApplication webApp = SPWebApplication.Lookup(urls[i]); <span style="color: #0000ff;">foreach</span> (SPJobDefinition job <span style="color: #0000ff;">in</span> webApp.JobDefinitions) { <span style="color: #008000;">// &#8220;profsynch&#8221; = Profile Syncronisation</span> <span style="color: #008000;">// &#8220;sweepsync&#8221; = Quick Profile Syncronisation</span> <span style="color: #0000ff;">if</span> (job.Name == <span style="color: #006080;">&#8220;profsynch&#8221;</span>) { SPMinuteSchedule schedule = <span style="color: #0000ff;">new</span> SPMinuteSchedule(); schedule.BeginSecond = 0; schedule.EndSecond = 59; schedule.Interval = 1; job.Schedule = schedule; job.Update(); Console.WriteLine(<span style="color: #006080;">&#8220;Temporarily Updated Profile Sync for Web Application {0}&#8221;</span>, webApp.Name); } } } Console.ReadLine();}</div>
<h3>Error and Omissions</h3>
<p>Warning: Access to the database directly is not supported, I performed this in my test environment to understand why things worked the way they did.</p>
<p>Using a famous Todd Bleeker line from TechEd Orlando &#8211; I reserve the right to be wrong! This is what I have found so far, but my knowledge and understanding of this may change over time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/user-profiles-why-do-my-changes-not-show-in-other-sites/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>IFilters released for Office 2007 formats</title>
		<link>http://www.21apps.com/sharepoint/ifilters-released-for-office-2007-formats/</link>
		<comments>http://www.21apps.com/sharepoint/ifilters-released-for-office-2007-formats/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 09:20:00 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://21apps.co.uk/?p=67</guid>
		<description><![CDATA[So how many of you thought that MOSS2007 was already indexing your Office 2007 documents correctly?   Microsoft have just (17 Dec 2007) released an updated Microsoft Filter Pack  which provides additional IFilters specifically for the Microsoft Office 2007 format documents: &#8230; <a href="http://www.21apps.com/sharepoint/ifilters-released-for-office-2007-formats/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>So how many of you thought that MOSS2007 was already indexing your Office 2007 documents correctly?   Microsoft have just (17 Dec 2007) released an updated <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=60C92A37-719C-4077-B5C6-CAC34F4227CC&amp;displaylang=en" target="_blank">Microsoft Filter Pack</a>  which provides additional IFilters specifically for the Microsoft Office 2007 format documents: .docx, .docm, .pptx, .pptm, .xlsx, .xlsm, .xlsb, .zip, .one, .vdx, .vsd, .vss, .vst, .vdx, .vsx, and .vtx.</p>
<p>Details of how to register the new filter for MOSS 2007 and Search Server 2008 are <a href="http://support.microsoft.com/?id=946336" target="_blank">here</a>.</p>
<p> </p>
<p>It is still worth pointing out that there is still no TIFF support! So if this is something you need to have, and you will need to understand the impact this can have on your crawling, you should look at the following work around</p>
<p><a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1417396&amp;SiteID=1&amp;mode=1">http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1417396&amp;SiteID=1&amp;mode=1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/ifilters-released-for-office-2007-formats/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

