<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.syrinx.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">SharePoint</title><subtitle type="html">Syrinx SharePoint Team Blog
&lt;br /&gt;
Need help on your project? &lt;b&gt;info@syrinx.com&lt;/b&gt;, or toll free &lt;b&gt;(888) 579-7469, press 1&lt;/b&gt; </subtitle><id>http://blogs.syrinx.com/blogs/sharepoint/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.syrinx.com/blogs/sharepoint/atom.aspx" /><generator uri="http://communityserver.org" version="3.1.20917.1142">Community Server</generator><updated>2008-04-16T13:19:42Z</updated><entry><title>Betting on SharePoint</title><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/06/23/betting-on-sharepoint.aspx" /><id>http://blogs.syrinx.com/blogs/sharepoint/archive/2008/06/23/betting-on-sharepoint.aspx</id><published>2008-06-24T00:27:29Z</published><updated>2008-06-24T00:27:29Z</updated><content type="html">&lt;p&gt;Last month Andrew Gelina (Syrinx&amp;#39;s CEO) and myself had a nice conversation with Gayle Rodcay of Windows IT Pro magazine.&amp;nbsp; She asked a lot of great questions about the top features/functionality we have seen requested in the SharePoint space.&amp;nbsp; Her write-up of the interview went online and is available for everyone at:&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a title="http://windowsitpro.com/article/articleid/99317/betting-on-sharepoint.html" href="http://windowsitpro.com/article/articleid/99317/betting-on-sharepoint.html"&gt;http://windowsitpro.com/article/articleid/99317/betting-on-sharepoint.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Let me know what you think!&lt;/p&gt; &lt;p&gt;-Ryan&lt;/p&gt;&lt;img src="http://blogs.syrinx.com/aggbug.aspx?PostID=148" width="1" height="1"&gt;</content><author><name>RyanT</name><uri>http://blogs.syrinx.com/members/RyanT.aspx</uri></author></entry><entry><title>Buried Treasure: Uncovering SharePoint's Riches</title><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/06/23/buried-treasure-uncovering-sharepoint-s-riches.aspx" /><id>http://blogs.syrinx.com/blogs/sharepoint/archive/2008/06/23/buried-treasure-uncovering-sharepoint-s-riches.aspx</id><published>2008-06-24T00:23:54Z</published><updated>2008-06-24T00:23:54Z</updated><content type="html">&lt;p&gt;I just wanted to pass along a recent article I wrote for Redmond Channel Partner magazine for the May issue.&amp;nbsp; They wanted the article written to help the community with the common problem many users of SharePoint are faced with:&amp;nbsp; What do I do with it?&amp;nbsp; How can it help my company?&amp;nbsp; &lt;/p&gt; &lt;p&gt;The full article can be found here:&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a title="http://rcpmag.com/columns/article.aspx?editorialsid=2584" href="http://rcpmag.com/columns/article.aspx?editorialsid=2584"&gt;http://rcpmag.com/columns/article.aspx?editorialsid=2584&lt;/a&gt;&lt;/p&gt; &lt;p&gt;-Ryan&lt;/p&gt;&lt;img src="http://blogs.syrinx.com/aggbug.aspx?PostID=147" width="1" height="1"&gt;</content><author><name>RyanT</name><uri>http://blogs.syrinx.com/members/RyanT.aspx</uri></author></entry><entry><title>Tech-Ed 2008 Wrap-up</title><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/06/10/tech-ed-2008-wrap-up.aspx" /><id>http://blogs.syrinx.com/blogs/sharepoint/archive/2008/06/10/tech-ed-2008-wrap-up.aspx</id><published>2008-06-10T12:16:33Z</published><updated>2008-06-10T12:16:33Z</updated><content type="html">&lt;p&gt;I got back home to Boston after having a great week at Tech-Ed.&amp;nbsp; It really was a good show.&amp;nbsp; I met a lot of new people as well as catch up with some friends in the industry.&amp;nbsp; There really was a lot of great content and dialogue around SharePoint to help all of us in our quest to keep learning more and more to help our clients get the best possible results.&amp;nbsp; Thanks again to Tom Robbins, Chris Bowen, and Bob Familiar from Microsoft for taking us to dinner, introducing us to some great people, and really going the extra mile.&lt;/p&gt; &lt;p&gt;I learned about a couple tools used by the presenters to make our lives easier and wanted to pass those along to everyone:&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.ultrapico.com/Expresso.htm"&gt;Expresso&lt;/a&gt;: A regular expression builder was very interesting and will come in handy when the federated search components are added to MOSS very soon.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.fiddlertool.com/fiddler/"&gt;Fiddler&lt;/a&gt;: A http traffic sniffer to help you look at the breakdown of items loading on your pages.&amp;nbsp; Thank you to &lt;a href="http://www.andrewconnell.com/blog/"&gt;Andrew Connell&lt;/a&gt; for showing this off.&amp;nbsp; It was eye-opening to say the least watching him run this tool on a SharePoint page.&lt;/p&gt; &lt;p&gt;Speaking of &lt;a href="http://www.andrewconnell.com/blog/"&gt;Andrew Connell&lt;/a&gt;, I just wanted to point out what a great session he did on the last day about building your SharePoint applications with performance in mind.&amp;nbsp; Not only was the content excellent, but as usual, his presentation style was engaging and interesting.&lt;/p&gt; &lt;p&gt;I hope to see everyone again next year,&lt;/p&gt; &lt;p&gt;-Ryan&lt;/p&gt;&lt;img src="http://blogs.syrinx.com/aggbug.aspx?PostID=145" width="1" height="1"&gt;</content><author><name>RyanT</name><uri>http://blogs.syrinx.com/members/RyanT.aspx</uri></author></entry><entry><title>Tech-Ed Day Two</title><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/06/05/tech-ed-day-two.aspx" /><id>http://blogs.syrinx.com/blogs/sharepoint/archive/2008/06/05/tech-ed-day-two.aspx</id><published>2008-06-05T20:21:43Z</published><updated>2008-06-05T20:21:43Z</updated><content type="html">&lt;p&gt;Day two was better than the first day in terms of session content and interest, at least from my perspective.&amp;nbsp; I took pictures, but decided it was better to get the post up than get the pictures ready.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;XMOL / XAML&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.johnholliday.net/"&gt;John Holliday&lt;/a&gt; gave an in-depth coding example about how you can build your own XOML/XAML editor that sits between Visual Studio and SharePoint Designer, allowing you load, modify, and build custom Workflows.&amp;nbsp; Although I&amp;#39;m not sure I&amp;#39;d ever use such a tool, the exercise in seeing it built and operate shed even more light on WF.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Federated Search in MOSS 2007&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Michal Gideoni from Microsoft presented a session on the new abilities of SharePoint for Search 2008 and therefore the new patch being release within a month that will add these features to existing MOSS implementations.&amp;nbsp; &lt;/p&gt; &lt;p&gt;She demonstrated some very powerful and easy methods to build federated search web parts that basically connect to anything!&amp;nbsp; Ok, maybe not anything, but just about anything that you can call via code to search and return data.&amp;nbsp; Her solution was to convert almost any foreign search component&amp;#39;s return data into an RSS format so the local federated web parts can use this for display purposes.&amp;nbsp; This included Google, SQL Server, Mapping tools, etc.&amp;nbsp; With some clever regular expression manipulation she was able to allow for custom search queries to look for specific items that certain searches are more qualified to return.&lt;/p&gt; &lt;p&gt;Finally, Michal mentioned that some new protocols for Documentum and FileNet have been released for MOSS to search and index the content.&amp;nbsp; She also informed us that the new federated search web parts are no longer sealed, thus allowing us to inherit from them and begin extending their functionality.&amp;nbsp; I sure hope Microsoft follows suit on this new direction with their other web parts as well!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Making SharePoint Development Better&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sharepointblogs.com/stacydraper/default.aspx"&gt;Stacy Draper&lt;/a&gt; hosted a really great Birds of a Feather session for SharePoint developers.&amp;nbsp; Essentially it was an open forum for those of us working in this genre to ask questions, express ideas, discuss current issues, offer solutions to problems, and generally hear about how other people are doing.&amp;nbsp; It was very informative and good to hear that a lot of people experience the same issues in these environments.&amp;nbsp; We met some talented developers genuinely there to learn, collaborate, and share knowledge.&amp;nbsp; Thanks again Stacy!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Content Types for Document Management&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Another session by &lt;a href="http://www.johnholliday.net/"&gt;John Holliday&lt;/a&gt;.&amp;nbsp; I seem gravitate towards the types of sessions he covers.&amp;nbsp; This session was a deep-dive coding example about creating Content Types in code and how you can use reflection to make this process much easier.&amp;nbsp; His session is probably the &amp;quot;deepest&amp;quot; I&amp;#39;ve seen someone get into when it comes to Content Types via the object model.&amp;nbsp; &lt;/p&gt; &lt;p&gt;One thing he mentioned that I hadn&amp;#39;t thought of before is the ability to send documents with any/all Content Types into a more generic rules engine if you choose to validate documents/items entering your applications.&amp;nbsp; Right now, you can attach Information Management Policies or Workflows to Content Types, or you can write custom code that can look at Content Types on various events (adding, updating, etc) to validate, but each of these methods is fairly specific to a certain type of document, Content Typde or validation rule.&amp;nbsp; I liked the idea of building these validators that could apply to all Content Types, but your code is essentially a rules engine that looks at all the metadata for each Content Type, along with other conditions, to determine certain allowable actions during certain events.&amp;nbsp; You could get clever with this approach and build a nice front-end for your rules data.&amp;nbsp; &lt;/p&gt; &lt;p&gt;That&amp;#39;s it for day 2!&lt;/p&gt; &lt;p&gt;-Ryan&lt;/p&gt;&lt;img src="http://blogs.syrinx.com/aggbug.aspx?PostID=142" width="1" height="1"&gt;</content><author><name>RyanT</name><uri>http://blogs.syrinx.com/members/RyanT.aspx</uri></author></entry><entry><title>Warming Up SharePoint Servers After Cold Restart</title><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/06/04/warming-up-sharepoint-servers-after-cold-restart.aspx" /><id>http://blogs.syrinx.com/blogs/sharepoint/archive/2008/06/04/warming-up-sharepoint-servers-after-cold-restart.aspx</id><published>2008-06-05T03:20:45Z</published><updated>2008-06-05T03:20:45Z</updated><content type="html">&lt;p&gt;Everyone knows how painful it is to try reaching a MOSS page after an IIS reset or a server reboot; what happens is ASP.NET performing page and resource compilation and caching. You can help your users save frustration by simply touching every MOSS web application once after a cold restart. Of course you would prefer to automate such a task instead of firing up a browser every time your server restarts. Isn&amp;#39;t it easier to click on an icon on your desktop and warm-up all those 20 SharePoint servers at once? &lt;/p&gt; &lt;p&gt;To create a warm up script we can use Microsoft&amp;#39;s own XMLHTTP object from XML DOM suit and Windows Scripting. The simplest VB script to touch a web page would look like:&lt;/p&gt; &lt;p&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;#39; Check if a site url specified&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;if&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; wscript.Arguments.Count &amp;lt;&amp;gt; 1 &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Then&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;br /&gt;wscript.Echo &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Please specify a url!&amp;quot;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;wscript.Quit&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;end&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;br /&gt;Dim&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; xmlHttp&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Set&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; xmlHttp = CreateObject(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Msxml2.ServerXMLHTTP.3.0&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;)&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Err.Number &amp;lt;&amp;gt; 0 &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Then&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Set&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; xmlHttp = CreateObject(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Microsoft.XMLHTTP&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;) &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Err.Number &amp;lt;&amp;gt; 0 &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Then&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; wscript.Quit &lt;br /&gt;wscript.Echo &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Touching &amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;CStr&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;(wscript.Arguments(0))&lt;br /&gt;xmlHttp.Open &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;GET&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;CStr&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;(wscript.Arguments(0)), &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;False&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;xmlHttp.Send&lt;br /&gt;&lt;/p&gt;&lt;/font&gt; &lt;p&gt;And you can call this script from a batch file using wscript.exe or cscript.exe tools which run the script in the Windows script Host:&lt;/p&gt; &lt;p&gt;wscript c:\warmup.vbs &amp;quot;&lt;a href="http://moss.com/site"&gt;http://moss.com/site&lt;/a&gt;&amp;quot;&lt;/p&gt; &lt;p&gt;So just add such a command for all your moss sites to a batch file and run after each cold restart.&lt;/p&gt;&lt;img src="http://blogs.syrinx.com/aggbug.aspx?PostID=141" width="1" height="1"&gt;</content><author><name>AndreyL</name><uri>http://blogs.syrinx.com/members/AndreyL.aspx</uri></author></entry><entry><title>Tech-Ed Day One</title><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/06/04/tech-ed-day-one.aspx" /><id>http://blogs.syrinx.com/blogs/sharepoint/archive/2008/06/04/tech-ed-day-one.aspx</id><published>2008-06-04T22:47:59Z</published><updated>2008-06-04T22:47:59Z</updated><content type="html">&lt;p&gt;I just wanted to do a quick write-up from day one at Tech-Ed 2008 Developer in Orlando Florida.&amp;nbsp; The opening Keynote address by Bill Gates was very good.&amp;nbsp; He touched upon his upcoming departure about Microsoft, but not without also leaving us with a nice picture of where he feels the technology of Microsoft is heading.&amp;nbsp; The big pieces were the demonstrations about presentation with the upcoming release of SilverLight 2 Beta 2, development and middle-tier efforts with Visual Studio 2008; including some of the interesting architecture, diagram, and pattern enforcement tools.&amp;nbsp; He ended with discussing and demonstrating the back-end with SQL Server 2008&amp;#39;s ability to do spatial queries and the addition of more platform services.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/TechEdDayOne_103AC/BillTechEd_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="224" alt="BillTechEd" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/TechEdDayOne_103AC/BillTechEd_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Visual Studio 2008 Development for SharePoint&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I also attended some interesting sessions around SharePoint technologies.&amp;nbsp; There will be a 1.2 release of Visual Studio extensions for Windows SharePoint Services very soon that will support Visual Studio 2008.&amp;nbsp; There will be no added functionality to the extensions, but this is still a useful milestone for moving forward with some of the new development tools.&amp;nbsp; Thank you to&amp;nbsp; Paul Andrew for giving us a walk-through.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;SQL Server Reporting Services and SharePoint&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;There was a very interesting session by Prash Shirolkar on the some of the great integration features between SSRS (SQL Server Reporting Services) and MOSS.&amp;nbsp; He demonstrated some great examples of SSRS reporting on information in the WSS Content Databases, building and publishing reports from SSRS to SharePoint libraries, and some of the new Web Parts available to view very comprehensive reports within SharePoint.&amp;nbsp; He also gave a quick overview on an SSRS report, running in a Web Part, that was able write data back to a local SharePoint list.&amp;nbsp; Interesting stuff!&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/TechEdDayOne_103AC/sessionssrs_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="140" alt="sessionssrs" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/TechEdDayOne_103AC/sessionssrs_thumb_1.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/TechEdDayOne_103AC/Untitled%20picture_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="141" alt="Untitled picture" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/TechEdDayOne_103AC/Untitled%20picture_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Custom Routers in SharePoint Records Center&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;John Holliday gave a nice overview in a smaller, informal venue about building custom routers in Records Center.&amp;nbsp; Building these routers is actually fairly straightforward, and there seems to be some value to this in the ability to have more granular control via code over the filtering, authenticating, and management of documents that enter your repository.&amp;nbsp; Andrew Connell was sitting on the session and a very thought-provoking conversation sparked up about backing up / managing / viewing snapshots of content managed publishing sites in SharePoint.&amp;nbsp; It seems like we&amp;#39;ve all been getting requests for this type of management and control over SharePoint lately.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/TechEdDayOne_103AC/Untitled%20picture2_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="120" alt="Untitled picture2" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/TechEdDayOne_103AC/Untitled%20picture2_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Overall it&amp;#39;s been a great time and has been a lot of fun talking to like-minded people working on SharePoint in the industry!&amp;nbsp; More to come...&lt;/p&gt; &lt;p&gt;-Ryan&lt;/p&gt;&lt;img src="http://blogs.syrinx.com/aggbug.aspx?PostID=139" width="1" height="1"&gt;</content><author><name>RyanT</name><uri>http://blogs.syrinx.com/members/RyanT.aspx</uri></author></entry><entry><title>MOSS Enterprise Search. Addition to Part 1</title><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/05/31/moss-enterprise-search-addition-to-part-1.aspx" /><id>http://blogs.syrinx.com/blogs/sharepoint/archive/2008/05/31/moss-enterprise-search-addition-to-part-1.aspx</id><published>2008-05-31T16:19:12Z</published><updated>2008-05-31T16:19:12Z</updated><content type="html">&lt;p&gt;In the first part of the series we&amp;#39;ve looked at how to create content sources to be crawled. In addition to that, you can control the behavior of the crawler on the content sources by setting exclusion and inclusion rules on the content. Those rules apply to all and any content matched by specified URL patterns. Let&amp;#39;s take an example: you don&amp;#39;t want the indexer to index anything under&amp;nbsp; &lt;a href="http://yourserver.com/sites/"&gt;http://yourserver.com/sites/&lt;/a&gt; with one exception: you want to index one particular subsite: &lt;a href="http://yourserver.com/sites/yourblogs"&gt;http://yourserver.com/sites/yourblogs&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;First, you need to set an exclusion rule:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Open Shared Services web site:  &lt;ul&gt; &lt;li&gt;Open &lt;strong&gt;Sharepoint 3.0 Central Administration&lt;/strong&gt; web site  &lt;li&gt;Under &lt;strong&gt;Shared Services Administration&lt;/strong&gt; section on the left side navigation, click on the Shared Services link to load Shared Services web site &lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.AdditiontoPart1_A438/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="218" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.AdditiontoPart1_A438/image_thumb.png" width="154" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;In the &lt;strong&gt;Search&lt;/strong&gt; section click on &lt;strong&gt;Search Settings&lt;/strong&gt; link: &lt;br /&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.AdditiontoPart1_A438/image_4.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="90" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.AdditiontoPart1_A438/image_thumb_1.png" width="170" border="0" /&gt;&lt;/a&gt;  &lt;li&gt;In &lt;strong&gt;Crawl Settings&lt;/strong&gt; section click on &lt;strong&gt;Crawl Rules&lt;/strong&gt; link  &lt;li&gt;Now we will create an exclusion rule to exclude all sites and content under &lt;a href="http://yourserver.com/sites/"&gt;http://yourserver.com/sites/&lt;/a&gt; from being indexed:  &lt;ol&gt; &lt;li&gt;Click the &lt;strong&gt;New Crawl Rule&lt;/strong&gt; button &lt;br /&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.AdditiontoPart1_A438/image_6.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="86" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.AdditiontoPart1_A438/image_thumb_2.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;br /&gt;to enter the &lt;strong&gt;Add crawl Rule&lt;/strong&gt; wizard: &lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.AdditiontoPart1_A438/image_8.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="246" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.AdditiontoPart1_A438/image_thumb_3.png" width="404" border="0" /&gt;&lt;/a&gt;  &lt;li&gt;In the Path box enter the URL filter: &lt;a href="http://yourserver.com/sites/"&gt;http://yourserver.com/sites/*&lt;/a&gt;, then click Ok button to save the rule.&lt;/li&gt;&lt;/ol&gt; &lt;li&gt;Next we create an inclusion rule that will allow content of some sites excluded in the previous step to be indexed: as in the previous step, click the &lt;strong&gt;New Crawl Rule&lt;/strong&gt; button, the in the Path text box enter the URL pattern to be included: &lt;a href="http://yourserver.com/sites/yourblogs/"&gt;http://yourserver.com/sites/yourblogs/&lt;/a&gt;*, and select &lt;strong&gt;Include all items in this path&lt;/strong&gt; option in the &lt;strong&gt;Crawl Configuration&lt;/strong&gt; section, then click Ok to apply the rule. &lt;/li&gt;&lt;/ol&gt;&lt;img src="http://blogs.syrinx.com/aggbug.aspx?PostID=138" width="1" height="1"&gt;</content><author><name>AndreyL</name><uri>http://blogs.syrinx.com/members/AndreyL.aspx</uri></author></entry><entry><title>Best Practices for Naming Sites and Pages.</title><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/05/25/top-tabs-are-not-highlighting-properly.aspx" /><id>http://blogs.syrinx.com/blogs/sharepoint/archive/2008/05/25/top-tabs-are-not-highlighting-properly.aspx</id><published>2008-05-25T11:34:00Z</published><updated>2008-05-25T11:34:00Z</updated><content type="html">&lt;p&gt;A comment I frequently hear is: SharePoint tabs don&amp;#39;t always highlight properly.&amp;nbsp; As it turns out, if you are in the habit of doing things a certain way, they always work.&lt;/p&gt;
&lt;p&gt;First, make sure you are turning on &amp;quot;Show Pages&amp;quot; and/or &amp;quot;Show subsites&amp;quot;.&amp;nbsp; You can find this in Site Settings by clicking on Navigation.&lt;/p&gt;
&lt;p&gt;Second, when you are adding sites and pages make sure their names don&amp;#39;t have spaces.&amp;nbsp; See my blog on &lt;a href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/02/06/best-practices-for-working-with-column-names-in-sharepoint.aspx"&gt;best practices for working with column names&lt;/a&gt;&amp;nbsp;for a deeper discussion; I generally extend this to everything I create in SharePoint by habit now and as it turns out why I never run into this problem.&lt;/p&gt;
&lt;p&gt;Third, when adding pages or sites to your navigation, always browse to the intended destination; this will ensure your tabs will work properly.&amp;nbsp; In fact if you compare the resulting URL after you fix a broken tab this way, you will see that the URL must be relative, not absolute.&lt;/p&gt;
&lt;p&gt;Following these best practices should prevent the problem where&amp;nbsp;SharePoint (MOSS or WSS) tabs are&amp;nbsp;not highlighting.&lt;/p&gt;
&lt;p&gt;-Joe&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.syrinx.com/aggbug.aspx?PostID=135" width="1" height="1"&gt;</content><author><name>JoeS</name><uri>http://blogs.syrinx.com/members/JoeS.aspx</uri></author><category term="MOSS" scheme="http://blogs.syrinx.com/blogs/sharepoint/archive/tags/MOSS/default.aspx" /><category term="WSS" scheme="http://blogs.syrinx.com/blogs/sharepoint/archive/tags/WSS/default.aspx" /><category term="SharePoint MOSS Best Practices" scheme="http://blogs.syrinx.com/blogs/sharepoint/archive/tags/SharePoint+MOSS+Best+Practices/default.aspx" /><category term="Naming Conventions" scheme="http://blogs.syrinx.com/blogs/sharepoint/archive/tags/Naming+Conventions/default.aspx" /></entry><entry><title>Moving up to find that list</title><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/05/18/moving-up-to-find-that-list.aspx" /><id>http://blogs.syrinx.com/blogs/sharepoint/archive/2008/05/18/moving-up-to-find-that-list.aspx</id><published>2008-05-19T03:04:00Z</published><updated>2008-05-19T03:04:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m going to write a bit about a problem I ran into when I wrote a bulk upload application for one of my SharePoint clients.&amp;nbsp; I found that when I was importing a document and applying a Content Type to it I needed to find the Lookup list values for one of the import fields.&amp;nbsp; In looking for a list of lookup values I started with this code:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static SPList GetListByName(SPWeb web, string listName)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPList retVal = null;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (SPList list in web.Lists)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (list.Title.ToLower().Equals(listName.ToLower()))&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retVal = list;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return retVal;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;That is, I passed in the current web and the list name that I was looking for and iterated the lists in the web looking for a name match.&amp;nbsp; That code quickly became this code:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static SPList GetListByName(SPWeb web, string listName)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return web.Lists[listName.ToLower()];&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;In this code I let the object&amp;#39;s enumerator handle the iteration for me.&amp;nbsp; So quick and easy and I&amp;#39;m done - but not so fast.&amp;nbsp; The only problem was that it didn&amp;#39;t work.&amp;nbsp; The first time I looked for a Lookup Column that wasn&amp;#39;t in the current web an Exception was thrown. Almost as soon as I started importing I needed a Lookup Column that was a site column and the document was being uploaded into the Documents folder in a sub-site, in this particular case, two sites down from the root.&lt;/p&gt;
&lt;p&gt;Once I realized that the List existed but in a different context than that in which I was looking, I figured all I would need to do was get to the root and start looking using recursion, but instead of starting at the top and searching down, I thought that starting from where I was and moving up was a better approach.&amp;nbsp; In the instance where the List is in the parent web it is easier and faster to move up using web.ParentWeb from where you are, rather than iterating down through all of the child webs using web.Webs from the root.&amp;nbsp; That got me to this point:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static SPList GetListByName(SPWeb web, string listName)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPList retVal = web.Lists[listName.ToLower()];&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (retVal == null) // recurse up&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (web.ParentWeb != null)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retVal = GetListByName(web.ParentWeb, listName);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return retVal;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;But as you can see I forgot about the Exception being thrown, so I put the recursive call into a catch block and ended up with this code:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static SPList GetListByName(SPWeb web, string listName)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPList retVal = web.Lists[listName.ToLower()];&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (retVal == null) // recurse up&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (web.ParentWeb != null)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retVal = GetListByName(web.ParentWeb, listName);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return retVal;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;This approach was the one that finally worked.&amp;nbsp; If it didn&amp;#39;t find the list by name in the current lists for the web it would throw an Exception and the catch block would then check to make sure that the retVal was still null, on the chance that the exception was thrown after it was set.&amp;nbsp; If it was null, it looked to see if the current web had a parent web and if so used that web to recursively call the method.&amp;nbsp; The two base cases in this recursion are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1. The code in the try block does not throw an error, in which case the list was found, or&lt;/li&gt;
&lt;li&gt;2. The web.ParentWeb is null, which means we are at the root of the site and the list does not exist.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;That wraps it up for this time, hope it made your life a little easier.&lt;/p&gt;&lt;img src="http://blogs.syrinx.com/aggbug.aspx?PostID=130" width="1" height="1"&gt;</content><author><name>JohnF</name><uri>http://blogs.syrinx.com/members/JohnF.aspx</uri></author><category term="MOSS" scheme="http://blogs.syrinx.com/blogs/sharepoint/archive/tags/MOSS/default.aspx" /><category term="SharePoint" scheme="http://blogs.syrinx.com/blogs/sharepoint/archive/tags/SharePoint/default.aspx" /><category term="Lists" scheme="http://blogs.syrinx.com/blogs/sharepoint/archive/tags/Lists/default.aspx" /></entry><entry><title>MOSS Enterprise Search. Part 2</title><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/05/18/moss-enterprise-search-part-2.aspx" /><id>http://blogs.syrinx.com/blogs/sharepoint/archive/2008/05/18/moss-enterprise-search-part-2.aspx</id><published>2008-05-19T02:26:14Z</published><updated>2008-05-19T02:26:14Z</updated><content type="html">&lt;p&gt;In this part of the series you will learn how to set up &lt;strong&gt;Search Scopes&lt;/strong&gt;. Search scopes allow to create specially defined groupings of searchable content, which can be chosen by users when executing a search.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Go to the Sharepoint 3.0 Central Administration site  &lt;li&gt;Click on the &lt;strong&gt;Search Settings&lt;/strong&gt; link in the &lt;strong&gt;Search&lt;/strong&gt; section: &lt;br /&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="90" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_thumb.png" width="170" border="0" /&gt;&lt;/a&gt;  &lt;li&gt;Click &lt;strong&gt;View Scopes&lt;/strong&gt; in the &lt;strong&gt;Scopes&lt;/strong&gt; section:&lt;br /&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_4.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="162" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_thumb_1.png" width="244" border="0" /&gt;&lt;/a&gt;&amp;nbsp; &lt;li&gt;Click &lt;strong&gt;New Scope&lt;/strong&gt; link in the toolbar: &lt;br /&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_6.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="92" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_thumb_2.png" width="227" border="0" /&gt;&lt;/a&gt;&amp;nbsp; &lt;li&gt;In the Create Scope wizard you can specify title, description and target search page for the new scope. &lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_10.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="332" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_thumb_4.png" width="555" border="0" /&gt;&lt;/a&gt;   &lt;li&gt;After pressing Ok button you get back to the View Scopes page and now you see your scope in the list:&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_14.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="190" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_thumb_6.png" width="488" border="0" /&gt;&lt;/a&gt; &lt;li&gt;Now click on &amp;quot;Add rules&amp;quot; link to start a New Scope Rule wizard. Four types of scope rules are supported: Web Address, Property Query, Content Source and All Content. In our example we want the scope to include MOSS site users, so we choose Property Query scope rule type, and as a property restriction we use &lt;strong&gt;contentclass, &lt;/strong&gt;specifying&lt;strong&gt; &lt;/strong&gt;following query: &lt;strong&gt;urn:content-class:SPSPeople&lt;/strong&gt; &lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_16.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="204" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_thumb_7.png" width="498" border="0" /&gt;&lt;/a&gt; &lt;li&gt;Then we choose how the rule will be applied to the overall scope: whether any item that matches the rule will be included in the scope, or excluded from the scope, or any result in the scope has to match this rule. In our example we choose &amp;quot;Include&amp;quot;. Then click &amp;quot;OK&amp;quot; to apply the rule. &lt;li&gt;Now, if you want this search scope to be available before the next scheduled update, you can force update by going back to &lt;strong&gt;Search Settings&lt;/strong&gt; page in &lt;strong&gt;Shared Services&lt;/strong&gt; site (use site breadcrumb &lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_22.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="19" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_thumb_10.png" width="287" border="0" /&gt;&lt;/a&gt;  ) and clicking &amp;quot;Start update now&amp;quot; link: &lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_20.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="212" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part2_129DB/image_thumb_9.png" width="603" border="0" /&gt;&lt;/a&gt; &lt;li&gt;New search copes are not added to the existing site collections automatically. We need to perform the following steps to make the scope show in the search drop down: &lt;/li&gt; &lt;ul&gt; &lt;li&gt;On the portal home page select &lt;strong&gt;Site Actions&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Site Settings&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Modify All Site Settings&lt;/strong&gt;  &lt;li&gt;Click &lt;strong&gt;Search Scopes&lt;/strong&gt; in the &lt;strong&gt;Site Collection Administration&lt;/strong&gt; section &lt;li&gt;Click &lt;strong&gt;Search Dropdown&lt;/strong&gt; link &lt;li&gt;In the scopes section choose the scopes you want to show up the search drop down, then press Ok to apply changes. &lt;li&gt;Now wait until the scheduled update completes and you should see your new search scope among those in the search drop down list.&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;img src="http://blogs.syrinx.com/aggbug.aspx?PostID=129" width="1" height="1"&gt;</content><author><name>AndreyL</name><uri>http://blogs.syrinx.com/members/AndreyL.aspx</uri></author></entry><entry><title>Custom Alert Handlers: Part 1 of 2</title><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/04/28/custom-alert-handlers-part-1-of-2.aspx" /><id>http://blogs.syrinx.com/blogs/sharepoint/archive/2008/04/28/custom-alert-handlers-part-1-of-2.aspx</id><published>2008-04-28T18:19:00Z</published><updated>2008-04-28T18:19:00Z</updated><content type="html">&lt;p&gt;Have you ever wanted to modify the contents of an Alert Email from SharePoint 2007. We had a requirement recently, from a client, to modify the contents of alert emails in a very specific way. They wanted to change not the layout but the contents, and they wanted the contents to be different based on the content type. &lt;/p&gt;
&lt;p&gt;I started by looking at what I could achieve using CAML and updating the alerttemplate.xml file. I quickly came to the decision that this approach was not viable and so switched to building an Alert Event Handler. Alert Handlers are called just before an alert email is to be sent. The handler has the ability to modify the email contents as well as decide not to send it. &lt;/p&gt;
&lt;p&gt;There are a few steps to creating an Alert Handler, these break down into three broad steps: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create and register the handler &lt;/li&gt;
&lt;li&gt;Create an alert template that requires the handler &lt;/li&gt;
&lt;li&gt;Attach the template and handler to a list or lists &lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;It is best if the alert template can be attached to a new list, prior to any users creating alerts. The reason for this is that the alert points to the alert template that the list was using at the time the alert was created. So if you update the template a list is using, you will need to update all the existing alerts . For my client they had a large number of existing alerts, so I needed to update them. This is outside the scope of this posting, but I will follow up with a part 2 that details how to do that, I created an STSASDM command for it. &lt;/p&gt;
&lt;h3&gt;Creating an Alert Handler&lt;/h3&gt;
&lt;p&gt;To create an Alert Handler, you need to first create a strong named assembly and then create a class that implements IAlertNotifyHandler. The assembly will be deployed to the Global Assembly Cache as part of a SharePoint Solution Package. The IAlertNotifyHandler interface contains only one method:&lt;/p&gt;
&lt;p&gt;public bool OnNotification(SPAlertHandlerParams ahp)&lt;/p&gt;
&lt;p&gt;This method is called just before the email is to be sent. The SPAlertHandlerParams object contains all the information about the alert, including the header and body which has already been created using the XML template. The handler method can then inspect the information and decide if the existing email should be sent, or a new one created. To send an email use the SendEmail function:&lt;/p&gt;
&lt;p&gt;SPUtility.SendEmail(web, ahp.headers, ahp.body);&lt;/p&gt;
&lt;p&gt;Alert emails come in two forms, Immediate and Digest, in my case I only needed to modify the immediate email and so I check the ahp.a.AlertFrequency to see if it was SPAlertFrequency.Immediate if it was not then I send the existing email. The alert email could also be for one of several event types: &lt;/p&gt;
&lt;p&gt;SPEventType.Add; &lt;br /&gt;SPEventType.Delete; &lt;br /&gt;SPEventType.Discussion; &lt;br /&gt;SPEventType.Modify; &lt;/p&gt;
&lt;p&gt;In my case I only wanted to modify the alert emails for add and modify events.&lt;/p&gt;
&lt;p&gt;Once the assembly has been created you will need its public key token to add to the alert template, the easiest way to find it is to add the assembly to the GAC and then display its properties - the public key token is displayed there.&lt;/p&gt;
&lt;p&gt;When debugging the code one thing to remember is that even &amp;quot;immediate&amp;quot; alerts are not immediate - they are sent every 5 minutes by and OWSTimer job. So you will need to attach to the OWSTimer process in the debugger. Andrew Connell has some useful VStudio macros that can save you a lot of key strokes and mouse clicks for attaching to the OWSTimer process (See &lt;a title="http://andrewconnell.com/blog/archive/2007/01/25/5855.aspx" href="http://andrewconnell.com/blog/archive/2007/01/25/5855.aspx"&gt;http://andrewconnell.com/blog/archive/2007/01/25/5855.aspx&lt;/a&gt;). Another thing you will likely want to do is decrease the time interval for the immediate email from 5 minutes to 1 minute - this will save you lots of waiting time. Use stsadm to chnage the timer job:&lt;/p&gt;
&lt;p&gt;stsadm -o setproperty -propertyname job-immediate-alerts -url &lt;a href="http://moss/"&gt;http://moss/&lt;/a&gt; -propertyvalue &amp;quot;every 1 minutes between 0 and 59&amp;quot; &lt;/p&gt;
&lt;p&gt;Having created your assembly you can move onto step 2 - creating the template.&lt;/p&gt;
&lt;h3&gt;Creating an Alert Template&lt;/h3&gt;
&lt;p&gt;The first thing to do here is copy the alerttemplates.xml file, if you modify this file directly you run the risk of breaking alerts. The alert templates file can be found in the 12 hive under, TEMPLATE\XML. Once you open this file you will find its huge, around 13K lines, but if you collapse the sections it will become easier to understand. The file contains 14 templates, each one for a different list type, as shown below. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/CustomAlertHandlers.Part1of2_A405/image_2.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="261" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/CustomAlertHandlers.Part1of2_A405/image_thumb.png" width="644" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Since my clients needs were for a Document Library, I copied the &lt;span style="COLOR:blue;"&gt;SPAlertTemplateType.DocumentLibrary &lt;/span&gt;template. To add an Alert Handler to the template, you need to modify the &lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Properties&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt; section and add 3 additional nodes which identify the class and the assembly that is to be called, and any properties which are to be passed to the class. For example: &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;NotificationHandlerAssembly&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;Syrinx.Alerts.AlertHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6c60c18cb10a8f1c&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;NotificationHandlerAssembly&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;NotificationHandlerClassName&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;Syrinx.Alerts.AlertHandler.ScriptingLibraryAlertNotifyHandler&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;NotificationHandlerClassName&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;NotificationHandlerProperties&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;The &lt;span style="COLOR:#a31515;"&gt;NotificationHandlerProperties&lt;/span&gt; can be used to pass a string property to your alert handler class. It can be accessed in the class using ahp.handlerProperties property. In my case I made this an XML string I could more readily parse.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Attaching the Template&lt;/h3&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;Having created the template you now need to update the list of templates in the site collection, this can be done using an stsadm command:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;stsadm -o updatealerttemplates -url &lt;a href="http://moss/"&gt;http://moss&lt;/a&gt; -filename &amp;quot;syrinx-alerttemplates.xml“&lt;/p&gt;
&lt;p&gt;Having updated the list of templates the next step is to attach the template to the specific list you want to use it. The only way to do this is through code:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;font face="helvetica"&gt;            SPAlertTemplateCollection ats = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPAlertTemplateCollection((SPWebService)_siteCollection.WebApplication.Parent);
            _newTemplate = ats[_alertTemplateName];

            &lt;span class="kwrd"&gt;if&lt;/span&gt; (_newTemplate == &lt;span class="kwrd"&gt;null&lt;/span&gt;)
            {
                &lt;span class="rem"&gt;// We did not find the specified Template.&lt;/span&gt;
                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Failed to find template &amp;quot;&lt;/span&gt; + _alertTemplateName + &lt;span class="str"&gt;&amp;quot;in the template collection.&amp;quot;&lt;/span&gt;);
            }
            _list.AlertTemplate = _newTemplate;
            _list.Update();&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;You could add this code as part of a feature receiver, however this would require you to hard code the list name. I chose to create a custom stsadm command that would allow me to attach templates to lists, providing more flexibility.&lt;/p&gt;
&lt;p&gt;Once you executed the above code (or similar) to attach the template, new alerts created on the list will use the new template. In my case, the client had a large number of existing alerts configured. These alerts retain the name of the template they were created with and so do not go through the alert handler. To chnage them you need to update the alert definitions; I will cover that in Part 2 along with creating custom STSADM commands.&lt;/p&gt;&lt;img src="http://blogs.syrinx.com/aggbug.aspx?PostID=122" width="1" height="1"&gt;</content><author><name>IanD</name><uri>http://blogs.syrinx.com/members/IanD.aspx</uri></author><category term="SharePoint" scheme="http://blogs.syrinx.com/blogs/sharepoint/archive/tags/SharePoint/default.aspx" /><category term="Development" scheme="http://blogs.syrinx.com/blogs/sharepoint/archive/tags/Development/default.aspx" /><category term="owstimer" scheme="http://blogs.syrinx.com/blogs/sharepoint/archive/tags/owstimer/default.aspx" /></entry><entry><title>Information Management Policies:  WSS 3.0 vs MOSS</title><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/04/24/information-management-policies-wss-3-0-vs-moss.aspx" /><id>http://blogs.syrinx.com/blogs/sharepoint/archive/2008/04/24/information-management-policies-wss-3-0-vs-moss.aspx</id><published>2008-04-24T19:56:38Z</published><updated>2008-04-24T19:56:38Z</updated><content type="html">&lt;p&gt;I just wanted to point out a potentially hazardous piece of information everyone out in the land of SharePoint should be aware of.&lt;/p&gt; &lt;p&gt;For those (like us) that are using both SharePoint and WSS 3.0 extensively, and often as platforms for development, it is relatively easy to confuse the two during development and testing, especially when you are deploying all your code and assuming the same basic infrastructure is available to you while ignoring what you consider to be out of the box functionality in the platform.&lt;/p&gt; &lt;p&gt;It is important to realize that Information Management Policies are not supported in WSS 3.0.&amp;nbsp; Some people believe that Microsoft simple doesn&amp;#39;t ship any of the ones that you would normally receive with a full MOSS license.&amp;nbsp; Items such as the Auditing features, bar coding, labels, etc.&amp;nbsp; This is all true.&amp;nbsp; Some people believe that you can, however, write you own custom policies for WSS 3.0.&amp;nbsp; This is &lt;strong&gt;NOT&lt;/strong&gt; the case.&amp;nbsp; The underlying Microsoft.Office.Policy assembly is not included with, or installed by WSS 3.0.&amp;nbsp; When you attempt to register your custom policy you will receive an error about the assembly not being found.&lt;/p&gt; &lt;p&gt;There are a couple lessons here (aren&amp;#39;t there always).&amp;nbsp; The first is to know your product and platform, and keep it in mind as you prepare features and architect your solutions.&amp;nbsp; The second is to keep your SharePoint development environments (VPCs I hope) as close in software installations and versions to your production environment as possible.&lt;/p&gt; &lt;p&gt;I hope this helps,&lt;/p&gt; &lt;p&gt;-Ryan&lt;/p&gt;&lt;img src="http://blogs.syrinx.com/aggbug.aspx?PostID=121" width="1" height="1"&gt;</content><author><name>RyanT</name><uri>http://blogs.syrinx.com/members/RyanT.aspx</uri></author></entry><entry><title>Records Center Illustrated Primer - Part III</title><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/04/24/records-center-illustrated-primer-part-iii.aspx" /><id>http://blogs.syrinx.com/blogs/sharepoint/archive/2008/04/24/records-center-illustrated-primer-part-iii.aspx</id><published>2008-04-24T18:10:57Z</published><updated>2008-04-24T18:10:57Z</updated><content type="html">&lt;p&gt;Now for our final step - to test and enjoy the fruits of our labor. The whole idea is that users can create Analysis Documents anywhere they need to, and not have to know about records management/retention/etc. All they do is send their Analysis Documents to the Records Center, and Records Center will look at the Content Type, determine the Records Routing based on it, and file the document in the correct Document Library in Records Center. From there the Policy we set up will manage the document lifecycle in the Document Library in Records Center, without any user intervention (and with complete auditing/logging to prove we&amp;#39;ve done what we said we were going to). This makes compliance efforts a lot easier to manage. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;In a Document Library in your SharePoint site (you can create a new one or use an existing one), we&amp;#39;ll need to configure it to allow our new Content Type of Analysis Document. Open the Settings on your Document Library...&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc027.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="351" alt="rc027" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc027_thumb.jpg" width="526" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;And choose the Advanced Settings link&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc028.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="244" alt="rc028" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc028_thumb.jpg" width="194" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Check the radio button for &amp;quot;Allow management of content types&amp;quot;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc029.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="146" alt="rc029" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc029_thumb.jpg" width="572" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Click the link for &amp;quot;Add from existing site content types&amp;quot;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc030.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="419" alt="rc030" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc030_thumb.jpg" width="279" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;And add your newly-created Content Type (and any others you want to allow in this Document Library) and click OK. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc031.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="345" alt="rc031" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc031_thumb.jpg" width="592" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;We&amp;#39;re also going to re-order the menu under &amp;quot;New&amp;quot; in this Document Library in order to default to &amp;quot;Analysis Document&amp;quot; first. The link to do this is at the bottom of the Content Types section:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc032.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="189" alt="rc032" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc032_thumb.jpg" width="595" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;You can also look at the superset of columns for all Content Types allowed in this Document Library:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc033.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="293" alt="rc033" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc033_thumb.jpg" width="573" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Now if we select &amp;quot;New&amp;quot; from our Document Library, we can create an Analysis Document&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc034.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="197" alt="rc034" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc034_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;...but not if you are on Office 2003. Since we created that &amp;quot;Origin&amp;quot; column of metadata that is required, and Office 2003 can&amp;#39;t provide it to us, you&amp;#39;ll get an error message that tells you to use &amp;quot;Upload Document&amp;quot; instead. During the upload in the browser, SharePoint will prompt you for the Origin, and that metadata will accompany your document into the library.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc035a.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="165" alt="rc035a" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc035a_thumb.jpg" width="563" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;However if you have Office 2007, Word will open and auto-magically gather the required columns right then and there. Pretty slick, and a good reason to upgrade to Office 2007! The combination of Office 2007 and MOSS is greater than the sum of its parts...&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc035b_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="410" alt="rc035b" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc035b_thumb.jpg" width="545" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Once you have created your new Analysis Document, you can use the &amp;quot;Send To&amp;quot; in MOSS to send this document to your Record Center &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc036.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="431" alt="rc036" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc036_thumb.jpg" width="549" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;You will get a confirmation dialog letting you know your document is now in the Record Center&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc037.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="106" alt="rc037" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc037_thumb.jpg" width="534" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;If we now switch over to our Record Center we can see that a new folder has been created under our Analysis Documents Document Library. The naming convention for the folder is year, month, day, and time of creation with GMT offset. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc038.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="312" alt="rc038" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc038_thumb.jpg" width="616" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Clicking on this folder, we can see that our document has been replicated inside it. Even if the original document library now deletes this document, the copy in Record Center will remain and be managed by our Policy.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc039.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="180" alt="rc039" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartIII_BC93/rc039_thumb.jpg" width="618" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I hope you&amp;#39;ve enjoyed this series, and please feel free to contact us for help with your SharePoint projects! Email us at info at syrinx dot com, or call us toll-free at 888-579-7469, option 1 on the IVR menu (888-5-SYRINX on your phone). &lt;/p&gt;&lt;img src="http://blogs.syrinx.com/aggbug.aspx?PostID=120" width="1" height="1"&gt;</content><author><name>AndrewG</name><uri>http://blogs.syrinx.com/members/AndrewG.aspx</uri></author></entry><entry><title>MOSS Enterprise Search. Part 1</title><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/04/19/moss-enterprise-search-part-1.aspx" /><id>http://blogs.syrinx.com/blogs/sharepoint/archive/2008/04/19/moss-enterprise-search-part-1.aspx</id><published>2008-04-19T16:23:24Z</published><updated>2008-04-19T16:23:24Z</updated><content type="html">&lt;p&gt;In this series of MOSS Enterprise Search How-To&amp;#39;s I&amp;#39;d like to share the knowledge I received from a recent training on setting up the MOSS search engine. In this post I will show how to setup content sources and crawling rules.&lt;/p&gt; &lt;h5&gt;Setting up content sources:&lt;/h5&gt; &lt;p&gt;1. Navigate to the Search Administration page&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;- Open &lt;strong&gt;SharePoint 3.0 Central Administration&lt;/strong&gt; web page under&amp;nbsp; Start -&amp;gt; Administrative Tools and click on &lt;strong&gt;SharedServices&lt;/strong&gt; link on the left side navigation menu under &lt;strong&gt;Shared Services Administration&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part1_B1F3/image_10.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="249" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part1_B1F3/image_thumb_4.png" width="382" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;- In &lt;strong&gt;Search&lt;/strong&gt; section click on &lt;strong&gt;Search Settings&lt;/strong&gt;:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part1_B1F3/image_12.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="97" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part1_B1F3/image_thumb_5.png" width="193" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;2.&amp;nbsp; Add content sources and start crawling:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;- Click on the link to the right of &amp;quot;Content Sources&amp;quot;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part1_B1F3/image_6.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="277" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part1_B1F3/image_thumb_1.png" width="424" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;- On the &amp;quot;Manage Content Sources&amp;quot; page click on &lt;strong&gt;New Content Source&lt;/strong&gt; button&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part1_B1F3/image_22.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="134" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part1_B1F3/image_thumb_10.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;- Add Content Source Page contains various settings defining the content source you want to setup.&amp;nbsp; &lt;/p&gt; &lt;p&gt;First you need to add a name for the content source and decide on the content source type; &lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part1_B1F3/image_24.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="270" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part1_B1F3/image_thumb_11.png" width="444" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;Here I would like to talk about difference between first two content types (SharePoint Sites and Web Sites):&lt;/p&gt; &lt;ul&gt; &lt;li&gt;They both allow you to specify Start Addresses for crawling; for a&amp;nbsp; Web Site content type this can include any content, from a single web page to an entire web site; for a SharePoint Sites type this can only include MOSS sites and WSS sites;  &lt;li&gt;For Crawl Settings, this is where the difference between the two comes: in a Web Sites Content Source, you can specify that you only want to crawl the server of which you entered the start address, or only crawl the first page, or provide custom crawl settings, where you can specify Server Hops and Page Depth; &lt;br /&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part1_B1F3/image_8.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="528" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part1_B1F3/image_thumb_2.png" width="377" border="0" /&gt;&lt;/a&gt;&amp;nbsp; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt; &lt;li&gt;Page Depth - number of links to follow within the same hostname; for example if you specify Page Depth of 1, crawler will follow links from the home page and then stop;  &lt;li&gt;Server Hops are the number of host name changes that the crawler can make;  &lt;li&gt;Another difference is that SharePoint content source allows to crawl a single WSS site collection, which you can&amp;#39;t do with a Web Site content source, e.g. if you want to crawl a particular site collection you should put its URL in a SharePoint content source like &lt;a href="http://servername.com/sites/yourcollection"&gt;http://servername.com/sites/yourcollection&lt;/a&gt; and select &amp;quot;Crawl only the SharePoint site of each start address&amp;quot;. If you put the same exact address for a Web Server content source, it will start crawling from the top address &lt;a href="http://servername.com"&gt;http://servername.com&lt;/a&gt; because it&amp;#39;s the default for all Sharepoint content: &lt;br /&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part1_B1F3/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="339" alt="image" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/MOSSEnterpriseSearch.Part1_B1F3/image_thumb.png" width="322" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;And the last step is to create a schedule (or select an existing one) for full and incremental crawls of this content source.&lt;/p&gt; &lt;p&gt;And if you select the &amp;quot;Start full crawl of this content source&amp;quot; check box then the crawl starts right after you click &amp;quot;Ok&amp;quot; button to save the content source settings. Otherwise the crawl will work according to the specified schedule.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;In the next post of the series I will show how to create search scopes&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.syrinx.com/aggbug.aspx?PostID=116" width="1" height="1"&gt;</content><author><name>AndreyL</name><uri>http://blogs.syrinx.com/members/AndreyL.aspx</uri></author></entry><entry><title>Records Center Illustrated Primer - Part II</title><link rel="alternate" type="text/html" href="http://blogs.syrinx.com/blogs/sharepoint/archive/2008/04/16/records-center-illustrated-primer-part-ii.aspx" /><id>http://blogs.syrinx.com/blogs/sharepoint/archive/2008/04/16/records-center-illustrated-primer-part-ii.aspx</id><published>2008-04-16T17:19:42Z</published><updated>2008-04-16T17:19:42Z</updated><content type="html">&lt;p&gt;We resume our series with creating a Document Library in the Records Center to hold our incoming Analysis Documents. When we do a &amp;quot;Send To&amp;quot; from where the document was created, and push it to Records Center, it needs somewhere to land. Go to the Records Center Site we created, and create a Document Library&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc013_1.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="109" alt="rc013" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc013_thumb_1.jpg" width="385" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...then...&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc014.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="219" alt="rc014" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc014_thumb.jpg" width="263" border="0" /&gt;&lt;/a&gt;&amp;nbsp; ...and...&lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc015.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="363" alt="rc015" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc015_thumb.jpg" width="513" border="0" /&gt;&lt;/a&gt; ...which will create...&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc016.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="283" alt="rc016" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc016_thumb.jpg" width="504" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Next is the important step that distinguishes this document library from a &amp;quot;regular&amp;quot; one - adding the Policy we created that describes how to handle disposition of records contained in it over time. Go to Document Library Settings in our newly created Document Library, and under Permissions and Management choose Information Management Policy Settings&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc018.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="224" alt="rc018" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc018_thumb.jpg" width="437" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc019_1.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="307" alt="rc019" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc019_thumb_1.jpg" width="442" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Specify our Site Collection Policy that we created before, &amp;quot;Delete docs after 3 years&amp;quot; and click OK&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc020.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="208" alt="rc020" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc020_thumb.jpg" width="449" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;To create a new Record Routing, click New under the Record Routings (there&amp;#39;s already a default &amp;quot;Unclassified Records&amp;quot; one, but we want our Analysis Docs to follow a different routing). &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc021.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="266" alt="rc021" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc021_thumb.jpg" width="333" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc022.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="203" alt="rc022" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc022_thumb.jpg" width="343" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Important Note: The Location indicates the name of the Document Library where the records will be routed to. Be careful and spell this correctly (it would have been nice if this was a drop down where you could choose from a list of all Document Libraries in this site instead). We also created an alias of the singular &amp;quot;Analysis Document&amp;quot; without the &amp;quot;s&amp;quot; on the end, in case people want to refer to the routing in its singular form. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc023.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="409" alt="rc023" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc023_thumb.jpg" width="474" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Now we have the &amp;quot;landing strip&amp;quot; set up for our documents, how to we instruct them to fly there? We need to set up the External Service Connection to allow Web-Services-based submission into our document library, using &amp;quot;Send To&amp;quot;. We&amp;#39;ve been working in your SharePoint site thus far. Now you need to jump over to Central Administration, which may be on a different port/URL at your company. Under the Application Management tab in Central Administration, choose Records center (first entry under External Service Connections)&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc024.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="670" alt="rc024" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc024_thumb.jpg" width="446" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;This part is a little tricky. You need to figure out the URL of your Web Services page for your Records Center site. It is the base URL for your site, with /trc/_vti_bin/officialfile.asmx appended to it.&amp;nbsp; Recall that the base URL is the one we chose back in the &amp;quot;&lt;em&gt;Use the Records Center Template, which is under the Enterprise group. Give your Record Center a name (Records Center, Record Center, etc) and URL.&lt;/em&gt;&amp;quot; step from Part I of this article series (diagram of that step is repeated here, for reference):&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc003.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="453" alt="rc003" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc003_thumb.jpg" width="540" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;For example, your URL might look like &lt;a href="http://mysite.com/recordcenter/trc/_vti_bin/officialfile.asmx"&gt;http://mysite.com/recordcenter/trc/_vti_bin/officialfile.asmx&lt;/a&gt;. This goes in the URL field of &amp;quot;Configure Connection to Records Center&amp;quot;. A little sanity check to make sure you have the URL right before you click OK - open a new browser window, and try out the URL in there. You should see the .asmx page come up:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc026.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="366" alt="rc026" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc026_thumb.jpg" width="541" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;You can then cut/copy that URL back to your original browser window and paste it into the URL field in Configure Connection to Records Center, confident that you have the URL right. Click OK and now we&amp;#39;re ready to start pushing documents into the Records Center using &amp;quot;Send To&amp;quot;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc025.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="292" alt="rc025" src="http://blogs.syrinx.com/blogs/sharepoint/WindowsLiveWriter/RecordsCenterIllustratedPrimerPartII_F783/rc025_thumb.jpg" width="450" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;In the next part of this series, we&amp;#39;ll create a Document Library that the users will use day-to-day, and test their ability to route documents into the Analysis Documents library in Records Center using &amp;quot;Send To&amp;quot;.&lt;/p&gt;&lt;img src="http://blogs.syrinx.com/aggbug.aspx?PostID=113" width="1" height="1"&gt;</content><author><name>AndrewG</name><uri>http://blogs.syrinx.com/members/AndrewG.aspx</uri></author></entry></feed>