<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>SharePoint</title>
        <link>http://geekswithblogs.net/AmusinglyMOSS/category/9465.aspx</link>
        <description>The thing we all love to hate</description>
        <language>en-US</language>
        <copyright>Adam McKee</copyright>
        <managingEditor>adammmckee@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>SharePoint Saturday Presentation Slide Deck</title>
            <link>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/11/09/sharepoint-saturday-presentation-slide-deck.aspx</link>
            <description>&lt;p&gt;As promised, here's the slide deck for my SharePoint Saturday presentation:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dl.dropbox.com/u/1988231/SharePoint%20Saturday.pptx"&gt;&lt;strong&gt;Download Slide Deck&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks again for attending!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=136157"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=136157" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/AmusinglyMOSS/aggbug/136157.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Adam McKee</dc:creator>
            <guid>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/11/09/sharepoint-saturday-presentation-slide-deck.aspx</guid>
            <pubDate>Mon, 09 Nov 2009 16:11:07 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/AmusinglyMOSS/comments/136157.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/11/09/sharepoint-saturday-presentation-slide-deck.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/AmusinglyMOSS/comments/commentRss/136157.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/AmusinglyMOSS/services/trackbacks/136157.aspx</trackback:ping>
        </item>
        <item>
            <title>Speaking at SharePoint Saturday Raleigh on Nov. 7th</title>
            <link>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/10/23/speaking-at-sharepoint-saturday-raleigh-on-nov.-7th.aspx</link>
            <description>&lt;p&gt;Hey everyone,&lt;/p&gt;
&lt;p&gt;I'm super-excited (and a little nervous) that I was given a speaking slot at &lt;a href="http://www.sharepointsaturday.org/raleigh/meetings/5/MaximizingSharePointSearchComponents.aspx"&gt;&lt;strong&gt;SharePoint Saturday Raleigh on Nov. 7th&lt;/strong&gt;&lt;/a&gt;!  (Link goes to presentation overview.)&lt;/p&gt;
&lt;p&gt;There are quite a few SharePoint heavy-hitters attending (Michael Gannotti, Dan Lewis, and Joshua Carlisle to name a few), so go &lt;a href="https://www.clicktoattend.com/invitation.aspx?code=141969"&gt;&lt;strong&gt;register today&lt;/strong&gt;&lt;/a&gt; - seats are filling fast!&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Adam&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135682"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135682" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/AmusinglyMOSS/aggbug/135682.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Adam McKee</dc:creator>
            <guid>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/10/23/speaking-at-sharepoint-saturday-raleigh-on-nov.-7th.aspx</guid>
            <pubDate>Fri, 23 Oct 2009 20:41:23 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/AmusinglyMOSS/comments/135682.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/10/23/speaking-at-sharepoint-saturday-raleigh-on-nov.-7th.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/AmusinglyMOSS/comments/commentRss/135682.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/AmusinglyMOSS/services/trackbacks/135682.aspx</trackback:ping>
        </item>
        <item>
            <title>Migrating SharePoint Content to Oracle UCM #2</title>
            <link>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/10/19/migrating-sharepoint-content-to-oracle-ucm-2.aspx</link>
            <description>&lt;p&gt;So we landed on a solution.  It's not ideal by any stretch, but it does accomplish the purposes we set out to meet, and it does give us a (small) step in the right direction in terms of moving the client to using Oracle UCM as the sole company-wide content repository.&lt;/p&gt;
&lt;p&gt;To recap, here's the skinny on what we're facing:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;There is a mandate in the company to move all "content" to Oracle UCM (a content unification measure) &lt;/li&gt;
    &lt;li&gt;There is a significant amount of content in SharePoint (in the form of lists) that needs to make its way into Oracle UCM &lt;/li&gt;
    &lt;li&gt;Business users do not want to stop using the SharePoint interface for data entry (not to mention get all the "for-free" stuff that comes with SharePoint, such as alerts, content approval mechanisms, permissions, and workflow). &lt;/li&gt;
    &lt;li&gt;It is not feasible to move all of the lists over at once (we have a 3-week scope to move "something" over from SharePoint to UCM) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We came up with two approaches that had varying payoffs and risks.&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;strong&gt;The Simple Approach&lt;br /&gt;
    &lt;br /&gt;
    &lt;/strong&gt;Seeing how it was very important to keep all of the existing functionality in SharePoint in whatever solution we devised, we first thought of "replicating" list content to the UCM from SharePoint.  This approach involved writing a custom workflow that would fire on list item update, and would intelligently call a checkin function in UCM.&lt;br /&gt;
    &lt;br /&gt;
    This "simple" solution wouldn't come without risks - the first (and most obvious) one being that we'd have duplicated data that needed to stay in sync.  After thinking about the implications, we found that this risk wasn't terribly bad.  Since no content contribution happens on the UCM-side with this implementation, there's no harm if SharePoint goes down - there just wouldn't be any new data.  If the UCM goes down, syncing the data would mean saving the items again (a solution acceptable by the client).&lt;br /&gt;
    &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;The UCM-Heavy Approach&lt;br /&gt;
    &lt;br /&gt;
    &lt;/strong&gt;This approach was quite a bit more aggressive in terms of planning, execution, and support, but yielded a &lt;em&gt;much&lt;/em&gt; bigger step towards migrating the list content from SharePoint to UCM.&lt;br /&gt;
    &lt;br /&gt;
    The plan was to "switch out" standard SharePoint CrUD (and other) functionality for custom functionality that manipulated UCM content directly.  The idea was that all point-foward content would be manipulated directly in Oracle UCM through the SharePoint interface.  We felt that if we could nail this approach that we'd set a good proof-of-concept for migrating other content to UCM from SharePoint.&lt;br /&gt;
    &lt;br /&gt;
    This approach was monstrously invasive.  It involved re-writing a lot of stuff that comes for free with SharePoint, and was therefore expensive and risky.  However, the payoff of making such a big step towards UCM would be a huge win for the client. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;The Accepted Solution&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It will probably come as no surprise to many of you that we landed on solution #1.  What killed solution #2 was that UCM doesn't have an OOB way to handle broadcasting alerts based on permissions (on the item level) when content was created or updated.  Sure, we could write a workflow to sorta-kinda handle it in UCM, but we didn't have the time or budget for it.&lt;/p&gt;
&lt;p&gt;Next time, I'll tell you a little about how we're going about implementing solution #1, and what sorts of challenges are cropping up.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135578"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135578" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/AmusinglyMOSS/aggbug/135578.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Adam McKee</dc:creator>
            <guid>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/10/19/migrating-sharepoint-content-to-oracle-ucm-2.aspx</guid>
            <pubDate>Tue, 20 Oct 2009 00:39:08 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/AmusinglyMOSS/comments/135578.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/10/19/migrating-sharepoint-content-to-oracle-ucm-2.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/AmusinglyMOSS/comments/commentRss/135578.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/AmusinglyMOSS/services/trackbacks/135578.aspx</trackback:ping>
        </item>
        <item>
            <title>Oh Where, Oh Where Did My Team Collaboration List Templates Go?</title>
            <link>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/10/14/oh-where-oh-where-did-my-team-collaboration-list-templates.aspx</link>
            <description>&lt;p&gt;I stood up a standard publishing site on a vanilla MOSS instance for some custom workflow development I'm doing.  I went to make a list from the Announcement List template (the one that comes OOB), and found that most of the list and library templates that I was accustomed to seeing weren't there at all.&lt;/p&gt;
&lt;p&gt;It turns out that by default, the OOB Publishing site definition does not activate the &lt;strong&gt;Team Collaboration Lists&lt;/strong&gt; feature.  Go to Site Features and activate it for your publishing site, and they will appear.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135463"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135463" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/AmusinglyMOSS/aggbug/135463.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Adam McKee</dc:creator>
            <guid>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/10/14/oh-where-oh-where-did-my-team-collaboration-list-templates.aspx</guid>
            <pubDate>Wed, 14 Oct 2009 19:41:07 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/AmusinglyMOSS/comments/135463.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/10/14/oh-where-oh-where-did-my-team-collaboration-list-templates.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/AmusinglyMOSS/comments/commentRss/135463.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/AmusinglyMOSS/services/trackbacks/135463.aspx</trackback:ping>
        </item>
        <item>
            <title>Migrating SharePoint Content to Oracle UCM</title>
            <link>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/10/06/migrating-sharepoint-content-to-oracle-ucm.aspx</link>
            <description>&lt;div&gt;
&lt;div&gt;&lt;font face="Verdana" size="2"&gt;I’ve got an interesting challenge a client has asked me help with.  We are attempting to move items from multiple custom SharePoint lists to Oracle UCM and continue to manage/review/approve the data through the SharePoint interface.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana" size="2"&gt;Moving this list content to OUCM is part of a bigger strategy to centralize all of the “business truth” (content) to OUCM, while keeping SharePoint for collaboration.  There are a lot of things to consider, and lots of risks to document.&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana" size="2"&gt;I'm just now getting to documenting the state of the system, so I'll share some challenges and insights we've come across when we've landed on an approach &lt;/font&gt;&lt;font face="Verdana" size="2"&gt;- should be fun :)&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135341"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135341" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/AmusinglyMOSS/aggbug/135341.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Adam McKee</dc:creator>
            <guid>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/10/06/migrating-sharepoint-content-to-oracle-ucm.aspx</guid>
            <pubDate>Wed, 07 Oct 2009 03:21:56 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/AmusinglyMOSS/comments/135341.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/10/06/migrating-sharepoint-content-to-oracle-ucm.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/AmusinglyMOSS/comments/commentRss/135341.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/AmusinglyMOSS/services/trackbacks/135341.aspx</trackback:ping>
        </item>
        <item>
            <title>SharePoint 2010 Beta in 2 Months</title>
            <link>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/05/16/sharepoint-2010-beta-in-2-months.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Even though SharePoint 2007 still has the new car smell in many ways, SP 2010 is just around the corner.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;a href="http://www.networkworld.com/news/2009/051509-microsoft-sharepoint.html?hpg1=bn"&gt;http://www.networkworld.com/news/2009/051509-microsoft-sharepoint.html?hpg1=bn&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132161"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132161" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/AmusinglyMOSS/aggbug/132161.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Adam McKee</dc:creator>
            <guid>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/05/16/sharepoint-2010-beta-in-2-months.aspx</guid>
            <pubDate>Sun, 17 May 2009 07:44:43 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/AmusinglyMOSS/comments/132161.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/05/16/sharepoint-2010-beta-in-2-months.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/AmusinglyMOSS/comments/commentRss/132161.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/AmusinglyMOSS/services/trackbacks/132161.aspx</trackback:ping>
        </item>
        <item>
            <title>Lessons Learned From Making SharePoint Recommendations</title>
            <link>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/04/21/lessons-learned-from-making-sharepoint-recommendations.aspx</link>
            <description>&lt;p&gt;I was recently asked what lessons I've learned when recommending SharePoint for for meeting a business need.  While books are written on this topic, I've distilled the list down to what I think are the core of the decision-making process.&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;strong&gt;Know what your stakeholders require in objective, actionable terms&lt;br /&gt;
    &lt;br /&gt;
    &lt;/strong&gt;This is known as extracting &lt;em&gt;core business drivers&lt;/em&gt;.  Note that I didn't say &lt;em&gt;requirements&lt;/em&gt;.  &lt;em&gt;Requirements&lt;/em&gt; are what you hand to your developers - &lt;em&gt;core business drivers&lt;/em&gt; are what you use to make your recommendation.&lt;br /&gt;
    &lt;br /&gt;
    Right questions to ask at this time: &lt;br /&gt;
    -  &lt;em&gt;How does process x drive revenue?&lt;br /&gt;
    -  How much productivity loss constitutes a bottleneck in x process?&lt;br /&gt;
    -  How much must efficiency increase for x process to meet your defined goals?&lt;br /&gt;
    &lt;/em&gt;&lt;br /&gt;
    Wrong questions to ask at this time: &lt;br /&gt;
    -  &lt;em&gt;What problems do you have with your current system? &lt;br /&gt;
    -  What do you want your new system to look like? &lt;br /&gt;
    -  How do you want the system to function? &lt;br /&gt;
    &lt;/em&gt;&lt;br /&gt;
    Note that the difference between the right and wrong questions is objectivity vs. subjectivity. If you can't get a quantifyable answer, the question should never be asked.  And in reality, you should be answering those wrong questions yourself once you have digested the business drivers.&lt;br /&gt;
    &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Map the core business drivers up to things that SharePoint does well &lt;br /&gt;
    &lt;/strong&gt;&lt;br /&gt;
    Another way to say this is, “Don't try to make SharePoint do something it's not designed to do.”  This concept is simple, but it's very hard to establish effectively because SharePoint does so many blasted different things.  &lt;br /&gt;
    &lt;br /&gt;
    It's at this point where you'd decide whether using WSS or a full-blown MOSS implementation will fit the bill.&lt;br /&gt;
    &lt;br /&gt;
    Be careful not to get into &lt;a href="http://www.codinghorror.com/blog/archives/001230.html"&gt;technical debt&lt;/a&gt; when mapping things up.  If you've never used Form Services before, you'd better be &lt;em&gt;darn sure&lt;/em&gt; it's the right fit for the job.&lt;br /&gt;
    &lt;br /&gt;
    Every SharePoint feature you decide to implement should correlate to a core business driver.  If you stick to this principle, you will avoid a lot of tehnical debt.&lt;br /&gt;
    &lt;br /&gt;
    Just because SharePoint can do something doesn’t mean that you have to use it.  Not every solution has a problem, so don't expect to use the entire of the SharePoint canon of functionality.&lt;br /&gt;
    &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Decide whether the benefits outweigh the costs&lt;/strong&gt;&lt;br /&gt;
    &lt;br /&gt;
    Even if all of your quantified core business drivers are covered by your recommendation, there are a lot of unquantifiable things that will crop up.  I'm talking about things like the personalities/predispositions of the stakeholders toward SharePoint, to the adoption propensity of the user base.&lt;br /&gt;
    &lt;br /&gt;
    Rules are FAR more important than tools. Be smart on where governance is required to keep your SharePoint instance humming (even more books have been written on this matter, so I’m not going to get into it now), and build it into your proposal. &lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131371"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131371" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/AmusinglyMOSS/aggbug/131371.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Adam McKee</dc:creator>
            <guid>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/04/21/lessons-learned-from-making-sharepoint-recommendations.aspx</guid>
            <pubDate>Wed, 22 Apr 2009 10:24:05 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/AmusinglyMOSS/comments/131371.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/04/21/lessons-learned-from-making-sharepoint-recommendations.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/AmusinglyMOSS/comments/commentRss/131371.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/AmusinglyMOSS/services/trackbacks/131371.aspx</trackback:ping>
        </item>
        <item>
            <title>SharePoint Configuration Values Best Practices</title>
            <link>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/03/05/sharepoint-configuration-values-best-practices.aspx</link>
            <description>&lt;p&gt;Every ASP.NET developer is accustomed to writing configurable values into the web.config for directing programming logic at runtime.  This practice has always made a lot of sense for storing things that will change depending where assets (such as databases, web services, etc.) are going to live come production time.&lt;/p&gt;
&lt;p&gt;The tricky part comes in when you need to store configurable values that change the behavior of your code, but don't apply to other systems in any meaningful way.  An example of one such configuration setting would be a magic number that is meaningful to determine the state of a piece of data in your system, but is entirely useless to the rest of the world.  &lt;/p&gt;
&lt;p&gt;While you can get away with storing values (such as magic numbers) in the web.config for most standard ASP.NET applications, doing so with SharePoint is a major no-no.  SharePoint can overwrite sections of the web.config not supported by WSP/features when solution deployments are made, and you don't want to run the risk of your values being wiped out.  It also goes without saying that the less cluttered you can make the web.config, the better - it's complicated enough as it is.&lt;/p&gt;
&lt;p&gt;So, if not in the web.config, how and where should you store configurable values for your custom SharePoint code, and how do you got about fetching it safely and efficiently?  &lt;/p&gt;
&lt;p&gt;It takes two components:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;An XML document (stored in a known location - a document library is ideal) to store the configuration settings &lt;/li&gt;
    &lt;li&gt;A class to cache, and then fetch the values at runtime &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Simple enough, eh?  Here's an example of what your XML document should look like (You'll notice that it looks identical to the &amp;lt;appSettings&amp;gt; node in a standard web.config file):&lt;/p&gt;
&lt;p style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: gainsboro"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;appSettings&amp;gt;&lt;br /&gt;
  &amp;lt;add key="FeedCacheTime" value="300" /&amp;gt;&lt;br /&gt;
  &amp;lt;add key="DataInProcessId" value="92" /&amp;gt;&lt;br /&gt;
  &amp;lt;add key="BuyoutThreshold" value="42" /&amp;gt;&lt;br /&gt;
&amp;lt;/appSettings&amp;gt;&lt;/p&gt;
&lt;p&gt;And here's the code for fetching the values at runtime (please note where you are to supply where you store the XML configuration document you created in the previous step):&lt;/p&gt;
&lt;p style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: gainsboro"&gt;using System;&lt;br /&gt;
using System.Collections.Specialized;&lt;br /&gt;
using System.Configuration;&lt;br /&gt;
using System.Xml;&lt;br /&gt;
using Microsoft.SharePoint;&lt;br /&gt;
&lt;br /&gt;
namespace Utilities&lt;br /&gt;
{&lt;br /&gt;
    public static class CustomConfigurationManager&lt;br /&gt;
    {&lt;br /&gt;
        private static NameValueCollection _configurationItems;&lt;br /&gt;
&lt;br /&gt;
        static CustomConfigurationManager()&lt;br /&gt;
        {&lt;br /&gt;
            LoadConfiguration();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private static void LoadConfiguration()&lt;br /&gt;
        {&lt;br /&gt;
            XmlDocument configurationDocument = new XmlDocument();&lt;br /&gt;
            &lt;br /&gt;
            string portalUri = string.Empty;&lt;br /&gt;
            string relativeUrl = string.Empty;&lt;br /&gt;
            string requestUrl = string.Empty;&lt;br /&gt;
            string xmlString = string.Empty;&lt;br /&gt;
&lt;br /&gt;
            SPSecurity.CodeToRunElevated secureCode = null;&lt;br /&gt;
            &lt;br /&gt;
            if (secureCode == null)&lt;br /&gt;
            {&lt;br /&gt;
                secureCode = delegate&lt;br /&gt;
                {&lt;br /&gt;
                    portalUri = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority).ToLower();&lt;br /&gt;
                    relativeUrl = GetRelativeUrl(&lt;strong&gt;&lt;em&gt;&lt;font style="BACKGROUND-COLOR: #ffff00"&gt;URL TO CONFIGURATION XML FILE&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;);&lt;br /&gt;
                    requestUrl = portalUri + relativeUrl;&lt;br /&gt;
&lt;br /&gt;
                    using (SPWeb web = new SPSite(requestUrl).OpenWeb())&lt;br /&gt;
                    {&lt;br /&gt;
                        Uri uri = new Uri(requestUrl);&lt;br /&gt;
                        SPFile file = web.GetFile(uri.AbsolutePath);&lt;br /&gt;
                        &lt;br /&gt;
                        if (file != null)&lt;br /&gt;
                        {&lt;br /&gt;
                            byte[] bytes = file.OpenBinary();&lt;br /&gt;
                            xmlString = Encoding.ASCII.GetString(bytes);&lt;br /&gt;
                            bytes = null;&lt;br /&gt;
                            configurationDocument.LoadXml(xmlString);&lt;br /&gt;
                        }&lt;br /&gt;
                        else&lt;br /&gt;
                        {&lt;br /&gt;
                            xmlString = string.Empty;&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                };&lt;br /&gt;
            }&lt;br /&gt;
            SPSecurity.RunWithElevatedPrivileges(secureCode);&lt;br /&gt;
&lt;br /&gt;
            LoadAppSettingsCollection(configurationDocument);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private static void LoadAppSettingsCollection(XmlDocument configurationDocument)&lt;br /&gt;
        {&lt;br /&gt;
            _configurationItems = new NameValueCollection();&lt;br /&gt;
&lt;br /&gt;
            XmlNodeList configNodes = configurationDocument.GetElementsByTagName("add");&lt;br /&gt;
            &lt;br /&gt;
            foreach (XmlNode node in configNodes)&lt;br /&gt;
            {&lt;br /&gt;
                string key = null;&lt;br /&gt;
                string value = null;&lt;br /&gt;
&lt;br /&gt;
                if (!string.IsNullOrEmpty(node.Attributes["key"].Value))&lt;br /&gt;
                {&lt;br /&gt;
                    key = node.Attributes["key"].Value;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (!string.IsNullOrEmpty(node.Attributes["value"].Value))&lt;br /&gt;
                {&lt;br /&gt;
                    value = node.Attributes["value"].Value;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (!string.IsNullOrEmpty(key) &amp;amp;&amp;amp; !string.IsNullOrEmpty(value))&lt;br /&gt;
                {&lt;br /&gt;
                    _configurationItems.Add(key, value);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private static string GetRelativeUrl(string url)&lt;br /&gt;
        {&lt;br /&gt;
            StringBuilder builder = new StringBuilder(url.ToLower());&lt;br /&gt;
            if (url.ToLower().IndexOf("https://") &amp;gt; -1)&lt;br /&gt;
            {&lt;br /&gt;
                builder.Replace("https://", string.Empty);&lt;br /&gt;
                builder.Remove(0, builder.ToString().IndexOf("/"));&lt;br /&gt;
            }&lt;br /&gt;
            else if (url.ToLower().IndexOf("http://") &amp;gt; -1)&lt;br /&gt;
            {&lt;br /&gt;
                builder.Replace("http://", string.Empty);&lt;br /&gt;
                builder.Remove(0, builder.ToString().IndexOf("/"));&lt;br /&gt;
            }&lt;br /&gt;
            return builder.ToString();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public static NameValueCollection AppSettings&lt;br /&gt;
        {&lt;br /&gt;
            get { return _configurationItems; }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;To access your configuration settings, you'd call it like this:&lt;/p&gt;
&lt;p style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: gainsboro"&gt;string feedCacheTime = Utilities.CustomConfigurationManager.AppSettings["FeedCacheTime"];&lt;/p&gt;
&lt;p&gt;This methodology accomplishes a few things:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;The call to the configuration is almost identical to getting it out of web.config (no real learning curve to implement) &lt;/li&gt;
    &lt;li&gt;The configuration file is only loaded once per IIS session, so you don't have the overhead of lots of calls to the configuration document library, nor do you waste time waiting for it to load something that isn't going to change very frequently &lt;/li&gt;
    &lt;li&gt;You "shield" the rest of the world from your code-specific configuration (good encapsulation practice) &lt;/li&gt;
    &lt;li&gt;You don't have to worry about SharePoint wiping your configuration due to other solution deployment changes. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129862"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129862" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/AmusinglyMOSS/aggbug/129862.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Adam McKee</dc:creator>
            <guid>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/03/05/sharepoint-configuration-values-best-practices.aspx</guid>
            <pubDate>Fri, 06 Mar 2009 03:52:30 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/AmusinglyMOSS/comments/129862.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/03/05/sharepoint-configuration-values-best-practices.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/AmusinglyMOSS/comments/commentRss/129862.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/AmusinglyMOSS/services/trackbacks/129862.aspx</trackback:ping>
        </item>
        <item>
            <title>Workflow SPListItem modified by SHAREPOINT\system</title>
            <link>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/02/23/workflow-splistitem-modified-by-sharepointsystem.aspx</link>
            <description>&lt;p&gt;&lt;font color="#000000"&gt;I came across this last week.  It took me entirely too long to get it fixed, considering how simple the resolution was.  It turns out that my understanding of how Workflow operates wasn't up to snuff.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#000000"&gt;Scenario&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;I have a workflow attached to a forms library, activating when a list item is modified.  The intent of the workflow is to modify one or more fields on a particular list item in this list, after it is edited by another process.  Each of these fields are modified in different methods, which are tied to different nodes in the workflow - in other words, I couldn't update them all at the same time with the same &lt;strong&gt;&lt;strong&gt;workflowProperties.Item.Update()&lt;/strong&gt; &lt;/strong&gt;call.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;As the workflow ran, the first update to the list item (which happened to be a &lt;strong&gt;workflowProperties.Item.File.SaveBinary()&lt;/strong&gt; call) worked perfectly.  However, once the workflow got to the second field it was attempting to update, I got the following error:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Microsoft.SharePoint.SPException: A file with the name myfile.xml already exists. It was last modified by SHAREPOINT\system on 21 Feb 2009 15:31:28 -0500.&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#000000"&gt;Troubleshooting&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;I figured that the error wasn't lying to me, but I wasn't sure how was supposed to make the code "aware" of the newly updated list item for the next update call.  I tried all permutations and variations of the Update() and SaveBinary() with all their different overloads to no avail.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;I then discovered a very important fact - when the workflow initially hydrates, it "fetches" the data stored in the workflowProperties object only once up-front, which means that if I am going to run &lt;strong&gt;workflowProperties.Item.Update()&lt;/strong&gt; twice in a row (as I am doing in my workflow), I'm going to have to re-fetch the list item between Update() calls.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#000000"&gt;Solution&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;I added a property to my Workflow class (please forgive the flagrant use of VB.NET):&lt;/font&gt;&lt;/p&gt;
&lt;font size="2"&gt;
&lt;p&gt;&lt;font face="Arial" size="2"&gt;&lt;font color="#0000ff"&gt;Private ReadOnly Property&lt;/font&gt; WorkflowItem() &lt;font color="#0000ff"&gt;As&lt;/font&gt; SPListItem&lt;/font&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Get&lt;/font&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; library &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; SPDocumentLibrary&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;library = &lt;font color="#0000ff"&gt;CType&lt;/font&gt;(workflowProperties.Web.Lists(workflowProperties.ListId), SPDocumentLibrary)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;Return&lt;/font&gt; library.GetItemById(workflowProperties.ItemId)&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt; &lt;font color="#0000ff"&gt;Get&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt; &lt;font color="#0000ff"&gt;Property&lt;/font&gt;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;From then on, instead of using &lt;strong&gt;workflowProperties.Item&lt;/strong&gt;, I use &lt;strong&gt;myItem = Me.WorkflowItem &lt;/strong&gt;(to force the fetch each time I need to get to the item), and then use &lt;strong&gt;myItem.Update()&lt;/strong&gt;.  The problem evaporated altogether.&lt;/p&gt;
&lt;font size="2"&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#000000"&gt;References&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial" color="#000000"&gt;&lt;a href="http://www.k2distillery.com/2009/01/workflow-splistitem-out-of-date.html"&gt;http://www.k2distillery.com/2009/01/workflow-splistitem-out-of-date.html&lt;/a&gt;&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;/font&gt;&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129616"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129616" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/AmusinglyMOSS/aggbug/129616.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Adam McKee</dc:creator>
            <guid>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/02/23/workflow-splistitem-modified-by-sharepointsystem.aspx</guid>
            <pubDate>Mon, 23 Feb 2009 23:36:46 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/AmusinglyMOSS/comments/129616.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/02/23/workflow-splistitem-modified-by-sharepointsystem.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/AmusinglyMOSS/comments/commentRss/129616.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/AmusinglyMOSS/services/trackbacks/129616.aspx</trackback:ping>
        </item>
        <item>
            <title>How to Grow a MOSS Farm #1</title>
            <link>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/01/31/how-to-grow-a-moss-farm-1.aspx</link>
            <description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;Okay, Mr. SharePoint Architect.  You've been asked to lead your developers to SharePoint glory, and you're ready to whip out your MSDN DVDs, and stand up a brand spankin'-new MOSS farm.  You know the drill, too - you've done this 10 or 20 times, so it's no sweat.  Right?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;Well, it isn't much of a sweat if the client wants a 100% vanilla, no-frills, no-customization MOSS instance.  While this sounds ludicrous to you and me now, it brings me unending amusement how so many people bought SharePoint licenses thinking it would be a turn-key solution to all of their business problems.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;"SharePoint is 100% configurable - all you'll need are some BA's who are savvy in XML to solve all of your business problems!"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;No, that's not a real quote, but it's darn close to the fleece that was pulled over many of our client's eyes.  But it's great news for me, because it means that I'm gainfully employed now that they all realize that they can't get where they want to go without help from us SharePoint magicians...  but I digress (albeit, a little snootily).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;So now that I'm done rambling, here’s the real reason I’m writing this post: I want to impart some questions that you should ponder before diving into an architecture diagram.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: Arial; mso-bidi-font-family: Arial"&gt;1.     &lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;Will the environment be a 32-bit or a 64-bit environment?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt 0.5in; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;Before we go any further, allow me to relay something to you that was stated to me by a member of Microsoft support staff when I was asking for help on a super-obscure error in the SharePoint log (the specifics of the error don’t matter, just his response):&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt 0.5in; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;“Yeah, MOSS isn’t really designed for a 32-bit implementation – it’s really meant for a 100% 64-bit platform.”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt 0.5in; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;So there you have it, ladies and gentlemen – while MOSS will run in 32-bit, you’ll want to build a 64-bit environment realize the full potential of MOSS.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;You’ll run into less weird problems that require you to call granddaddy Microsoft for help.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt 0.5in; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;Now, don’t get me wrong, I’ve done quite a few very successful 32-bit implementations, but I’ve seen far better perofrmance (in terms of speed and less utter lunacy in the error logs) from 64-bit installs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: Arial; mso-bidi-font-family: Arial"&gt;2.     &lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;What version of SharePoint should be installed (WSS 3.0, MOSS Standard Edition, MOSS Enterprise Edition)?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt 0.5in; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;The differences can be found &lt;a href="http://office.microsoft.com/en-us/products/FX101758691033.aspx"&gt;&lt;span style="COLOR: blue"&gt;here&lt;/span&gt;&lt;/a&gt;.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Your decision will mostly be driven by scale of the implentation, but here are a few “litmus” tests for weeding out what they really want:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;ul&gt;
        &lt;li&gt;
        &lt;div&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;Search requirements &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
        &lt;/li&gt;
        &lt;li&gt;
        &lt;div&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;Collaboration requirements&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
        &lt;/li&gt;
        &lt;li&gt;
        &lt;div&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;CMS requirements&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
        &lt;/li&gt;
        &lt;li&gt;
        &lt;div&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;Audience control requirements&lt;/span&gt;&lt;/div&gt;
        &lt;/li&gt;
        &lt;li&gt;
        &lt;div&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;Integrating with/searching external application data&lt;/span&gt;&lt;/div&gt;
        &lt;/li&gt;
    &lt;/ul&gt;
&lt;/ul&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: Arial; mso-bidi-font-family: Arial"&gt;3.     &lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;How many web application servers are required in the farm?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt 0.5in; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;This will be affected primarily by the load you’re expecting to see (among other things), and I may choose to write more about this later.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: Arial; mso-bidi-font-family: Arial"&gt;4.     &lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;What type of external access requirements are there? What constitutes an “outside” user?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt 0.5in; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;These questions have implications primarily in the authentication space, but depending on the answer, you’ll want to think about extending your content-bearing sites to include other forms of authentication (forms or windows), alternate access mappings, and the implications of who will get profiles.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;You should be able to at least get the conversations started about how to architect your farm with these thoughts.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial"&gt;Next issue, I’m going to dive a bit into some system requirements for what I’ve seen work for development environments and production environments for MOSS Enterprise.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129115"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129115" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/AmusinglyMOSS/aggbug/129115.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Adam McKee</dc:creator>
            <guid>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/01/31/how-to-grow-a-moss-farm-1.aspx</guid>
            <pubDate>Sun, 01 Feb 2009 09:52:22 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/AmusinglyMOSS/comments/129115.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/AmusinglyMOSS/archive/2009/01/31/how-to-grow-a-moss-farm-1.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/AmusinglyMOSS/comments/commentRss/129115.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/AmusinglyMOSS/services/trackbacks/129115.aspx</trackback:ping>
        </item>
    </channel>
</rss>