<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Corey Roth - DotNetMafia.com - Tip of the Day</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/default.aspx</link><description>Bringing you the latest time saving tips for SharePoint, MOSS 2007, ASP.NET, LINQ, and Visual Studio 2008</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/CoreysDotNetTipOfTheDay" type="application/rss+xml" /><item><title>How to: Configure Enterprise Search to index a file share</title><link>http://feedproxy.google.com/~r/CoreysDotNetTipOfTheDay/~3/pZilSpz0JhI/how-to-configure-enterprise-search-to-index-a-file-share.aspx</link><pubDate>Wed, 01 Jul 2009 14:53:42 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:929</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=929</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/07/01/how-to-configure-enterprise-search-to-index-a-file-share.aspx#comments</comments><description>&lt;p&gt;I am sticking with my series of introductory Enterprise Search topics today by writing up some details on how to index a file share.&amp;#160; Setting up a file share index is pretty simple, but there are a few things to know, so that is the point of today’s post.&amp;#160; &lt;/p&gt;  &lt;p&gt;The first step of indexing a file share is identifying your crawl account.&amp;#160; This is the account that will be used to index the file share (unless specified differently with a crawl rule) and therefore will need read access to the file share.&amp;#160; Start by granting read access on this account to any folder, subfolder, and file that you want indexed.&amp;#160; Any folder this account doesn’t have access to will be excluded.&amp;#160; If you are not too familiar with how permissions work on file shares, there are two places that an account must have permission: the Sharing tab and the Security tab.&amp;#160; You use the Security tab to grant access to an account on the file system itself.&amp;#160; This would be the same if that user is logged into that machine directly and trying to view the files.&amp;#160; The Sharing tab is what permissions the user has when accessing that folder over the network.&amp;#160; In order for an account to be able to read files over the network, the user must have read permission on both tabs.&amp;#160; Here is an example of what mine looks like for my crawl account MOSS_Setup.&amp;#160; Note: that screenshot is from Windows Server 2008.&amp;#160; Pervious versions looked a bit different.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/EnterpriseSearchSharingTab_07B6E587.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="EnterpriseSearchSharingTab" border="0" alt="EnterpriseSearchSharingTab" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/EnterpriseSearchSharingTab_thumb_2B8F9714.png" width="332" height="238" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Security Tab with read access:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/EnterpriseSearchSecurityTab_7D361166.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="EnterpriseSearchSecurityTab" border="0" alt="EnterpriseSearchSecurityTab" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/EnterpriseSearchSecurityTab_thumb_6EF79876.png" width="248" height="320" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;After you have configured permissions on your account, you need to go to the SSP –&amp;gt; Search Administration –&amp;gt; Content Sources.&amp;#160; Create a new content source and give it a name.&amp;#160; I called mine &lt;em&gt;File Share&lt;/em&gt; in this case. Then you need to specify a start address.&amp;#160; You can specify the path as file://server/share or \\server\share.&amp;#160; Enter the path to one or more file share sand then save the content source.&amp;#160; You can also specify whether or not to index subfolders or not here. This is what my file share looks like.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/EnterpriseSearchFileShareContentSource_4A660AF2.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="EnterpriseSearchFileShareContentSource" border="0" alt="EnterpriseSearchFileShareContentSource" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/EnterpriseSearchFileShareContentSource_thumb_6A14E4BA.png" width="502" height="315" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;One thing to note before crawling is that, it will only index file types that you have allowed on the File Types page.&amp;#160; For example PDF is not included by default.&amp;#160; Add any extensions that you might need.&amp;#160; If you need to add any file types, specify the extension without the period (i.e.: pdf not .pdf).&amp;#160; You can also add &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/04/30/how-to-add-a-file-type-to-enterprise-search-programmatically.aspx"&gt;file types programmatically&lt;/a&gt;.&amp;#160; This alone is enough to get it indexed, but if you want the contents of each file indexed, you will also need to install an appropriate IFilter for any new file type.&lt;/p&gt;  &lt;p&gt;Once your file types are in order, you are ready to begin a full crawl.&amp;#160; After the crawl is completed, view the Crawl Log and verify that your files were indexed.&amp;#160; If there was a permissions problem or any other issues accessing the file share, you will see it here.&amp;#160; At this point you can go to your search center and try a search.&amp;#160; If all goes well, you should see some search results.&amp;#160; To see what got indexed, you can easily write a keyword query to show everything in the content source.&amp;#160; For example:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;ContentSource:”File Share”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The results would look something like this.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/EnterpriseSearchFileShareResults_7B854592.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="EnterpriseSearchFileShareResults" border="0" alt="EnterpriseSearchFileShareResults" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/EnterpriseSearchFileShareResults_thumb_4D2BBFE5.png" width="522" height="364" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;As you can see it’s pretty simple to index file shares.&amp;#160; For more information on querying by &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/03/11/how-to-specify-a-content-source-using-the-keyword-syntax.aspx"&gt;content source&lt;/a&gt;, check out this post.&lt;/p&gt;  &lt;p&gt;Follow me on &lt;a href="http://twitter.com/coreyroth"&gt;twitter&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=929" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/CoreysDotNetTipOfTheDay/~4/pZilSpz0JhI" height="1" width="1"/&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><feedburner:origLink>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/07/01/how-to-configure-enterprise-search-to-index-a-file-share.aspx</feedburner:origLink></item><item><title>Enterprise Search Roundup</title><link>http://feedproxy.google.com/~r/CoreysDotNetTipOfTheDay/~3/GyVf7_KfSs4/enterprise-search-roundup.aspx</link><pubDate>Thu, 25 Jun 2009 15:20:05 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:927</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=927</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/25/enterprise-search-roundup.aspx#comments</comments><description>&lt;p&gt;I’ve made quite a few Enterprise Search posts and since I have a few talks coming up, I thought it might be a good idea to group up some of the posts for people that may be new learning it.&amp;#160; I hope you may find some of these useful.&lt;/p&gt;  &lt;p&gt;Customization&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/24/customizing-enterprise-search-results.aspx"&gt;Customizing Enterprise Search Results&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/03/09/how-to-build-a-custom-advanced-search-control-for-enterprise-search.aspx"&gt;How to: Build a custom advanced search control for Enterprise Search&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/03/31/how-to-create-a-scope-for-a-custom-list-template-type.aspx"&gt;How to: Create a scope for a custom List Template Type&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/10/31/introducing-document-link-handler-for-moss-2007-enterprise-search.aspx"&gt;Document Link Handler for Enterprise Search&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Administration&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/12/04/sharing-an-index-between-sharepoint-farms.aspx"&gt;Sharing an Index between SharePoint Farms&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/08/changing-the-maxmium-file-size-in-your-enterprise-search-index.aspx"&gt;Changing the Maximum File Size in the Enterprise Search Index&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Querying Results&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/03/06/how-to-use-the-moss-enterprise-search-fulltextsqlquery-class.aspx"&gt;How to: Use the MOSS Enterprise Search FullTextSqlQuery class&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx"&gt;How to: Use the MOSS Enterprise Search KeywordQuery class&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/07/17/how-to-query-search-using-the-web-service.aspx"&gt;How to: Query Search using the Web Service&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/23/exposing-enterprise-search-results-using-rss.aspx"&gt;Exposing Enterprise Search Results with RSS&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/12/11/string-in-columns-returned-from-keywordquery-execute.aspx"&gt;String[] in columns returned from KeywordQuery.Execute&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/09/29/how-to-specify-the-properties-returned-in-a-keyword-query-when-using-the-search-web-service.aspx"&gt;How to: Specify the Properties Returned in a Keyword Query when using the Search Web Service&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/07/31/how-to-search-your-site-columns-with-enterprise-search.aspx"&gt;How to search your site columns with Enterprise Search&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/03/25/using-linq-to-make-enterprise-search-results-more-usable.aspx"&gt;Using LINQ to make Enterprise Search Results more usable&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/03/11/how-to-specify-a-content-source-using-the-keyword-syntax.aspx"&gt;How to: Specify a Content Source using the Keyword Syntax&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/03/10/specifying-scope-s-with-the-keywordquery-class.aspx"&gt;Specifying Scope with the KeywordQuery Class&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2007/09/19/working-with-managed-properties-in-enterprise-search.aspx"&gt;Working with Managed Properties in Enterprise Search&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Other Development&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/29/how-to-create-a-scope-display-group-using-the-api.aspx"&gt;How to: Create a Scope Display Group with the API&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/26/how-to-delete-crawled-properties.aspx"&gt;How to: Delete Crawled Properties&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/04/30/how-to-add-a-file-type-to-enterprise-search-programmatically.aspx"&gt;How to: Add a File Type to Enterprise Search programmatically&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Wildcard Search&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/20/announcing-custom-sort-order-support-for-wildcardsearchwebpart.aspx"&gt;Custom Sort Orders with Wildcard Search&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/10/14/wildcard-search-version-1-0-release-3.aspx"&gt;Wildcard Search Release 3&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/09/18/what-you-give-up-with-full-text-sql-queries-using-wildcard-search.aspx"&gt;What you give up with Full Text SQL Queries using Wildcard Search&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/09/17/using-wildcard-search-web-part-to-search-for-recently-modified-files.aspx"&gt;Using Wildcard Search Web Part to search for recently modified files&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;BDC&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2007/07/19/setting-appropriate-permissions-on-your-bdc-lobsysteminstance-to-work-with-enterprise-search.aspx"&gt;Setting permissions on your BDC LobSystemInstance for Enterprise Search&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Errors&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/19/the-object-was-not-found-the-item-was-deleted-because-it-was-either-not-found-or-the-crawler-was-denied-access-to-it.aspx"&gt;Object not found. Crawler was denied access.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/03/25/error-this-crawl-has-been-paused-by-the-search-system-while-a-new-query-server-is-added-after-the-new-query-server-is-online-the-crawl-will-be-resumed.aspx"&gt;Crawl has been paused&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/02/24/the-search-service-is-currently-offline-visit-the-services-on-server-page-in-sharepoint-central-administration-to-verify-whether-the-service-is-enabled-this-might-also-be-because-an-indexer-move-is-in-progress.aspx"&gt;Search Service is currently offline.&amp;#160; An indexer move may be in progress&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/12/29/enterprise-search-crawl-error-the-parameter-is-incorrect.aspx"&gt;The Parameter is incorrect&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/05/01/error-hresult-e-fail-has-been-returned-from-a-call-to-a-com-component.aspx"&gt;HRESULT E_FAIL has been returned from a call to a COM component&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/02/26/argumentnullexception-when-calling-enterprise-search-web-service.aspx"&gt;ArgumentNullException when calling Enterprise Search web service&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/28/help-my-searchbox-web-part-won-t-submit.aspx"&gt;SearchBoxWebPart won’t submit&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The above list is some of the more useful posts that you may be interested in with Enterprise Search.&amp;#160; I didn’t include every post, so if you are interested in more, check out the &lt;a href="http://www.dotnetmafia.com/tags/Enterprise+Search/default.aspx?PageIndex=1"&gt;Enterprise Search&lt;/a&gt; tag.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=927" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/CoreysDotNetTipOfTheDay/~4/GyVf7_KfSs4" height="1" width="1"/&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><feedburner:origLink>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/25/enterprise-search-roundup.aspx</feedburner:origLink></item><item><title>Customizing Enterprise Search Results</title><link>http://feedproxy.google.com/~r/CoreysDotNetTipOfTheDay/~3/JOohZN43uOY/customizing-enterprise-search-results.aspx</link><pubDate>Wed, 24 Jun 2009 18:29:01 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:926</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=926</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/24/customizing-enterprise-search-results.aspx#comments</comments><description>&lt;p&gt;I’ve seen a number of posts by people asking about how to customize the search results screen in MOSS Enterprise Search, so I thought I would take a little bit of time to describe how to do it.&amp;#160; Since this goes well with the &lt;a href="http://www.sharepointsaturday.org/ozarks/Pages/meetings.aspx"&gt;two new talks&lt;/a&gt; I am building on Enterprise Search for &lt;a href="http://search.twitter.com/search?q=%23SPSOzarks"&gt;SPSOzarks&lt;/a&gt;, I figured this would be a good time.&amp;#160; To customize search results, you will need to start by going to the results.aspx page of your Search Center.&amp;#160; If you don’t want to experiment on your existing Search Center, you can always create a new one.&amp;#160; Edit the page, and then modify the CoreResultsWebPart.&amp;#160; Some of the things we can change can be done via properties. However, most customizations will involve changing XSL.&lt;/p&gt;  &lt;p&gt;In the Results Display / Views section, you can customize the number of results per page as well as how much text is included in the summary of each result.&amp;#160; In the Results Query Option section, you can enable search term stemming and turn off duplicate removal.&amp;#160; Although I typically leave these options alone.&amp;#160; The Selected Columns field we will talk about in a bit when we discuss adding more data to the search results page.&amp;#160; You can also choose to sort by relevance or modified date here.&amp;#160; Sorting by other managed properties is not an option with the CoreResultsWebPart.&amp;#160; Although if you use the &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/20/announcing-custom-sort-order-support-for-wildcardsearchwebpart.aspx"&gt;Wildcard Search&lt;/a&gt; web part you can sort by other managed properties because it uses a Full Text SQL Query.&lt;/p&gt;  &lt;p&gt;The Cross-Web Part query ID is used to group all of the other search web parts on the page with the same set of results.&amp;#160; The default value, &lt;em&gt;User Query&lt;/em&gt;, uses the value the user typed into the search box for the query.&amp;#160; You can use the other values Query2, Query3, etc.. to group a different set of results together when using a fixed keyword query.&amp;#160; The Fixed Keyword Query can be used to hard code a pre-determined query on a results page.&amp;#160; Useful if you always want to display the same thing on a given page.&amp;#160; If you use this option, be sure and change the Cross-Web Part Query ID to something besides User Query.&lt;/p&gt;  &lt;p&gt;Those are some of the basic customizations you can do, but the most common thing people want is to change the formatting or add additional data to the search results page.&amp;#160; The way the CoreResultsWebPart (or CRWP for short) displays results is with an XSL transform.&amp;#160; I won’t go much into changing the formatting since all it really involves is changing the HTML inside the XSL document, but I will cover how to display more data in your results.&amp;#160; The first thing you need to know is that any thing you want to display has to be a managed property.&amp;#160; That means anything you have mapped to a managed property can be displayed in the search results.&amp;#160; Before adding your new managed properties to the XSL document, you have to tell the CRWP to include your custom managed properties.&amp;#160; You do this by modifying the Selected Columns field.&amp;#160; Clicking on it gives you a fancy editor that looks like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/EnterpriseSearchSelectedColumns_567D8F82.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="EnterpriseSearchSelectedColumns" border="0" alt="EnterpriseSearchSelectedColumns" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/EnterpriseSearchSelectedColumns_thumb_6781BD65.png" width="421" height="243" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The editor doesn’t format things very well, but the syntax is pretty simple.&amp;#160; To add your own Managed Property, find a place at the end before the &lt;em&gt;Columns&lt;/em&gt; element closes and add a &lt;em&gt;Column&lt;/em&gt; element.&amp;#160; For example, to add a managed property called &lt;em&gt;DocumentType&lt;/em&gt;, it would like this:&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&amp;lt;&lt;span style="color:#cc7832;"&gt;Column&lt;/span&gt; &lt;span style="color:silver;"&gt;Name&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;DocumentType&lt;/span&gt;&amp;quot; /&amp;gt;&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;I believe the case is sensitive.&amp;#160; If you get the managed property name wrong, you will get an error when you try to execute a search query.&amp;#160; The next thing you need to do is edit the XSL document to include your new managed property.&amp;#160; If you click the XSL Editor button, you will get a similar screen.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/EnterpriseSearchXSL_2DFEAD6E.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="EnterpriseSearchXSL" border="0" alt="EnterpriseSearchXSL" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/EnterpriseSearchXSL_thumb_1834C511.png" width="442" height="305" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can edit the XSL directly in here, but I would recommend, you copy and paste the whole thing into a file somewhere and store it in source control.&amp;#160; It’s quite easy to forget to close a tag or something else and get an error displaying your search results.&amp;#160; Saving the content of the XSL somewhere gives you something to fall back on in case you mess anything up.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Now there is a lot in this XSL file,but there really is not that much you are concerned with.&amp;#160; If you want to customize result, the place to start is with the Result template, look for the following line.&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&amp;lt;&lt;span style="color:#8f91af;font-weight:normal;"&gt;xsl:template&lt;/span&gt; &lt;span style="color:silver;"&gt;match&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;Result&lt;/span&gt;&amp;quot;&amp;gt;&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;This template gets executed for each search result.&amp;#160; The &lt;em&gt;srch-Icon&lt;/em&gt; span tag displays the icon next to the search result.&amp;#160; The &lt;em&gt;srch-Title&lt;/em&gt; span tag displays the title and link to the result.&amp;#160; The $url variable has the path to the search result.&amp;#160; It makes a call to a special template to highlight keyword hits in the title.&amp;#160; After this point, is a good place to add your own managed properties.&amp;#160; For example, I want to display the &lt;em&gt;DocumentType&lt;/em&gt; managed property mentioned above.&amp;#160; The best thing to use is a span with a class of &lt;em&gt;srch-Description&lt;/em&gt;.&amp;#160; Then it is just simple XSL with the value-of element to display the data.&amp;#160; The one thing to note is that in this XSL document, all Managed Properties must be specified in all lower case.&amp;#160; I have no idea why it was implemented this way, but if you try to match the case you used in the Selected Columns XML document, it simply will not work.&amp;#160; Here is what it looks like.&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&amp;lt;&lt;span style="color:#cc7832;"&gt;div&lt;/span&gt; &lt;span style="color:silver;"&gt;class&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;srch-Description&lt;/span&gt;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; Document Type: &amp;lt;&lt;span style="color:#8f91af;font-weight:normal;"&gt;xsl:value-of&lt;/span&gt; &lt;span style="color:silver;"&gt;select&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;documenttype&lt;/span&gt;&amp;quot; /&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;lt;/&lt;span style="color:#cc7832;"&gt;div&lt;/span&gt;&amp;gt;&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;After this, the description, document size, author, and modified date are displayed.&amp;#160; All of these can easily be customized, moved around, wrapped in other elements, or formatted differently.&amp;#160; Here is what my new search results screen looks like.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/EnterpriseSearchResults_3E96A85C.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="EnterpriseSearchResults" border="0" alt="EnterpriseSearchResults" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/EnterpriseSearchResults_thumb_252EA522.png" width="522" height="354" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As you can see, it’s not difficult at all to add your own managed properties.&amp;#160; I’ve customized this page in many different ways.&amp;#160; It doesn’t have to look like a search results page at all.&amp;#160; You can make it a grid, a list or whatever.&amp;#160; This makes it very easy to provide a rich search experience with all of the additional data that your users need.&amp;#160; &lt;/p&gt;  &lt;p&gt;Follow me on &lt;a href="http://twitter.com/coreyroth"&gt;twitter&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=926" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/CoreysDotNetTipOfTheDay/~4/JOohZN43uOY" height="1" width="1"/&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><feedburner:origLink>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/24/customizing-enterprise-search-results.aspx</feedburner:origLink></item><item><title>Exposing Enterprise Search Results using RSS</title><link>http://feedproxy.google.com/~r/CoreysDotNetTipOfTheDay/~3/sJDk-5R0wMw/exposing-enterprise-search-results-using-rss.aspx</link><pubDate>Tue, 23 Jun 2009 19:44:39 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:925</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=925</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/23/exposing-enterprise-search-results-using-rss.aspx#comments</comments><description>&lt;p&gt;I am working on a talk about how to get data out of Enterprise Search for &lt;a href="http://search.twitter.com/search?q=%23SPSOzarks"&gt;#SPSOzarks&lt;/a&gt;.&amp;#160; One of my clients particularly has asked me a lot on this subject.&amp;#160; Sure you can get to the data by using the API with &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx"&gt;KeywordQuery&lt;/a&gt;, &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/03/06/how-to-use-the-moss-enterprise-search-fulltextsqlquery-class.aspx"&gt;FullTextSqlQuery&lt;/a&gt;, or the &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/07/17/how-to-query-search-using-the-web-service.aspx"&gt;Web Service&lt;/a&gt;.&amp;#160; However, sometimes the simplest solution is best.&amp;#160; If you don’t need any custom managed properties, just need a keyword query, and just want some XML with search results in it, why not use the built in RSS feed.&amp;#160; It in fact is quite easy to use.&amp;#160; Consider the following search results.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SearchResults_319A1AB7.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="SearchResults" border="0" alt="SearchResults" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SearchResults_thumb_799826D3.png" width="629" height="439" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The RSS button you see on the Search Results page works must like the CoreResultsWebPart does in that it uses the &lt;a href="http://msdn.microsoft.com/en-us/library/aa637082.aspx"&gt;query string syntax&lt;/a&gt; to execute Keyword queries.&amp;#160; If you look at the link that the RSS button provides, it makes a call to the application page at &lt;em&gt;_layouts/srchrss.aspx&lt;/em&gt; and it makes use of the same &lt;em&gt;k&lt;/em&gt; and &lt;em&gt;s&lt;/em&gt; parameters that the CoreResultsWebPart does plus a few extra ones.&amp;#160; The &lt;em&gt;k&lt;/em&gt; parameter is for the user’s keyword query (in this case, we searched for the word &lt;em&gt;Company&lt;/em&gt;).&amp;#160; The &lt;em&gt;s&lt;/em&gt; parameter specifies the scope.&amp;#160; You can also specify a &lt;em&gt;start &lt;/em&gt;parameter to start the results on a specific record.&amp;#160; There is also a u parameter (which I don’t know what it does) and a source parameter to specify a referring URL.&amp;#160; So to construct an RSS feed for the above results, it would look something like the following:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://&amp;lt;servername&amp;gt;/&amp;lt;SearchCenterUrl&amp;gt;/_layouts/srchrss.aspx?k=company&amp;amp;s=All%20Sites"&gt;//_layouts/srchrss.aspx?k=company&amp;amp;s=All%20Sites&amp;quot;&amp;gt;http://&amp;lt;servername&amp;gt;/&amp;lt;SearchCenterUrl&amp;gt;/_layouts/srchrss.aspx?k=company&amp;amp;s=All%20Sites&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It would yield XML that looks like this.&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&amp;lt;?&lt;span style="color:#cc7832;"&gt;xml&lt;/span&gt; &lt;span style="color:silver;"&gt;version&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;1.0&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;encoding&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;utf-8&lt;/span&gt;&amp;quot;?&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;lt;?&lt;span style="color:#cc7832;"&gt;xml-stylesheet&lt;/span&gt; &lt;span style="color:gray;"&gt;type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;http://moss-server/SearchDemo/_layouts/RssXslt.aspx&amp;quot; version=&amp;quot;1.0&amp;quot;&lt;/span&gt;?&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;lt;&lt;span style="color:#cc7832;"&gt;rss&lt;/span&gt; &lt;span style="color:silver;"&gt;version&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;2.0&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;xmlns:srrt&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;http://schemas.microsoft.com/WebParts/v3/srchrss/runtime&lt;/span&gt;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;channel&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;title&lt;/span&gt;&amp;gt;Search Results: company&amp;lt;/&lt;span style="color:#cc7832;"&gt;title&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;link&lt;/span&gt; /&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;description&lt;/span&gt;&amp;gt;Search RSS feed for Microsoft Office SharePoint Server 2007&amp;lt;/&lt;span style="color:#cc7832;"&gt;description&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;language&lt;/span&gt;&amp;gt;en-US&amp;lt;/&lt;span style="color:#cc7832;"&gt;language&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;lastBuildDate&lt;/span&gt;&amp;gt;Tue, 23 Jun 2009 19:05:09 GMT&amp;lt;/&lt;span style="color:#cc7832;"&gt;lastBuildDate&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;generator&lt;/span&gt;&amp;gt;Microsoft Office SharePoint Server 2007 RSS Generator&amp;lt;/&lt;span style="color:#cc7832;"&gt;generator&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;ttl&lt;/span&gt;&amp;gt;60&amp;lt;/&lt;span style="color:#cc7832;"&gt;ttl&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;image&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;title&lt;/span&gt;&amp;gt;Search Results: company&amp;lt;/&lt;span style="color:#cc7832;"&gt;title&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;url&lt;/span&gt;&amp;gt;http://moss-server/SearchDemo/_layouts/images/homepage.gif&amp;lt;/&lt;span style="color:#cc7832;"&gt;url&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;link&lt;/span&gt; /&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;image&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;item&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;title&lt;/span&gt;&amp;gt;Company Marketing&amp;lt;/&lt;span style="color:#cc7832;"&gt;title&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;link&lt;/span&gt;&amp;gt;http://moss-server/SearchLibrary1/Company Presentation 5.pptx&amp;lt;/&lt;span style="color:#cc7832;"&gt;link&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;description&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;![CDATA[&lt;span style="color:silver;"&gt;&amp;lt;div style=&amp;quot;margin-top:5px&amp;quot;&amp;gt;&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;http://moss-server/_layouts&lt;/span&gt;&lt;span style="color:silver;"&gt;/1033/styles/portal.css&amp;quot; /&amp;gt;&amp;lt;span class=&amp;quot;srch-Icon&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;http://moss-server/SearchLibrary1/Compan&lt;/span&gt;&lt;span style="color:silver;"&gt;y Presentation 5.pptx&amp;quot; title=&amp;quot;Company Marketing&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;http://moss-server/_layouts/images/icpptx&lt;/span&gt;&lt;span style="color:silver;"&gt;.gif&amp;quot; alt=&amp;quot;Result of type: document&amp;quot; border=&amp;quot;0&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;psrch-Description&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Comp&lt;/span&gt;&lt;span style="color:silver;"&gt;any&amp;lt;/b&amp;gt; Marketing&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160; …&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160; Why our &amp;lt;b&amp;gt;company&amp;lt;/b&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;p class=&amp;quot;srch-Metadata&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;srch-URL&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;http://mos&lt;/span&gt;&lt;span style="color:silver;"&gt;s-server/SearchLibrary1/Company Presentation 5.pptx&amp;quot; title=&amp;quot;Company Marketing&amp;quot;&amp;gt;http://moss-server/Se&lt;/span&gt;&lt;span style="color:silver;"&gt;archLibrary1/Company Presentation 5.pptx&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 45KB&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;]]&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;description&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;author&lt;/span&gt;&amp;gt;Windows User&amp;lt;/&lt;span style="color:#cc7832;"&gt;author&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;pubDate&lt;/span&gt;&amp;gt;6/22/2009&amp;lt;/&lt;span style="color:#cc7832;"&gt;pubDate&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;item&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;channel&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;lt;/&lt;span style="color:#cc7832;"&gt;rss&lt;/span&gt;&amp;gt;&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;I cut out most of the &lt;em&gt;item&lt;/em&gt; elements from the XML for brevity but you get the point.&amp;#160; You get a link the results along with a title and description.&amp;#160; At this point, you can easily consume these results with an RSS client or maybe use LINQ to XML to parse them.&amp;#160; Interested in what the document looks like when there are no matching search results?&amp;#160; &lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&amp;lt;?&lt;span style="color:#cc7832;"&gt;xml&lt;/span&gt; &lt;span style="color:silver;"&gt;version&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;1.0&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;encoding&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;utf-8&lt;/span&gt;&amp;quot;?&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;lt;?&lt;span style="color:#cc7832;"&gt;xml-stylesheet&lt;/span&gt; &lt;span style="color:gray;"&gt;type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;http://moss-server/SearchDemo/_layouts/RssXslt.aspx&amp;quot; version=&amp;quot;1.0&amp;quot;&lt;/span&gt;?&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;lt;&lt;span style="color:#cc7832;"&gt;rss&lt;/span&gt; &lt;span style="color:silver;"&gt;version&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;2.0&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;xmlns:srrt&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;http://schemas.microsoft.com/WebParts/v3/srchrss/runtime&lt;/span&gt;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;channel&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;title&lt;/span&gt;&amp;gt;Search Results: noresultskeyword&amp;lt;/&lt;span style="color:#cc7832;"&gt;title&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;link&lt;/span&gt; /&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;description&lt;/span&gt;&amp;gt;Search RSS feed for Microsoft Office SharePoint Server 2007: No results found&amp;lt;/&lt;span style="color:#cc7832;"&gt;description&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;language&lt;/span&gt;&amp;gt;en-US&amp;lt;/&lt;span style="color:#cc7832;"&gt;language&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;lastBuildDate&lt;/span&gt;&amp;gt;Tue, 23 Jun 2009 19:39:57 GMT&amp;lt;/&lt;span style="color:#cc7832;"&gt;lastBuildDate&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;generator&lt;/span&gt;&amp;gt;Microsoft Office SharePoint Server 2007 RSS Generator&amp;lt;/&lt;span style="color:#cc7832;"&gt;generator&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;ttl&lt;/span&gt;&amp;gt;60&amp;lt;/&lt;span style="color:#cc7832;"&gt;ttl&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;image&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;title&lt;/span&gt;&amp;gt;Search Results: noresultskeyword&amp;lt;/&lt;span style="color:#cc7832;"&gt;title&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;url&lt;/span&gt;&amp;gt;http://moss-server/SearchDemo/_layouts/images/homepage.gif&amp;lt;/&lt;span style="color:#cc7832;"&gt;url&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;link&lt;/span&gt; /&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;image&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;channel&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;lt;/&lt;span style="color:#cc7832;"&gt;rss&lt;/span&gt;&amp;gt;&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;You just get an RSS document back with no items and the description tells you that no results were found.&amp;#160;&amp;#160; As you can see executing queries with RSS is pretty simple, so if you need a quick solution, this may be the way to go.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=925" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/CoreysDotNetTipOfTheDay/~4/sJDk-5R0wMw" height="1" width="1"/&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><feedburner:origLink>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/23/exposing-enterprise-search-results-using-rss.aspx</feedburner:origLink></item><item><title>Issue when querying on a Managed Property of type Decimal</title><link>http://feedproxy.google.com/~r/CoreysDotNetTipOfTheDay/~3/f7ZxYhZLLOI/issue-when-querying-on-a-managed-property-of-type-decimal.aspx</link><pubDate>Mon, 22 Jun 2009 20:05:37 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:924</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=924</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/22/issue-when-querying-on-a-managed-property-of-type-decimal.aspx#comments</comments><description>&lt;p&gt;I’ve been working on putting some stuff together for my talks at &lt;a href="http://www.sharepointsaturday.org/ozarks/default.aspx"&gt;SharePoint Saturday Ozarks&lt;/a&gt; (&lt;a href="http://search.twitter.com/search?q=%23SPSOzarks"&gt;#SPSOzarks&lt;/a&gt;) and ran into this interesting issue.&amp;#160; Now this may just be an isolated incident, but I have discovered a few errors that occur when trying to query a managed property of type decimal.&amp;#160; To start out, I created a custom content type with a site column called DocumentPriority (name doesn’t really matter obviously).&amp;#160; I configured the site column as a number with 0 decimal places.&amp;#160; Search picks this up as a crawled property but it determines it is of type decimal instead of number.&amp;#160; I go ahead and map this to a managed property of the same type and then attempt to query it in the usual manner:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;DocumentPriority:5&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I expected to see some results or at least the message saying no results were available but in fact I get the following error message.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Your search cannot be completed because of a service error. Try your search again or contact your administrator for more information. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;That of course confuses me, so I try the query again and I get:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;The search request was unable to connect to the Search Service. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;This confuses me even more.&amp;#160; I start to wonder what is going on.&amp;#160; I try some different searches and discover other queries work fine, but when I try this query again, I get the same error messages.&amp;#160; I decide to do some more research and check the Event Log.&amp;#160; I find the following events&lt;/p&gt;  &lt;p&gt;&lt;em&gt;The last query machine has been taken out of rotation.&amp;#160; Check previous event logs to determine cause.&amp;#160; Propagation may be necessary. Component: 68105977-f711-43b5-a25e-4f2d210625e1&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Query machine &amp;#39;MOSS-SERVER&amp;#39; has been taken out of rotation due to this error: Values of this type are not turned into strings necessary to generate scope information. The item will not be locatable in all of the appropriate scopes but this is not a serious error.&amp;#160;&amp;#160; 0x80044100.&amp;#160; It will be retried in 15 seconds. Component: 68105977-f711-43b5-a25e-4f2d210625e1&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;This means that the query server is dying anytime it receives a query like this.&amp;#160; That is extremely bad.&amp;#160; I haven’t resolved the issue yet, but I think updating will help.&amp;#160; This particular server does not have SP2 on it which I think will resolve it.&amp;#160; Well technically I think it was the August Cumulative&amp;#160; update from last year that fixes it, but I thought it was worth noting.&amp;#160; I thought it was worth noting none the less in case you haven’t updated yet.&amp;#160; I am going to update this server and see what happens.&amp;#160; I’ll post an update if anything changes.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=924" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/CoreysDotNetTipOfTheDay/~4/f7ZxYhZLLOI" height="1" width="1"/&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Error/default.aspx">Error</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><feedburner:origLink>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/22/issue-when-querying-on-a-managed-property-of-type-decimal.aspx</feedburner:origLink></item><item><title>Why I will never install a beta OS on my iPhone ever again</title><link>http://feedproxy.google.com/~r/CoreysDotNetTipOfTheDay/~3/40B4EZKCCe4/why-i-will-never-install-a-beta-os-on-my-iphone-ever-again.aspx</link><pubDate>Thu, 18 Jun 2009 18:43:56 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:922</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=922</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/18/why-i-will-never-install-a-beta-os-on-my-iphone-ever-again.aspx#comments</comments><description>&lt;p&gt;As people that know me well know, I am all about installing anything beta.&amp;#160; I am more than willing to try out some buggy software and risk having to reinstall what’s on my computer because that’s how I roll.&amp;#160; When I joined the iPhone developer program, the situation was no different.&amp;#160; I proudly installed Beta 3 of 3.0 and things were working great.&amp;#160; Now at this point I will stop you and tell you that it was not the Beta that caused an issue with my phone.&amp;#160; It was the fact that I experienced a hardware failure on my phone while having the beta installed.&amp;#160; &lt;/p&gt;  &lt;p&gt;Here is what happened.&amp;#160; I used Beta 3 for a couple weeks and everything worked great.&amp;#160; I later installed Beta 4 and it worked for a while.&amp;#160; One day, I pull my phone out of my pocket, only to find that the device is turned off.&amp;#160; I turn it back on and I get the pink Connect to iTunes screen.&amp;#160; No big deal, I plug it in and I restore Beta 4 again and it works fine for about another week.&amp;#160; The issue then occurs again, and this time I am unable to restore the OS onto the device.&amp;#160; Beta 5 comes out so I try it, it doesn’t work.&amp;#160; I always end up getting an Error Code 28 (sometimes error 9).&amp;#160; I try multiple ways of flashing using iTunes and Xcode but nothing works.&lt;/p&gt;  &lt;p&gt;At this point, I am at a loss and try to go to the Tulsa Woodland Hills Apple store for help.&amp;#160; I made several attempts to go to the Apple store and beg for a new phone, all but the last one were unsuccessful.&amp;#160; The first time I went in the tech immediately noticed that I had the pink Connect to iTunes screen.&amp;#160; This is code to the Genius Bar that says we don’t have to support this device.&amp;#160; The first guy turned me away; basically accusing me that my device ID was not registered with the Apple Developer program.&amp;#160; I claimed that in fact I am a registered developer and I am more than willing to log in and show him, but he wouldn’t have any of that.&amp;#160; So I left the store with my brick.&lt;/p&gt;  &lt;p&gt;You see Apple’s policy is that you get absolutely zero (0) support for your iPhone while you have a beta installed.&amp;#160; So even though you are doing them a favor and helping them test out their software, they will leave you high and dry.&amp;#160; Now they have disclaimers when you download the beta that this should only be conducted on devices used for testing, etc.&amp;#160; That is fine, but no where does it say that if you have an issue with your phone whilst having the beta that they will not support you.&lt;/p&gt;  &lt;p&gt;Sometime, after Beta 5 came out, I decided to try the Apple store again.&amp;#160; At this point I had tried doing the restore with a different computer, cable, operating system, etc.&amp;#160; The results was always the same.&amp;#160; I go in there and explain my situation to another tech and I basically get the same story.&amp;#160; However, he said come back after 3.0 is released officially to the public and we’ll see what we can do.&amp;#160; Frustrated, I accepted that and I scheduled myself an appointment for June 17th when 3.0 was announced at the WWDC.&amp;#160; I knew that the release version of the OS wouldn’t install either, but I accepted it and impatiently waited.&lt;/p&gt;  &lt;p&gt;So on June 17th, I enter the Apple Store at 2:45 and it is slammed.&amp;#160; Amazingly though, the Genius Bar is right on time and I get a tech right away.&amp;#160; He sees the pink screen on my device and then disappears for a minute.&amp;#160; He goes and talks to his lead and he comes back with the answer that I have to go through the developer site for support since it has the beta on it.&amp;#160; I respond by saying that 3.0 has been released to the public, I need some support.&amp;#160; He responds several times by saying that our policies haven’t been changed though to allow us to work with the beta device.&lt;/p&gt;  &lt;p&gt;This time I refuse to take that as answer.&amp;#160; I ask to talk to the lead.&amp;#160; The current lead, Sean Love, comes over and we talk for a bit.&amp;#160; After a while, it finally becomes clear to me.&amp;#160; He tries to restore the phone and he gets the same error message.&amp;#160; If they see the pink screen on the device, they assume your pir8ed the 3.0 beta.&amp;#160; I state I am in the developer program, I can show you.&amp;#160; He seems almost surprised that I said that, but he allows me to login and I show him where my ID is registered.&amp;#160; At this point, he takes some info from me and tells me he can help me out.&amp;#160; I am relieved.&amp;#160; A few minutes later he comes out with a new iPhone for me and I finally am able to leave the store with a working phone.&amp;#160; I want to take the time to express my gratitude to Sean for helping me out with my issue.&amp;#160; I really do appreciate it.&lt;/p&gt;  &lt;p&gt;I would like to reiterate that I do not feel at all that the beta OS destroyed my phone.&amp;#160; It seemed to suffer from hardware failure as it could not write to a portion of the flash memory (or whatever it is) during the restore.&amp;#160; The reason, I will never install a beta on a phone again is because if you have any other kind of issue, Apple will not support it.&amp;#160; I write this today to make this point clear to more people and maybe urge Apple to change their policy.&amp;#160; I was without an iPhone for almost two months and it was completely unacceptable.&amp;#160; Developers need some line of hardware support.&amp;#160; I read the forums, other people had similar issues.&amp;#160; Some tried calling the developer number and they got turned down as well.&amp;#160; Hardware issues can happen while the beta is installed and we shouldn’t be out of luck because of it.&amp;#160; There will have to be some amazing stuff in the next beta for me to consider installing it on my device.&amp;#160; Most likely I will wait next time.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=922" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/CoreysDotNetTipOfTheDay/~4/40B4EZKCCe4" height="1" width="1"/&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/iPhone/default.aspx">iPhone</category><feedburner:origLink>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/18/why-i-will-never-install-a-beta-os-on-my-iphone-ever-again.aspx</feedburner:origLink></item><item><title>Trying out BDC Meta Man Web Edition</title><link>http://feedproxy.google.com/~r/CoreysDotNetTipOfTheDay/~3/OpTAU3KBiWE/trying-out-bdc-meta-man-web-edition.aspx</link><pubDate>Wed, 10 Jun 2009 21:15:25 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:918</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=918</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/10/trying-out-bdc-meta-man-web-edition.aspx#comments</comments><description>&lt;p&gt;I decided to download the trial of &lt;a href="http://www.lightningtools.com/bdc-meta-man/web-edition.aspx"&gt;BDC Meta Man Web Edition&lt;/a&gt; from &lt;a href="http://www.lightningtools.com"&gt;Lightning Tools&lt;/a&gt; today since I have used &lt;a href="http://www.lightningtools.com/bdc-meta-man/default.aspx"&gt;BDC Meta Man&lt;/a&gt; so much in the past.&amp;#160; I found the tool to be quite functional and I easily able to connect to a database table and import an application definition.&amp;#160; There are several steps to the install process involving the installation and deployment of several packages along with several features scoped at the web application and site collection level.&amp;#160; One thing to note is that .NET Framework 3.5 SP1 is required.&amp;#160; The servers I tried it on I thought had it, but in fact only had 3.5.&amp;#160; &lt;a href="http://twitter.com/nickswan"&gt;@nickswan&lt;/a&gt; quickly helped me figure out that was my issue after I had everything installed.&amp;#160; A batch file allows you to quickly add the 6 needed solution packages to the solution store.&amp;#160; Then you just have to deploy each one to your web application and activate the relevant features.&amp;#160; The included documentation makes it pretty clear what you need to do.&amp;#160; There are quite a few steps to the install, but it’s not bad at all.&lt;/p&gt;  &lt;p&gt;Once installed, a link is added to the Site Collection Administration links labeled BDC Meta Man Web Edition.&amp;#160; The cool thing about this is you don’t have to have direct access to your SSP site for it to work.&amp;#160; When you open the page, you can start on a new BDC application definition (SQL or Oracle) or connect to an existing definition.&amp;#160; Unfortunately, the trial doesn’t allow you to connect to existing definitions so I couldn’t try that out, but I was able to quickly make a new application definition for a new table.&amp;#160; You start by providing a connection to the server, then pick the database and tables you want.&amp;#160; You can configure all of the usual things in the BDC such as the methods and actions.&amp;#160; One you are complete, there is a button to add the LOB system to MOSS.&amp;#160; Clicking this uploads the new BDC application definition directly into the BDC.&amp;#160; There is no need to save off the XML schema file and then manually upload it later.&lt;/p&gt;  &lt;p&gt;All in all, its a pretty useful tool I would say.&amp;#160; It has a nice AJAX interface that makes building application definitions easy.&amp;#160; The only minor issue I really saw is that with tables with a large number of columns, they all did not fit nicely into the window.&amp;#160; It doesn’t look like you can build an application definition for a web service with this tool (but someone correct me if I am wrong).&amp;#160; I would also really like to see an export option or something of that nature to export the current or existing application definition.&amp;#160; If you work with the BDC a lot, give the tool a try the next time you need to do an application definition.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=918" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/CoreysDotNetTipOfTheDay/~4/OpTAU3KBiWE" height="1" width="1"/&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Business+Data+Catalog/default.aspx">Business Data Catalog</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Product+Review/default.aspx">Product Review</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePint/default.aspx">SharePint</category><feedburner:origLink>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/10/trying-out-bdc-meta-man-web-edition.aspx</feedburner:origLink></item><item><title>How to: Deploy a Page using a Feature</title><link>http://feedproxy.google.com/~r/CoreysDotNetTipOfTheDay/~3/nqAJAgHrMxk/how-to-deploy-a-page-using-a-feature.aspx</link><pubDate>Tue, 02 Jun 2009 20:58:23 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:917</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=917</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/02/how-to-deploy-a-page-using-a-feature.aspx#comments</comments><description>&lt;p&gt;I am about to do start giving some training again, so I thought I would work on some more content for the blog that I could refer to people to when they are trying things out.&amp;#160; Today, I want to start out with the basic task of deploying a page to SharePoint.&amp;#160; There are actually lots of ways to get pages into SharePoint.&amp;#160; You can use the whole page publishing model in MOSS, but sometimes you just need a simple page with a simple web part deployed and a feature makes this task pretty easy.&lt;/p&gt;  &lt;p&gt;For today’s example, I want to deploy a simple page with a web part or two on it.&amp;#160; To start, you will need to create a new folder for your feature.&amp;#160; You can name this whatever you want.&amp;#160; For the purpose of this example, we’ll call it &lt;em&gt;PageTest&lt;/em&gt;.&amp;#160; Before we begin though we need a .aspx page which will host these web parts.&amp;#160; You can create one on your own, but I find it’s easiest to just “borrow” one from SharePoint that already exists.&amp;#160; A good one to borrow I have found is in the STS site template (12\TEMPLATE\SiteTemplate\STS) called default.aspx.&amp;#160; This .aspx page has two WebPartZones named &lt;em&gt;Left&lt;/em&gt; and &lt;em&gt;Right&lt;/em&gt;.&amp;#160; Put a copy of this file into your new feature folder.&amp;#160; You can customize this file however you desire, such as changing the layout or adding or subtracting WebPartZones.&lt;/p&gt;  &lt;p&gt;By now, I am sure you probably know how to make a basic Feature.xml file, but here is one just in case.&amp;#160; In this case, we have a feature with a scope of &lt;em&gt;Web&lt;/em&gt; so we’ll be deploying to an individual site.&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&amp;lt;&lt;span style="color:#cc7832;"&gt;Feature&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:silver;"&gt;xmlns&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;http://schemas.microsoft.com/sharepoint/&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:silver;"&gt;Id&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;{8B486B2B-4D71-423f-BD6C-9C792299F432}&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:silver;"&gt;Scope&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;Web&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:silver;"&gt;Hidden&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;False&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:silver;"&gt;Title&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;PageTest&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:silver;"&gt;Description&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;Deploys a custom page with some web parts.&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;ElementManifests&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;ElementManifest&lt;/span&gt; &lt;span style="color:silver;"&gt;Location&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;elements.xml&lt;/span&gt;&amp;quot; /&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;ElementManifests&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;lt;/&lt;span style="color:#cc7832;"&gt;Feature&lt;/span&gt;&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;The Elements.xml file deploys files using the &lt;em&gt;Module&lt;/em&gt; and &lt;em&gt;File&lt;/em&gt; elements.&amp;#160; The &lt;em&gt;Module&lt;/em&gt; element tells SharePoint to deploy files from a physical folder, specified in the &lt;em&gt;Path&lt;/em&gt; attribute, to a virtual folder inside SharePoint, specified in the &lt;em&gt;Url&lt;/em&gt; attribute.&amp;#160; The Path attribute is relative to the feature folder while the &lt;em&gt;Url &lt;/em&gt;attribute is relative to the site it was deployed on.&amp;#160; No paths are specified in our case.&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&amp;lt;&lt;span style="color:#cc7832;"&gt;Module&lt;/span&gt; &lt;span style="color:silver;"&gt;Name&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;Pages&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;Path&lt;/span&gt;=&amp;quot;&amp;quot; &lt;span style="color:silver;"&gt;Url&lt;/span&gt;=&amp;quot;&amp;quot;&amp;gt;&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;The Module element can contain one or more &lt;em&gt;File&lt;/em&gt; elements to deploy pages.&amp;#160; You need one File element for each page you want to deploy inside of SharePoint.&amp;#160; Note: that it is possible to use the same default.aspx page in your feature folder and deploy it multiple times with different web parts (i.e.: page1.aspx, page2.aspx, etc.).&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&amp;lt;&lt;span style="color:#cc7832;"&gt;File&lt;/span&gt; &lt;span style="color:silver;"&gt;Name&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;TestPage.aspx&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;Url&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;default.aspx&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;IgnoreIfAlreadyExists&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;FALSE&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;NavBarHome&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;True&lt;/span&gt;&amp;quot;&amp;gt;&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;The &lt;em&gt;Name&lt;/em&gt; attribute specifies the name the file will be called inside SharePoint.&amp;#160; The &lt;em&gt;Url&lt;/em&gt; specifies the name of the file in your feature folder.&amp;#160; In our case, default.aspx.&amp;#160; The confusing part her of course being that Url in the Module element refers to the path inside SharePoint and on the File element it refers to the name of the file in your feature folder.&lt;/p&gt;  &lt;p&gt;For each page that you can deploy, you can use CAML to automatically add web parts to the page.&amp;#160; To do this, you use the &lt;em&gt;AllUsersWebPart&lt;/em&gt; element.&amp;#160; Remember in the page we had WebPartZones named &lt;em&gt;Left &lt;/em&gt;and &lt;em&gt;Right&lt;/em&gt;?&amp;#160; We use those same Ids here, to specify which zone to add the web part too.&amp;#160; The &lt;em&gt;WebPartZoneOrder &lt;/em&gt;element specifies the order in which the web parts are added to a given zone (you can have multiple web parts in a zone and they will stack).&amp;#160; The definition of the web part goes inside a CDATA element inside the AllUsersWebPart element.&amp;#160; If you built the web part yourself, you can just paste in the XML from your .webpart file.&amp;#160; If you are using an out-of-the-box SharePoint web part, you can add it to an existing page and export it or go to the web part gallery and export it.&amp;#160; Here is what a completed file looks like with multiple web parts.&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&amp;lt;&lt;span style="color:#cc7832;"&gt;Elements&lt;/span&gt; &lt;span style="color:silver;"&gt;xmlns&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;http://schemas.microsoft.com/sharepoint/&lt;/span&gt;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;Module&lt;/span&gt; &lt;span style="color:silver;"&gt;Name&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;Pages&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;Path&lt;/span&gt;=&amp;quot;&amp;quot; &lt;span style="color:silver;"&gt;Url&lt;/span&gt;=&amp;quot;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;File&lt;/span&gt; &lt;span style="color:silver;"&gt;Name&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;TestPage.aspx&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;Url&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;default.aspx&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;IgnoreIfAlreadyExists&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;FALSE&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;NavBarHome&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;True&lt;/span&gt;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;AllUsersWebPart&lt;/span&gt; &lt;span style="color:silver;"&gt;WebPartZoneID&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;Left&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;WebPartOrder&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;1&lt;/span&gt;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;![CDATA[&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;webParts&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;webPart xmlns=&amp;quot;http://schemas.microsoft.com/WebPart/v3&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;metaData&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;type name=&amp;quot;MyWebPart.TestWebPart, MyWebPart, Version=1.0.0.0, Culture=neutral&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;importErrorMessage&amp;gt;Cannot import this Web Part.&amp;lt;/importErrorMessage&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/metaData&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;data&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;properties&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;property name=&amp;quot;Title&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;My Web Part&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;property name=&amp;quot;Description&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;A test web part.&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/properties&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/data&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/webPart&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/webParts&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;]]&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;AllUsersWebPart&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;AllUsersWebPart&lt;/span&gt; &lt;span style="color:silver;"&gt;WebPartZoneID&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;Left&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;WebPartOrder&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;2&lt;/span&gt;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;![CDATA[&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;WebPart xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/&lt;/span&gt;&lt;span style="color:silver;"&gt;2001/XMLSchema&amp;quot; xmlns=&amp;quot;http://schemas.microsoft.com/WebPart/v2&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title&amp;gt;Search Box&amp;lt;/Title&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Description&amp;gt;Used to search document and items.&amp;lt;/Description&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;MissingAssembly&amp;gt;Cannot import this Web Part.&amp;lt;/MissingAssembly&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Assembly&amp;gt;Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=7&lt;/span&gt;&lt;span style="color:silver;"&gt;1e9bce111e9429c&amp;lt;/Assembly&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;TypeName&amp;gt;Microsoft.SharePoint.Portal.WebControls.SearchBoxEx&amp;lt;/TypeName&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;GoImageUrl xmlns=&amp;quot;urn:schemas-microsoft-com:SearchBoxEx&amp;quot;&amp;gt;/_layouts/images/gosearch.gif&amp;lt;/G&lt;/span&gt;&lt;span style="color:silver;"&gt;oImageUrl&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;GoImageUrlRTL xmlns=&amp;quot;urn:schemas-microsoft-com:SearchBoxEx&amp;quot;&amp;gt;/_layouts/images/goRTL.gif&amp;lt;/G&lt;/span&gt;&lt;span style="color:silver;"&gt;oImageUrlRTL&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;GoImageActiveUrl xmlns=&amp;quot;urn:schemas-microsoft-com:SearchBoxEx&amp;quot;&amp;gt;/_layouts/images/gosearch.&lt;/span&gt;&lt;span style="color:silver;"&gt;gif&amp;lt;/GoImageActiveUrl&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;GoImageActiveUrlRTL xmlns=&amp;quot;urn:schemas-microsoft-com:SearchBoxEx&amp;quot;&amp;gt;/_layouts/images/goRTL.&lt;/span&gt;&lt;span style="color:silver;"&gt;gif&amp;lt;/GoImageActiveUrlRTL&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;DropDownModeEx xmlns=&amp;quot;urn:schemas-microsoft-com:SearchBoxEx&amp;quot;&amp;gt;ShowDD&amp;lt;/DropDownModeEx&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ScopeDisplayGroupName xmlns=&amp;quot;urn:schemas-microsoft-com:SearchBoxEx&amp;quot;&amp;gt;Search Dropdown&amp;lt;/Scop&lt;/span&gt;&lt;span style="color:silver;"&gt;eDisplayGroupName&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;RegisterStyles xmlns=&amp;quot;urn:schemas-microsoft-com:SearchBoxEx&amp;quot;&amp;gt;true&amp;lt;/RegisterStyles&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ShouldTakeFocusIfEmpty xmlns=&amp;quot;urn:schemas-microsoft-com:SearchBoxEx&amp;quot;&amp;gt;false&amp;lt;/ShouldTakeFoc&lt;/span&gt;&lt;span style="color:silver;"&gt;usIfEmpty&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/WebPart&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;]]&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;AllUsersWebPart&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;AllUsersWebPart&lt;/span&gt; &lt;span style="color:silver;"&gt;WebPartZoneID&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;Right&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;WebPartOrder&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;1&lt;/span&gt;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;![CDATA[&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;WebPart xmlns=&amp;quot;http://schemas.microsoft.com/WebPart/v2&amp;quot; xmlns:iwp=&amp;quot;http://schema&lt;/span&gt;&lt;span style="color:silver;"&gt;s.microsoft.com/WebPart/v2/Image&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Assembly&amp;gt;Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKey&lt;/span&gt;&lt;span style="color:silver;"&gt;Token=71e9bce111e9429c&amp;lt;/Assembly&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;TypeName&amp;gt;Microsoft.SharePoint.WebPartPages.ImageWebPart&amp;lt;/TypeName&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;FrameType&amp;gt;None&amp;lt;/FrameType&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title&amp;gt;$Resources:wp_SiteImage;&amp;lt;/Title&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;iwp:ImageLink&amp;gt;/_layouts/images/homepage.gif&amp;lt;/iwp:ImageLink&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;iwp:AlternativeText&amp;gt;$Resources:core,sitelogo_wss;&amp;lt;/iwp:AlternativeText&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/WebPart&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:silver;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;]]&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;AllUsersWebPart&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;File&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;Module&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;lt;/&lt;span style="color:#cc7832;"&gt;Elements&lt;/span&gt;&amp;gt;&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;When SharePoint is deploying the page, it combines your .aspx page with what is in the elements.xml file to output the completed page.&amp;#160; At this point you are ready to install and activate your feature.&amp;#160; You can put this in a &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/10/22/intro-to-sharepoint-development-how-to-build-and-deploy-a-web-part.aspx"&gt;solution package&lt;/a&gt; at this point to ease deployment.&amp;#160; When you activate the feature, you should get something that looks like this.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/FileDeployment_59025F76.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="FileDeployment" border="0" alt="FileDeployment" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/FileDeployment_thumb_5EDD030F.png" width="614" height="185" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Of course, deactivating the feature won’t remove this page or its web parts.&amp;#160; However, you can always easily implement a &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/02/16/linq-to-xml-and-deleting-files-on-feature-deactivation.aspx"&gt;feature receiver&lt;/a&gt; to cleanup the files you deployed.&amp;#160; This is how you deploy simple pages using CAML.&amp;#160; This is effectively the same way that Site Templates deploy pages as well (except the web parts and views are defined in onet.xml instead).&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=917" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/CoreysDotNetTipOfTheDay/~4/nqAJAgHrMxk" height="1" width="1"/&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Feature/default.aspx">Feature</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Deployment/default.aspx">Deployment</category><feedburner:origLink>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/06/02/how-to-deploy-a-page-using-a-feature.aspx</feedburner:origLink></item><item><title>Announcing custom sort order support for WildcardSearchWebPart</title><link>http://feedproxy.google.com/~r/CoreysDotNetTipOfTheDay/~3/SPmcHlDAc2c/announcing-custom-sort-order-support-for-wildcardsearchwebpart.aspx</link><pubDate>Wed, 20 May 2009 13:56:32 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:909</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=909</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/20/announcing-custom-sort-order-support-for-wildcardsearchwebpart.aspx#comments</comments><description>&lt;p&gt;I was reading the forums the other day and saw another post in the MOSS Search &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sharepointsearch/threads"&gt;forum&lt;/a&gt; about someone wanting to be able to specify a custom sort order with the CoreResultsWebPart.&amp;#160; WildcardSearchWebPart will allow you to specify a static full text sql query or it builds one of its own.&amp;#160; The problem is, the CoreResultsWebPart that it inherits from has logic in it to go and add an ORDER BY clause based on data modified or relevance.&amp;#160; This causes an issue because if you specify your own order by clause, it causes a syntax error. This &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sharepointsearch/thread/b99f827d-ccd9-4455-873c-0ce76df27394"&gt;post&lt;/a&gt; had a rather simple solution to solving the issue.&amp;#160; The answer is to simply add your own ORDER BY clause followed by a -- (SQL comment).&amp;#160; This causes the syntax to be valid and everything works.&lt;/p&gt;  &lt;p&gt;After seeing this, I immediately knew I wanted to add this to the WildcardSearchWebPart.&amp;#160; I added a new property called SortOrder which would allow you pass any valid ORDER BY clause.&amp;#160; For example:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Title&lt;/li&gt;    &lt;li&gt;Author DESC&lt;/li&gt;    &lt;li&gt;ContentSource, Author DESC, Title&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You should be able to sort on any manager property that you have returned in the Select Columns XML field.&amp;#160; Give it a try and see how it works.&amp;#160; My next step to research is to see if I can implement this with a keyword query.&amp;#160; Try it out and post any issues you run into on CodePlex.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://wildcardsearch.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24225"&gt;Wildcard Search Version 1.0 Release 4&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Follow me on &lt;a href="http://twitter.com/coreyroth"&gt;twitter&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=909" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/CoreysDotNetTipOfTheDay/~4/SPmcHlDAc2c" height="1" width="1"/&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Wildcard+Search/default.aspx">Wildcard Search</category><feedburner:origLink>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/20/announcing-custom-sort-order-support-for-wildcardsearchwebpart.aspx</feedburner:origLink></item><item><title>The object was not found. (The item was deleted because it was either not found or the crawler was denied access to it.)</title><link>http://feedproxy.google.com/~r/CoreysDotNetTipOfTheDay/~3/dIfdejjwU4o/the-object-was-not-found-the-item-was-deleted-because-it-was-either-not-found-or-the-crawler-was-denied-access-to-it.aspx</link><pubDate>Tue, 19 May 2009 20:03:42 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:907</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=907</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/19/the-object-was-not-found-the-item-was-deleted-because-it-was-either-not-found-or-the-crawler-was-denied-access-to-it.aspx#comments</comments><description>&lt;p&gt;I’ve seen a few people asking about this in the Crawl Logs and thought I would take a few minutes to address it.&amp;#160; First and foremost this is a warning and not an error message.&amp;#160; Sometimes when you receive this message, it is the crawler behaving normally.&amp;#160; Other times it is because of an issue.&amp;#160; I’ll first talk about when it is a normal behavior.&amp;#160; When an item is deleted, it is perfectly normal to see this in your logs the next time a crawl occurs.&amp;#160; This is simply indicating that SharePoint is removing the record from the search index.&amp;#160; If you see an occasional one of these, then you can assure your administrator that things are probably fine. &lt;/p&gt;  &lt;p&gt;Other times it can indicate another issue.&amp;#160; In the situation where you already have your index built and your crawl log is filled with nothing but this warning, that is usually indicative of a problem (not to mention your index is empty).&amp;#160; Before you do anything, the first thing I always recommend is just try crawling again.&amp;#160; It might just fix it.&amp;#160; If it doesn’t then more than likely you have a permissions problem.&amp;#160; If you are dealing with a SharePoint content source, verify that the crawl account can still access SharePoint, the password hasn’t expired, it isn’t locked out, etc.&amp;#160; Get the credentials for your crawl account and actually make sure you can log into a SharePoint site.&amp;#160; While I am here, I’ll remind you again to never give this account administrator level privileges as it causes your search index to have deleted an unapproved files in it.&amp;#160; After you make any necessary changes, try to crawl again (twice if necessary) and see if that resolves your issue.&amp;#160; &lt;/p&gt;  &lt;p&gt;If you are crawling a Business Data Catalog content source, make sure that the content access account has access to the BDC itself first by going to the Business Data Catalog permissions page on your SSP.&amp;#160; Then also verify that the content access account also has permissions to the BDC application itself as well as its child entities.&amp;#160; If you make any changes, be sure and crawl again.&lt;/p&gt;  &lt;p&gt;If none of this has helped, my recommendation of course it to go to the 12 hive’s LOGS folder.&amp;#160; You will need to sift through this file and see if you can find anything potentially permissions related with Search.&amp;#160; Don’t follow any advice to reset your index unless absolutely necessary.&amp;#160; More than likely your index is already effectively reset and doing this probably won’t get you any where.&amp;#160; There are some other causes of this in your logs I am sure, but hopefully this will give you a good start in resolving this issue (if there is one to begin with).&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=907" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/CoreysDotNetTipOfTheDay/~4/dIfdejjwU4o" height="1" width="1"/&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Error/default.aspx">Error</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Business+Data+Catalog/default.aspx">Business Data Catalog</category><feedburner:origLink>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/19/the-object-was-not-found-the-item-was-deleted-because-it-was-either-not-found-or-the-crawler-was-denied-access-to-it.aspx</feedburner:origLink></item><item><title>How to: Deploy a .UDCX file to a Data Connection Library</title><link>http://feedproxy.google.com/~r/CoreysDotNetTipOfTheDay/~3/3StqXtldcTE/how-to-deploy-a-udcx-file-to-a-data-connection-library.aspx</link><pubDate>Thu, 14 May 2009 15:08:48 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:904</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=904</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/14/how-to-deploy-a-udcx-file-to-a-data-connection-library.aspx#comments</comments><description>&lt;p&gt;The other day I saw that &lt;a href="http://twitter.com/mrackley"&gt;@mrackley&lt;/a&gt; was looking for a way to deploy a .UDCX file to a data connection library.&amp;#160; Having CAML still fresh in my mind from the &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/12/code-samples-from-our-caml-vs-api-talk-at-tulsa-sharepoint-interest-group.aspx"&gt;talk&lt;/a&gt; &lt;a href="http://twitter.com/jkkelin"&gt;Kyle Kelin&lt;/a&gt; and I did on Monday, I decided to see if I could get the job done using the &lt;em&gt;Module&lt;/em&gt; and &lt;em&gt;File&lt;/em&gt; elements.&amp;#160; Sure enough, I found a simple way to deploy the .UDCX file.&amp;#160; Here is what it looks like.&amp;#160; For the purpose of my example, I am going to deploy a file test.udcx to a data connect library at the /Data Connections path in my current site.&amp;#160; Adjust your paths accordingly.&amp;#160; I have a simple Feature.xml.&lt;/p&gt;   &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&amp;lt;&lt;span style="color:#cc7832;"&gt;Feature&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:silver;"&gt;xmlns&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;http://schemas.microsoft.com/sharepoint/&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:silver;"&gt;Id&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;{CE871E99-B9E8-4b3e-AF2B-D715C8AD08F0}&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:silver;"&gt;Scope&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;Web&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:silver;"&gt;Hidden&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;False&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:silver;"&gt;Title&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;UDCX Deployment&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:silver;"&gt;Description&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;This feature deploys a UDCX file to a data connection library.&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;ElementManifests&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;ElementManifest&lt;/span&gt; &lt;span style="color:silver;"&gt;Location&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;elements.xml&lt;/span&gt;&amp;quot; /&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;ElementManifests&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;lt;/&lt;span style="color:#cc7832;"&gt;Feature&lt;/span&gt;&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;I then have an elements.xml file like the one below.&lt;/p&gt;   &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&amp;lt;&lt;span style="color:#cc7832;"&gt;Elements&lt;/span&gt; &lt;span style="color:silver;"&gt;xmlns&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;http://schemas.microsoft.com/sharepoint/&lt;/span&gt;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;Module&lt;/span&gt; &lt;span style="color:silver;"&gt;Name&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;DataConnections&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;Url&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;Data Connections&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;Path&lt;/span&gt;=&amp;quot;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;File&lt;/span&gt; &lt;span style="color:silver;"&gt;Url&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;test.udcx&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;Type&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;GhostableInLibrary&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;IgnoreIfAlreadyExists&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;FALSE&lt;/span&gt;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;Property&lt;/span&gt; &lt;span style="color:silver;"&gt;Name&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;Title&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;Value&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;test.udcx&lt;/span&gt;&amp;quot;&amp;gt;&amp;lt;/&lt;span style="color:#cc7832;"&gt;Property&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;File&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;Module&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;lt;/&lt;span style="color:#cc7832;"&gt;Elements&lt;/span&gt;&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;The &lt;em&gt;Name&lt;/em&gt; attribute of the &lt;em&gt;Module&lt;/em&gt; element really doesn’t matter, but the &lt;em&gt;Url&lt;/em&gt; does.&amp;#160; Set this to the relative path of your data connection library.&amp;#160; I then use a &lt;em&gt;File&lt;/em&gt; element and set the &lt;em&gt;Url&lt;/em&gt; attribute to the name of my file.&amp;#160; Here you will notice I tried to set a property on the file and although it was not successful in setting the Title property of the form, simply having it there allowed the data connection library to properly read the file as a universal data connection file instead of an Office data connection file.&lt;/p&gt;  &lt;p&gt;This is what my data connection file looks like.&amp;#160; It’s a simple file that controls where the submit action goes to.&lt;/p&gt;   &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&amp;lt;?&lt;span style="color:#cc7832;"&gt;xml&lt;/span&gt; &lt;span style="color:silver;"&gt;version&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;1.0&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;encoding&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;UTF-8&lt;/span&gt;&amp;quot;?&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;lt;?&lt;span style="color:#cc7832;"&gt;MicrosoftWindowsSharePointServices&lt;/span&gt; &lt;span style="color:gray;"&gt;ContentTypeID=&amp;quot;0x010100B4CBD48E029A4ad8B62CB0E41868F2B0&amp;quot;&lt;/span&gt;?&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;lt;&lt;span style="color:#cc7832;"&gt;udc:DataSource&lt;/span&gt; &lt;span style="color:silver;"&gt;MajorVersion&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;2&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;MinorVersion&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;0&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;xmlns:udc&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;http://schemas.microsoft.com/office/infopath/2006/udc&lt;/span&gt;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:Name&lt;/span&gt;&amp;gt;SharePoint Library Submit&amp;lt;/&lt;span style="color:#cc7832;"&gt;udc:Name&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:Description&lt;/span&gt;&amp;gt;Format: UDC V2; Connection Type: SharePointLibrary; Purpose: WriteOnly; Generated by Microsoft Office InfoPath 2007 on 2009-05-14 at 9:29:23 by MOSS-SERVER\croth.&amp;lt;/&lt;span style="color:#cc7832;"&gt;udc:Description&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:Type&lt;/span&gt; &lt;span style="color:silver;"&gt;MajorVersion&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;2&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;MinorVersion&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;0&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;Type&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;SharePointLibrary&lt;/span&gt;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:SubType&lt;/span&gt; &lt;span style="color:silver;"&gt;MajorVersion&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;0&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;MinorVersion&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;0&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;Type&lt;/span&gt;=&amp;quot;&amp;quot;/&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;udc:Type&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:ConnectionInfo&lt;/span&gt; &lt;span style="color:silver;"&gt;Purpose&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;WriteOnly&lt;/span&gt;&amp;quot; &lt;span style="color:silver;"&gt;AltDataSource&lt;/span&gt;=&amp;quot;&amp;quot;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:WsdlUrl&lt;/span&gt;/&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:SelectCommand&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:ListId&lt;/span&gt;/&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:WebUrl&lt;/span&gt;/&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:ConnectionString&lt;/span&gt;/&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:ServiceUrl&lt;/span&gt; &lt;span style="color:silver;"&gt;UseFormsServiceProxy&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;false&lt;/span&gt;&amp;quot;/&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:SoapAction&lt;/span&gt;/&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:Query&lt;/span&gt;/&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;udc:SelectCommand&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:UpdateCommand&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:ServiceUrl&lt;/span&gt; &lt;span style="color:silver;"&gt;UseFormsServiceProxy&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;false&lt;/span&gt;&amp;quot;/&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:SoapAction&lt;/span&gt;/&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:Submit&lt;/span&gt;/&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:FileName&lt;/span&gt;&amp;gt;Specify a filename or formula&amp;lt;/&lt;span style="color:#cc7832;"&gt;udc:FileName&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;span style="color:#cc7832;"&gt;udc:FolderName&lt;/span&gt; &lt;span style="color:silver;"&gt;AllowOverwrite&lt;/span&gt;=&amp;quot;&lt;span style="color:#a5c25c;"&gt;1&lt;/span&gt;&amp;quot;&amp;gt;http://moss-server/MyFormLibrary&amp;lt;/&lt;span style="color:#cc7832;"&gt;udc:FolderName&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;udc:UpdateCommand&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;!--&lt;span style="color:green;"&gt;udc:Authentication&amp;gt;&amp;lt;udc:SSO AppId=&amp;#39;&amp;#39; CredentialType=&amp;#39;&amp;#39; /&amp;gt;&amp;lt;/udc:Authentication&lt;/span&gt;--&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160; &amp;lt;/&lt;span style="color:#cc7832;"&gt;udc:ConnectionInfo&lt;/span&gt;&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;lt;/&lt;span style="color:#cc7832;"&gt;udc:DataSource&lt;/span&gt;&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Here is what it looks like once the feature was activated.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/UDCX_089353AE.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="UDCX" border="0" alt="UDCX" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/UDCX_thumb_7A54DABD.png" width="568" height="90" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As you can see the title field is blank but other than that it seems to work fine.&amp;#160; I’ll also point out that the file is automatically set to &lt;em&gt;Approved&lt;/em&gt; status when uploaded this way.&amp;#160; Here are the properties.&amp;#160; You can see that it correctly picked up that it was a WriteOnly connection for a SharePointLibrary.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/UDCX2_60ECD783.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="UDCX2" border="0" alt="UDCX2" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/UDCX2_thumb_0E6DF747.png" width="552" height="203" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/kylekelin/default.aspx"&gt;Kyle&lt;/a&gt; and I debated in our talk if CAML or the API was better for provisioning sites and what not on Monday night.&amp;#160; I certainly think this solution is a lot better than writing code.&amp;#160; It’s simple and very quick to implement.&amp;#160; The Module and File elements are very powerful and you can use them to deploy just about any kind of file.&amp;#160; I’d like to figure out how to get the Title field set properly, but it’s not a deal breaker for me right now.&lt;/p&gt;  &lt;p&gt;Follow me on &lt;a href="http://twitter.com/coreyroth"&gt;twitter&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=904" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/CoreysDotNetTipOfTheDay/~4/3StqXtldcTE" height="1" width="1"/&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/InfoPath/default.aspx">InfoPath</category><feedburner:origLink>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/14/how-to-deploy-a-udcx-file-to-a-data-connection-library.aspx</feedburner:origLink></item><item><title>Code Samples from our CAML vs API talk at Tulsa SharePoint Interest Group</title><link>http://feedproxy.google.com/~r/CoreysDotNetTipOfTheDay/~3/36teZuTUi4U/code-samples-from-our-caml-vs-api-talk-at-tulsa-sharepoint-interest-group.aspx</link><pubDate>Tue, 12 May 2009 15:36:00 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:903</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=903</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/12/code-samples-from-our-caml-vs-api-talk-at-tulsa-sharepoint-interest-group.aspx#comments</comments><description>&lt;p&gt;Last night, &lt;a href="http://www.dotnetmafia.com/blogs/kylekelin/default.aspx"&gt;Kyle Kelin&lt;/a&gt; and I had the opportunity to debate SharePoint provisioning methodologies at the &lt;a href="http://www.tulsadnug.org/DesktopDefault.aspx"&gt;Tulsa SharePoint Interest Group&lt;/a&gt;.&amp;nbsp; We each had to deploy a custom site with site columns, a content type, a list, and pages.&amp;nbsp; Kyle chose the API approach and I went with the CAML approach.&amp;nbsp; We ended up having a good interactive discussion with the group on the pros and cons of going with either approach.&amp;nbsp; I also took a minute to show how &lt;a href="http://twitter.com/jthake"&gt;@jthake&lt;/a&gt;’s &lt;a href="http://spsource.codeplex.com/"&gt;SPSource&lt;/a&gt; can generate CAML for you and the response was great.&amp;nbsp; As promised here is the code samples from the demo last night.&amp;nbsp; Thanks for coming.&lt;/p&gt;
&lt;p&gt;Follow &lt;a href="http://twitter.com/jkkelin"&gt;Kyle&lt;/a&gt; and &lt;a href="http://twitter.com/coreyroth"&gt;I&lt;/a&gt; on twitter.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=903" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/CoreysDotNetTipOfTheDay/~4/36teZuTUi4U" height="1" width="1"/&gt;</description><enclosure url="http://www.dotnetmafia.com/blogs/dotnettipoftheday/attachment/903.ashx" length="1190522" type="application/x-zip-compressed" /><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Presentations/default.aspx">Presentations</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/CAML/default.aspx">CAML</category><feedburner:origLink>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/12/code-samples-from-our-caml-vs-api-talk-at-tulsa-sharepoint-interest-group.aspx</feedburner:origLink></item><item><title>Kyle and I are speaking at Tulsa SPIG this Monday</title><link>http://feedproxy.google.com/~r/CoreysDotNetTipOfTheDay/~3/SnveDL4Az1g/kyle-and-i-are-speaking-at-tulsa-spig-this-monday.aspx</link><pubDate>Fri, 08 May 2009 14:49:21 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:901</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=901</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/08/kyle-and-i-are-speaking-at-tulsa-spig-this-monday.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.dotnetmafia.com/kylekelin"&gt;Kyle Kelin&lt;/a&gt; and I are doing our first joint talk together at the &lt;a href="http://www.tulsadnug.org/DesktopDefault.aspx"&gt;Tulsa SharePoint Interest Group&lt;/a&gt; this Monday, May 11th.&amp;#160; We’re going to be talking about Site Provisioning and let the audience decide what they like better: CAML or the API.&amp;#160; I also plan on demonstrating the use of the &lt;a href="http://spsource.codeplex.com/"&gt;SPSource&lt;/a&gt; tool recently release on CodePlex by &lt;a href="http://twitter.com/jthake"&gt;@jthake&lt;/a&gt;.&amp;#160; We start at 6pm at &lt;a href="http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=TCC+Northeast,+tulsa,+ok&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=48.77566,73.037109&amp;amp;ie=UTF8&amp;amp;z=12&amp;amp;iwloc=A"&gt;TCC Northeast&lt;/a&gt; (3727 N. Apache).&amp;#160; We hope to see you there.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jkkelin"&gt;Kyle Kelin&lt;/a&gt; on twitter.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/croth"&gt;Corey Roth&lt;/a&gt; on twitter.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=901" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/CoreysDotNetTipOfTheDay/~4/SnveDL4Az1g" height="1" width="1"/&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Presentations/default.aspx">Presentations</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/CAML/default.aspx">CAML</category><feedburner:origLink>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/08/kyle-and-i-are-speaking-at-tulsa-spig-this-monday.aspx</feedburner:origLink></item><item><title>Using LINQ to XML to access the data of a form saved to a form library in a workflow</title><link>http://feedproxy.google.com/~r/CoreysDotNetTipOfTheDay/~3/binM95gZM3c/using-linq-to-xml-to-access-the-data-of-a-form-saved-to-a-form-library-in-a-workflow.aspx</link><pubDate>Wed, 06 May 2009 21:40:37 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:900</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=900</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/06/using-linq-to-xml-to-access-the-data-of-a-form-saved-to-a-form-library-in-a-workflow.aspx#comments</comments><description>&lt;p&gt;As I have mention in the past LINQ to XML is a great way to manipulate the XML data out of an &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/04/29/code-samples-from-my-short-talk-about-linq-to-xml.aspx"&gt;InfoPath form&lt;/a&gt;.&amp;#160; I thought I would show how you can also use the same technique to work with the data of a form saved to a form library which launches a workflow (although you could apply this technique to the association or task forms as well).&amp;#160; The first thing we need to do is get the XML of the InfoPath initiation form, before we can work with it.&lt;/p&gt;  &lt;p&gt;For the purpose of my example, my OnWorkflowActivated activity writes to a public SPWorkflowActivationProperties property called &lt;em&gt;workflowProperties&lt;/em&gt;.&amp;#160; In my Invoked event handling method of my OnWorkflowActivated activity, we use the Item object on my workflowProperties to open the file and get the XML.&amp;#160; You can then use the File object along with OpenBinary() to get the raw bytes of the XML.&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:#cc7832;"&gt;byte&lt;/span&gt;[] xmlBytes = workflowProperties.Item.File.OpenBinary();&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;You can then takes those bytes and read them into a regular string.&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:#cc7832;"&gt;string&lt;/span&gt; xmlString = System.Text.&lt;span style="color:#ffc66d;"&gt;Encoding&lt;/span&gt;&lt;span style="font-weight:normal;"&gt;.UTF8.GetString(xmlBytes);&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:#cc7832;"&gt;if&lt;/span&gt; (xmlString[&lt;span style="color:#6897bb;"&gt;0&lt;/span&gt;] == (&lt;span style="color:#cc7832;"&gt;char&lt;/span&gt;)&lt;span style="color:#6897bb;"&gt;0xfeff&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; xmlString = xmlString.Substring(&lt;span style="color:#6897bb;"&gt;1&lt;/span&gt;);&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;If you are curious about the 0xfeff business that is used to deal with the byte-order mark character in Unicode.&amp;#160; I picked up this trick from another post somewhere, but I can’t remember where currently.&amp;#160; &lt;/p&gt;  &lt;p&gt;Now we need to get the XML string into an XDocument class so that we can query it and manipulate it.&amp;#160; Since we have a string, we will need to create a StringReader to read it.&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:#ffc66d;"&gt;XDocument&lt;/span&gt; documentsXml = &lt;span style="color:#ffc66d;"&gt;XDocument&lt;/span&gt;&lt;span style="font-weight:normal;"&gt;.Load(&lt;/span&gt;&lt;span style="color:#cc7832;"&gt;new&lt;/span&gt; System.IO.&lt;span style="color:#ffc66d;"&gt;StringReader&lt;/span&gt;(xmlString));&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;If you wanted to work with the Association form instead of the form that started the workflow, you would use a line like the following.&amp;#160; The &lt;em&gt;InitiationData&lt;/em&gt; property of the SPWorkflowActivationProperties object provides XML that can be loaded into the XDocument class.&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:#ffc66d;"&gt;XDocument&lt;/span&gt; documentsXml = &lt;span style="color:#ffc66d;"&gt;XDocument&lt;/span&gt;&lt;span style="font-weight:normal;"&gt;.Load(workflowProperties.InitiationData);&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt; InfoPath documents always have a &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/08/29/using-a-namespace-with-linq-to-xml.aspx"&gt;namespace&lt;/a&gt; defined for my so we need to use the XNamespace object for any future references inside the InfoPath form.&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:#ffc66d;"&gt;XNamespace&lt;/span&gt; documentNamespace = &lt;span style="color:#a5c25c;"&gt;&amp;quot;http://schemas.microsoft.com/office/infopath/2003/myXSD/2098-05-03T16:48:38&amp;quot;&lt;/span&gt;;&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;At this point you can start using LINQ to XML to get the data you need out of the InfoPath form.&amp;#160; For example, if I had a field called &lt;em&gt;my:FirstName &lt;/em&gt;at the root of the document.&amp;#160; I could use something like the following to get the value.&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:#cc7832;"&gt;string&lt;/span&gt; firstName = documentsXml.Root.Element(documentNamespace + &lt;span style="color:#a5c25c;"&gt;&amp;quot;FirstName&amp;quot;&lt;/span&gt;).Value;&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;If you are working with other data types, you can always cast it like this.&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:#cc7832;"&gt;int&lt;/span&gt; customerId = &lt;span style="color:#cc7832;"&gt;int&lt;/span&gt;&lt;span style="font-weight:normal;"&gt;.Parse(documentsXml.Root.Element(documentNamespace + &lt;/span&gt;&lt;span style="color:#a5c25c;"&gt;&amp;quot;CustomerId&amp;quot;&lt;/span&gt;).Value);&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;In my &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/04/29/code-samples-from-my-short-talk-about-linq-to-xml.aspx"&gt;example&lt;/a&gt; from last week, you saw how you could use LINQ to XML to iterate through a repeating table.&amp;#160; As another example to iterate through a repeating table called &lt;em&gt;Items&lt;/em&gt; with an element of &lt;em&gt;Item&lt;/em&gt;, you could do something like the following:&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:#cc7832;"&gt;var&lt;/span&gt; items = &lt;span style="color:#cc7832;"&gt;from&lt;/span&gt; item &lt;span style="color:#cc7832;"&gt;in&lt;/span&gt; documentsXml.Root.Element(&lt;span style="color:#a5c25c;"&gt;&amp;quot;Items&amp;quot;&lt;/span&gt;).Elements(&lt;span style="color:#a5c25c;"&gt;&amp;quot;Item&amp;quot;&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#cc7832;"&gt;select&lt;/span&gt; item;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:#cc7832;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#cc7832;"&gt;var&lt;/span&gt; item &lt;span style="color:#cc7832;"&gt;in&lt;/span&gt; items)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;{&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#ffc66d;"&gt;Console&lt;/span&gt;&lt;span style="font-weight:normal;"&gt;.WriteLine(item.Element(&lt;/span&gt;&lt;span style="color:#a5c25c;"&gt;&amp;quot;Field1&amp;quot;&lt;/span&gt;).Value);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#ffc66d;"&gt;Console&lt;/span&gt;&lt;span style="font-weight:normal;"&gt;.WriteLine(item.Element(&lt;/span&gt;&lt;span style="color:#a5c25c;"&gt;&amp;quot;Field2&amp;quot;&lt;/span&gt;).Value);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;}&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;In this case, I use LINQ to return an IEnumberable&amp;lt;XElement&amp;gt; representing each repeating item.&amp;#160; I can then use this in a foreach loop to print out the results.&amp;#160; Yes I know you wouldn’t use Console.Writeline in a workflow, but you get the point here.&amp;#160; LINQ to XML really offers a lot of flexibility to manipulate the XML data inside a form.&amp;#160; Hopefully, it will make your experience with InfoPath and workflow a better one.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=900" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/CoreysDotNetTipOfTheDay/~4/binM95gZM3c" height="1" width="1"/&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/LINQ+to+XML/default.aspx">LINQ to XML</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/InfoPath/default.aspx">InfoPath</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Workflow/default.aspx">Workflow</category><feedburner:origLink>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/06/using-linq-to-xml-to-access-the-data-of-a-form-saved-to-a-form-library-in-a-workflow.aspx</feedburner:origLink></item><item><title>Quick Review of iPhone 3.0 Beta 4</title><link>http://feedproxy.google.com/~r/CoreysDotNetTipOfTheDay/~3/ZuhZUs50Cxw/quick-review-of-iphone-3-0-beta-4.aspx</link><pubDate>Wed, 06 May 2009 16:12:52 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:899</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=899</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/06/quick-review-of-iphone-3-0-beta-4.aspx#comments</comments><description>&lt;p&gt;I am kind of getting into the iPhone development thing so I joined the developer program a while back.&amp;#160; I ran Beta 3 for a while and I am not running Beta 4 on my iPhone.&amp;#160; I found Beta 3 to be quite stable, but Beta 4 I have had more issues with.&amp;#160; Before starting out with Beta 4, you will need to download iTunes 8.2 Pre-Release.&amp;#160; The install didn’t go as smooth as Beta 3 did and I seemed to have a minor issue restoring my phone but everything appears to be working ok.&amp;#160; As with the other Betas, the phone is noticeably faster in places.&amp;#160; However, about once a week, I will find that my phone is off.&amp;#160; After attempting to turn it back on, it will give me the Connect to iTunes screen.&amp;#160; This can be a big pain.&amp;#160; Connecting it to iTunes will make it magically start working again.&amp;#160; However, it happened to me today at work and iTunes was not an option.&amp;#160; I tried multiple times shutting it off and turning it back on again and eventually it started working again.&amp;#160; Other issues to note is that sometimes it doesn’t seem to pull down mail even though its scheduled to push on some and retrieve others every 30 minutes.&amp;#160; It doesn’t do this always, but it definitely does happen from time to time.&amp;#160; All in all, Beta 4 is usable (much better than 1 or 2), but it is not perfect.&amp;#160; My recommendation is to stay on Beta 3 if you want a beta and wait and see what we get with Beta 5 (which I am sure will be pretty soon).&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=899" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/CoreysDotNetTipOfTheDay/~4/ZuhZUs50Cxw" height="1" width="1"/&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/iPhone/default.aspx">iPhone</category><feedburner:origLink>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/06/quick-review-of-iphone-3-0-beta-4.aspx</feedburner:origLink></item></channel></rss>
