<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Reza on blogging [MVP]</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/default.aspx</link><description>&lt;div align="center"&gt;&lt;img src="http://library.mat.uniroma1.it/pics/news.blink.ico.gif"&gt;THIS BLOG HAS MOVED TO: &lt;a href="http://blogs.devhorizon.com/reza"&gt;http://blogs.devhorizon.com/reza&lt;/a&gt;&lt;/div&gt;</description><dc:language>en-US</dc:language><generator>CommunityServer 1.0 (Build: 1.0.1.50214)</generator><item><title>This blog is now closed. Please update your links!</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/11/22/516.aspx</link><pubDate>Fri, 23 Nov 2007 02:29:00 GMT</pubDate><guid isPermaLink="false">fd16ab98-2804-4335-a2c7-0a6ea5ec7f8e:516</guid><dc:creator>rezaa</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.devhorizon.com/blogs/reza_on_blogging/comments/516.aspx</comments><wfw:commentRss>http://blogs.devhorizon.com/blogs/reza_on_blogging/commentrss.aspx?PostID=516</wfw:commentRss><description>&lt;p&gt;After blogging here for &gt; 3 years, I've decided to move my blog to &lt;a href="http://blogs.devhorizon.com/reza"&gt;http://blogs.devhorizon.com/reza&lt;/a&gt; .That's mainly because anonymous comments stopped working and I also lost my comments in this blog at one point. I have gone ahead and spent more than 6 hours to fix the problem and find a way to get my comments back, but no luck. I can't afford spending more time on issues of this kind especially when I can build a new blog in less than 1 hour while I was &lt;a href="http://blogs.devhorizon.com/reza/?p=21"&gt;waiting &lt;/a&gt;for my next flight to Dubai!!  &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p&gt;There was already a redirector at &lt;a href="http://blogs.devhorizon.com/reza"&gt;http://blogs.devhorizon.com/reza&lt;/a&gt; to redirect the traffic to this blog. I removed that redirection and built the new blog at that address, so if you were using that URL to get to here, please be informed that from now on, you will be redirected to the new blog. RSS feed has also changed to &lt;a href="http://feeds.feedburner.com/RezaAlirezaei"&gt;http://feeds.feedburner.com/RezaAlirezaei&lt;/a&gt; . See you in my new blog!&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;hr align="left"&gt;

&lt;p&gt;&lt;/p&gt;&lt;img src="http://blogs.devhorizon.com/aggbug.aspx?PostID=516" width="1" height="1"&gt;</description></item><item><title>Installing Team Foundation Server in single Server Mode (WSS 2.0)</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/11/04/515.aspx</link><pubDate>Sun, 04 Nov 2007 08:02:00 GMT</pubDate><guid isPermaLink="false">fd16ab98-2804-4335-a2c7-0a6ea5ec7f8e:515</guid><dc:creator>rezaa</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.devhorizon.com/blogs/reza_on_blogging/comments/515.aspx</comments><wfw:commentRss>http://blogs.devhorizon.com/blogs/reza_on_blogging/commentrss.aspx?PostID=515</wfw:commentRss><description>&lt;SPAN&gt;
&lt;P&gt;&lt;SPAN&gt;I have installed TFS couple of times, but it has been always in a dual-server mode which basically puts the Team Foundation data and the application tiers on separate computers. Last week, I was asked by a colleague of mine to give him a hand on installing TFS in a single server mode. Well, I am not a TFS expert, but when it comes to a technology that somehow relates to SharePoint somewhere, I step in and learn enough about that technology&amp;nbsp;to protect myself&amp;nbsp;for rainy days in future. As a result, I have been involved in many integration projects&amp;nbsp;that SharePoint is the other end or it is used under the hood. Despite the fact that I am known for 100% SharePoint architecting and dev , I *really* enjoy this type of work a lot more.It is much more fun plus the exposure you can get to other complementary technologies around SharePoint. Obviously, the challenge is always to stay focused and indeed not to be derailed.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR&gt;&lt;BR&gt;Okay, back to the issue. I agree wholeheartedly that &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;TFS &lt;/SPAN&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=e54bf6ff-026b-43a4-ade4-a690388f310e&amp;amp;displaylang=en)"&gt;&lt;SPAN&gt;documentation&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt; is really good , but I think it is a bit complicated for many users, definitely lacks some screenshots and a very important tip which is the fact that TFS expects SharePoint configuration database to be called STS_Config_TFS. One other thing that I have found very important (and not emphasized enough in the documentation)&amp;nbsp;is to create and use right user accounts for various steps during the installation process.Having said this , I decided to create &lt;/SPAN&gt;&lt;SPAN&gt;a &lt;A href="http://www.devhorizon.com/Misc/TFS_Single.docx"&gt;document&lt;/A&gt; that describes the installation steps in a more summarized way along with many screenshots of the important steps. You can download this document &lt;A href="http://www.devhorizon.com/Misc/TFS_Single.docx"&gt;here&lt;/A&gt;&amp;nbsp;and please let me know what you think.&lt;/SPAN&gt;&lt;/P&gt;
&lt;HR&gt;&lt;img src="http://blogs.devhorizon.com/aggbug.aspx?PostID=515" width="1" height="1"&gt;</description></item><item><title>Calling all volunteers for Toronto SharePoint Camp 2007!!</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/10/17/514.aspx</link><pubDate>Wed, 17 Oct 2007 18:26:00 GMT</pubDate><guid isPermaLink="false">fd16ab98-2804-4335-a2c7-0a6ea5ec7f8e:514</guid><dc:creator>rezaa</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.devhorizon.com/blogs/reza_on_blogging/comments/514.aspx</comments><wfw:commentRss>http://blogs.devhorizon.com/blogs/reza_on_blogging/commentrss.aspx?PostID=514</wfw:commentRss><description>&lt;P&gt;&lt;FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Toronto SharePoint Camp 2007 is only 3 days away – and we need your help.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;If you have already registered to help us or if you are interested, then tonight is the right time to get more involved.Please join other volunteers at 6:00pm at the Toronto SharePoint User Group venue at 2 Bloor West, so that we can allocate job roles, functions, and responsibilities surrounding the event this Saturday.&lt;/P&gt;
&lt;P&gt;Thank you in advance for donating your time to support the Toronto SharePoint Camp 2007.&lt;/P&gt;
&lt;P&gt;See you tonight,
&lt;HR&gt;
&lt;/P&gt;&lt;img src="http://blogs.devhorizon.com/aggbug.aspx?PostID=514" width="1" height="1"&gt;</description></item><item><title>Getting user login from the PeopleEditor via Code</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/10/04/510.aspx</link><pubDate>Thu, 04 Oct 2007 19:56:00 GMT</pubDate><guid isPermaLink="false">fd16ab98-2804-4335-a2c7-0a6ea5ec7f8e:510</guid><dc:creator>rezaa</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.devhorizon.com/blogs/reza_on_blogging/comments/510.aspx</comments><wfw:commentRss>http://blogs.devhorizon.com/blogs/reza_on_blogging/commentrss.aspx?PostID=510</wfw:commentRss><description>&lt;P&gt;Assuming you have a people editor control defined like below:&lt;/P&gt;
&lt;P&gt;&amp;lt;wssawc:PeopleEditor AllowEmpty="false"&amp;nbsp; ID="myPeopleEditorControl" runat=server SelectionSet="&lt;STRONG&gt;User&lt;/STRONG&gt;" MaximumEntities="1" MultiSelect="&lt;STRONG&gt;false&lt;/STRONG&gt;" AllowTypeIn="false" Width='500px' /&amp;gt;&lt;/P&gt;
&lt;P&gt;The following code sample will get you the currently logged on user's login from the PeopleEditor control:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; ArrayList peEntities = myPeopleEditorControl.Entities;&lt;BR&gt;&amp;nbsp; PickerEntity pickEn = (PickerEntity)peEntities[0];&lt;BR&gt;&amp;nbsp; stringLogIn = pickEn.Key; &lt;/P&gt;
&lt;P&gt;This comes handy when you want to create an SPUser context out of the entities kept in the PeopleEditor control. For example:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;private SPUser GetUser(string logIn)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPUser user = this.workflowProperties.Web.SiteUsers[logIn];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return user;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;Don't forget Required Field Validation on your people editor control if you want the code not to break on you.&lt;/P&gt;
&lt;HR&gt;&lt;img src="http://blogs.devhorizon.com/aggbug.aspx?PostID=510" width="1" height="1"&gt;</description></item><item><title>Toronto SharePoint Camp 2007 Count down</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/09/30/509.aspx</link><pubDate>Mon, 01 Oct 2007 04:02:00 GMT</pubDate><guid isPermaLink="false">fd16ab98-2804-4335-a2c7-0a6ea5ec7f8e:509</guid><dc:creator>rezaa</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.devhorizon.com/blogs/reza_on_blogging/comments/509.aspx</comments><wfw:commentRss>http://blogs.devhorizon.com/blogs/reza_on_blogging/commentrss.aspx?PostID=509</wfw:commentRss><description>&lt;P&gt;The &lt;A href="http://www.torontosharepointcamp.com/Pages/Default.aspx"&gt;Toronto SharePoint Camp 2007&lt;/A&gt; is just around the corner, 20&lt;SUP&gt;th&lt;/SUP&gt; of October in Toronto. &lt;SPAN&gt;&lt;A href="http://www.torontosharepointcamp.com/Lists/User%20Registration/NewForm.aspx?Source=/Pages/Default.aspx"&gt;&lt;STRONG&gt;Register&lt;/STRONG&gt;&lt;/A&gt; Today, Space is limited! &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Remember, this is a *Free* event and no matter how expert you are in SharePoint, there should be something there for you to learn. For those of you who keep sending me emails asking for events and opportunities to learn MOSS 2007, there you are! Here is a great opportunity to meet a lot of SharePoint guys, learn for top-notch industry experts plus a lot of fun and PRIZES!!! &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;I have two demos prepared one targeting the advanced audience and the other one for beginners. I probably have to choose one of them if there are many speakers lined up. &lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Please keep an eye on my blog, Eli’s &lt;A href="http://weblogs.asp.net/erobillard/default.aspx"&gt;blog&lt;/A&gt; and &lt;A href="http://www.sharepointbuzz.com/"&gt;SharePoint Buzz blog&lt;/A&gt; for updates and &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;announcements&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV align="center"&gt;&lt;A href="http://www.torontosharepointcamp.com"&gt;&lt;IMG src="http://www.sharepointbuzz.com/wp-content/uploads/2007/09/toronto-sharepoint-camp.jpg"&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;
&lt;HR&gt;&lt;img src="http://blogs.devhorizon.com/aggbug.aspx?PostID=509" width="1" height="1"&gt;</description></item><item><title>Item Level Permission in workflow CreateTaskXXX activities</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/09/27/508.aspx</link><pubDate>Thu, 27 Sep 2007 07:00:00 GMT</pubDate><guid isPermaLink="false">fd16ab98-2804-4335-a2c7-0a6ea5ec7f8e:508</guid><dc:creator>rezaa</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.devhorizon.com/blogs/reza_on_blogging/comments/508.aspx</comments><wfw:commentRss>http://blogs.devhorizon.com/blogs/reza_on_blogging/commentrss.aspx?PostID=508</wfw:commentRss><description>&lt;P&gt;I wish there was an easier way of incorporating item-level security into "CreateTask" and "CreateTaskWithContetType" activities other than what &lt;A href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowtask_members.aspx"&gt;SPWorkFlowTask &lt;/A&gt;offers.I think this is a serious requirement for many clients who asks for a process to be modeled by workflow and therefore there should be an easier way to accomplish it. sadly,workflows assume that users already have permission to access the task list and once the tasks are created by workflow, you are basically on your own to set up the required permissions. If you fail to properly set the required permissions on item level basis and aside from the issue described above, assignee might get an email regarding the new task , click on link and boom ...... ugly "Access Denied" will be thrown at his face. There is a sample activity &lt;A href="http://www.codeproject.com/useritems/CustomActivity.asp"&gt;here &lt;/A&gt;that you can check out , but for me it only worked in SharePoint designer and I was never able to get it to work as an activity in my custom workflows not written in SPD.&lt;/P&gt;
&lt;P&gt;Here is the way I do it:&lt;/P&gt;
&lt;P&gt;1) I create the Task using "CreateTaskWithContentType" activity from my workflow. Obviously, I already have a content type in place.&lt;/P&gt;
&lt;P&gt;2) I have also attached an event handler to the content type I use above. Oops! I forgot to say that there is no way you can visually do that (except &lt;A href="http://www.codeplex.com/SPSCustomAdmin/"&gt;this one&lt;/A&gt;), so I use a programmatic approach to assign an event handler to my content type when the feature that contains my content type get activated.&lt;/P&gt;
&lt;P&gt;3) So I have to create a Feature that contains the content type (MyTaskContentType.xml is content type definition which I will skip for the sake of code brevity)&lt;BR&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;&lt;BR&gt;&amp;lt;Feature Id="5FED1202-C6B8-453e-9EC0-F328655ED4DC"&lt;BR&gt;&amp;nbsp; Title="My Workflow Task Content Types"&lt;BR&gt;&amp;nbsp; Description="...."&lt;BR&gt;&amp;nbsp; Version="12.0.0.0"&lt;BR&gt;&amp;nbsp; Scope="Site"&lt;BR&gt;&amp;nbsp; xmlns="&lt;A href="http://schemas.microsoft.com/sharepoint/"&gt;http://schemas.microsoft.com/sharepoint/&lt;/A&gt;"&lt;BR&gt;&amp;nbsp; ReceiverAssembly="DevHorizon.SharePoint.Workflows, Version=1.0.0.0, Culture=neutral, PublicKeyToken=207a12b7817b805c"&lt;BR&gt;&amp;nbsp; ReceiverClass=" "DevHorizon.SharePoint.Workflows.AddConentTypesEventHanlders"&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;ElementManifests&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;ElementManifest Location="DivRepTask.xml" /&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;ElementManifest Location="HRAdminTask.xml" /&amp;gt;&lt;BR&gt;&amp;lt;/ElementManifests&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/Feature&amp;gt;&lt;BR&gt;&lt;BR&gt;4) I create a feature receiver class for this feature, I get a reference to the content type and attach the event handler to it programmatically:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override void FeatureActivated(SPFeatureReceiverProperties properties)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SPSite siteCollection = (SPSite) properties.Feature.Parent)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SPWeb web = siteCollection.OpenWeb())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Reflection.Assembly a = System.Reflection.Assembly.GetExecutingAssembly();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPContentType ctMyTask = web.ContentTypes["My Conent Type"];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctMyTask.EventReceivers.Add(SPEventReceiverType.ItemAdded, a.FullName,"MyTaskItemEventReceiver");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctMyTask.Update();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; web.Update();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;5)&amp;nbsp; Now,I need to create an event handler class named "MyTaskItemEventReceiver" that inherits from SPItemEventReceiver.Make sure you decorate this class with the right attributes to target to the featureId that contains your content type and the content type Id that you are writing this event handler for. You also need a unique GUID for your event handler&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [TargetContentType("feature id goes here", "content type id goes here")]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Guid("and here is the unique id for your enevnt handler")]&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;6) In ItemAdded method of your event handler add the following code:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DisableEventFiring();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPListItem listItem = properties.ListItem;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listItem.BreakRoleInheritance(false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listItem.Update();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listItem =SetItemLevelPermissions(listItem.Web, listItem, SPRoleType.Contributor, listItem["Assigned To"].ToString());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listItem.Update();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Add error handling code here&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch { }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnableEventFiring();&lt;/P&gt;
&lt;P&gt;7) And finally add this helper method somewhere accessible from within your event handler&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static SPListItem SetItemLevelPermissions(SPWeb setSPWeb, SPListItem setListItem, SPRoleType setRoleType, string assignedTo)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int index = assignedTo.IndexOf(';');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int id = Int32.Parse(assignedTo.Substring(0, index));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPUser user = setSPWeb.SiteUsers.GetByID(id);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPRoleDefinition roleDefinition = setSPWeb.RoleDefinitions.GetByType(setRoleType);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPRoleAssignment roleAssignment = new SPRoleAssignment(user.LoginName, string.Empty, string.Empty, string.Empty);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; roleAssignment.RoleDefinitionBindings.Add(roleDefinition);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setListItem.RoleAssignments.Add(roleAssignment);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return setListItem;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;Now when your workflow creates a task, its item level permission will be broken and set to "assigned to" field.Happy ending! 
&lt;HR&gt;&lt;img src="http://blogs.devhorizon.com/aggbug.aspx?PostID=508" width="1" height="1"&gt;</description></item><item><title>Programming under the influence</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/09/26/507.aspx</link><pubDate>Wed, 26 Sep 2007 21:34:00 GMT</pubDate><guid isPermaLink="false">fd16ab98-2804-4335-a2c7-0a6ea5ec7f8e:507</guid><dc:creator>rezaa</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.devhorizon.com/blogs/reza_on_blogging/comments/507.aspx</comments><wfw:commentRss>http://blogs.devhorizon.com/blogs/reza_on_blogging/commentrss.aspx?PostID=507</wfw:commentRss><description>&lt;P&gt;Let’s say you have a list (i.e.task list ) for which you need to capture ItemAdded event using an event handler and You have to do something unusual like the following:&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;   &lt;/SPAN&gt;&lt;SPAN&gt;     [SharePointPermission(SecurityAction.LinkDemand, ObjectModel = true)]&lt;BR&gt;        public override void ItemAdded(SPItemEventProperties properties)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;        {&lt;BR&gt;            SPListItem testtask = properties.ListItem.ParentList.Items.Add();&lt;BR&gt;            testtask["Title"] = "You are fired!::" + DateTime.Now.ToString();&lt;BR&gt;            testtask["Due Date"] = DateTime.Now;&lt;BR&gt;            testtask["Priority"] = "(1) High";&lt;BR&gt;            testtask.Update(); &lt;BR&gt;        }&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;Congradulations! You are trapped in a loop. How? Somebody adds  a task and your event handler fires and adds another task and  so on and so forths. I know this may sound stupid to do, by my point is something else here. Event handler OM is now smart enough not to let you get trapped in an infinite loop ,so recursion depth in such case is set to 10 (for itemAdded) and looping only occurs 10 times. It is really cool! Look at the picture below:&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;DIV align="center"&gt;&lt;IMG src="http://farm2.static.flickr.com/1330/1443674611_1674e72345_o.jpg"&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;o:p&gt; &lt;/o:p&gt;If you really have to do such a thing then at least use DisableEventFiring() and EnableEventFiring(); to stop the event handler from firing 10 times.&lt;o:p&gt; &lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;        [SharePointPermission(SecurityAction.LinkDemand, ObjectModel = true)]&lt;BR&gt;        public override void ItemAdded(SPItemEventProperties properties)&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;        {&lt;BR&gt;            DisableEventFiring();&lt;BR&gt;            SPListItem testtask = properties.ListItem.ParentList.Items.Add();&lt;BR&gt;            testtask["Title"] = "You are fired!::" + + DateTime.Now.ToString();            &lt;BR&gt;            testtask["Due Date"] = DateTime.Now;&lt;BR&gt;            testtask["Priority"] = "(1) High";&lt;BR&gt;            testtask.Update();&lt;BR&gt;            EnableEventFiring(); &lt;BR&gt;        }&lt;BR&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;
&lt;HR&gt;

&lt;P&gt;&lt;/P&gt;&lt;img src="http://blogs.devhorizon.com/aggbug.aspx?PostID=507" width="1" height="1"&gt;</description></item><item><title>Plan your three Must-Attend conferences in 2008</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/09/17/505.aspx</link><pubDate>Tue, 18 Sep 2007 00:32:00 GMT</pubDate><guid isPermaLink="false">fd16ab98-2804-4335-a2c7-0a6ea5ec7f8e:505</guid><dc:creator>rezaa</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.devhorizon.com/blogs/reza_on_blogging/comments/505.aspx</comments><wfw:commentRss>http://blogs.devhorizon.com/blogs/reza_on_blogging/commentrss.aspx?PostID=505</wfw:commentRss><description>&lt;P&gt;1) Microsoft Office System Developer Conference 2008 | San Jose, California | Feb 10-13 2008&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;I was just informed that the &lt;A href="https://microsoft.crgevents.com/ODC2008/Signup.aspx"&gt;official site &lt;/A&gt;for this has gone live. I think this is the first time ever this conference is open to the public, so everyone is invited. This is a fantastic opportunity for architects, developers, industry experts, and Microsoft insiders to come together to discuss various developing solutions in Office System.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;2) SharePoint 2008 conference | Seattle,WA | March 3-6,2008 &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;Take advantage of&amp;nbsp; the "early bird" special discount. &lt;A href="https://dynamicevents.emeetingsonline.com/emeetings/websitev2.asp?mmnno=242&amp;amp;pagename=SITE52841"&gt;Register Today&lt;o:p&gt;&lt;/o:p&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;3) Tech·Ed | Orlando, FL | June 9-13, 2008 &lt;o:p&gt;&lt;/o:p&gt;
&lt;P&gt;Be among the first to get conference information, session agendas, and preregistration details by signing in the Tech·Ed 2008 &lt;A href="https://profile.microsoft.com/RegSysProfileCenter/wizard.aspx?wizid=471dba71-4069-4f16-906b-273b679ba17e&amp;amp;lcid=1033"&gt;Guestbook&lt;/A&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;If you live in Greater Toronto Area, I'd highly recommend you to mark your calendar for 20th of October for &lt;a href="http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/09/13/502.aspx"&gt;Toronto SharePoint Camp&lt;/A&gt;. I can't wait to see you all there!&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;HR&gt;&lt;img src="http://blogs.devhorizon.com/aggbug.aspx?PostID=505" width="1" height="1"&gt;</description></item><item><title>Toronto SharePoint Camp: Saturday, October 20, 2007</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/09/13/502.aspx</link><pubDate>Thu, 13 Sep 2007 20:49:00 GMT</pubDate><guid isPermaLink="false">fd16ab98-2804-4335-a2c7-0a6ea5ec7f8e:502</guid><dc:creator>rezaa</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.devhorizon.com/blogs/reza_on_blogging/comments/502.aspx</comments><wfw:commentRss>http://blogs.devhorizon.com/blogs/reza_on_blogging/commentrss.aspx?PostID=502</wfw:commentRss><description>&lt;P&gt;I've just come back from vacation and I am very pleased to announce &lt;STRONG&gt;The first ever SharePoint Camp&lt;/STRONG&gt; being held in Toronto on Saturday, October 20, 2007. I duplicate what Eli has posted in his blog because no one&amp;nbsp;in Greater Toronto Area(GTA)&amp;nbsp;should miss this great opportunity. For most updated information on this event keep an eye on &lt;A href="http://weblogs.asp.net/erobillard/default.aspx"&gt;Eli's blog&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Mark your calendar! The first ever SharePoint Camp will be in Toronto, and registration will be absolutely free.&lt;/P&gt;
&lt;P&gt;Toronto SharePoint Camp, Manulife Centre&lt;BR&gt;200 Bloor Street East&lt;BR&gt;Saturday, October 20 &lt;/P&gt;
&lt;P&gt;The event will be hosted by the Toronto SharePoint User Group with a supporting cast of many fantastic volunteers and guest speakers. &lt;/P&gt;
&lt;P&gt;There are 3 tracks: Developer, Administrator, and Champion/Architect. There will be 15-18 presentations total in 3 to 5 theatres. The space should comfortably accomodate 200 to 300 attendees. We'll follow the CodeCamp manifesto: free, volunteer-run, brand-agnostic, less talk, more rock.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Call for speakers:&amp;nbsp;All submissions must be delivered by September 21, 2007. Presentations and demo code is due by October 12, 2007. Read more about how you can contribute and apply by downloading the Call For Speakers today!&lt;/P&gt;
&lt;P&gt;Call for Volunteers:&amp;nbsp; If you'd like to help out, mark your calendar for October 17 and 20 today. Then, watch this blog for link to the sign-up sheet as soon as the site goes live. On Wednesday, October 17th at 6:pm we'll have a pizza meeting for about an hour at 2 Bloor Street West (Nexient) to get organized. Note that this is the regular time and location of the SharePoint User Group meeting which will be replaced in October by the Organizer's Meeting (note: in September &lt;A href="http://tspug.sharepointservers.com/default.aspx"&gt;TSPUG &lt;/A&gt;will have a great workflow presentation by K2). &lt;/P&gt;
&lt;P&gt;Registration: The website will be up asap, watch &lt;A href="http://weblogs.asp.net/erobillard/default.aspx"&gt;Eli's blog&lt;/A&gt; for the announcement to be the first in line. &lt;/P&gt;
&lt;HR&gt;&lt;img src="http://blogs.devhorizon.com/aggbug.aspx?PostID=502" width="1" height="1"&gt;</description></item><item><title>The latest MOSS and WSS SDK release</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/08/25/498.aspx</link><pubDate>Sat, 25 Aug 2007 05:36:00 GMT</pubDate><guid isPermaLink="false">fd16ab98-2804-4335-a2c7-0a6ea5ec7f8e:498</guid><dc:creator>rezaa</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.devhorizon.com/blogs/reza_on_blogging/comments/498.aspx</comments><wfw:commentRss>http://blogs.devhorizon.com/blogs/reza_on_blogging/commentrss.aspx?PostID=498</wfw:commentRss><description>&lt;P&gt;There has been a major update to the MOSS and WSS Software Development Kit (SDK) which makes this release an important one.Now there are more samples and articles included and&amp;nbsp;a series of new tools and features are nicely packaged up in the download files.You can install them from the following locations:&lt;/P&gt;
&lt;P&gt;MOSS 2007 SDK 1.2:&amp;nbsp; Includes Conceptual and Class Library Reference documentation, Web Services documentation, and Developer Tools and Samples for MOSS and WSS. &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=6D94E307-67D9-41AC-B2D6-0074D6286FA9&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=6D94E307-67D9-41AC-B2D6-0074D6286FA9&amp;amp;displaylang=en&lt;/A&gt; &lt;BR&gt;&amp;nbsp;&lt;BR&gt;WSS 3.0 SDK 1.2:&amp;nbsp; Includes Conceptual and Class Library Reference documentation, Web Services documentation, and Developer Tools and Samples for WSS technology *only*. &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=05E0DD12-8394-402B-8936-A07FE8AFAFFD&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=05E0DD12-8394-402B-8936-A07FE8AFAFFD&amp;amp;displaylang=en&lt;/A&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;As you can see in the download page there has been a ton of new features added to this release such as follow:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;New Start Menu shortcut : A quicker access to documentation and welcome page 
&lt;LI&gt;You now have a choice of installation location when you're installing the SDK&amp;nbsp; 
&lt;LI&gt;Offline Experience Improvements: More Technical Articles, Visual How-to Articles, and Book Excerpts—plus the Excel Services and Excel 2007 Windows Compute Cluster Server 2003 Job Submission Developer Guide are packaged into one searchable CHM file ( Some of the elements such as WMV files and screencasts are still not available offline) 
&lt;LI&gt;New Tools and samples: There are many new tools and samples&amp;nbsp;included in this release as follow: 
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Microsoft Business Data Catalog Definition Editor: &lt;/STRONG&gt;&lt;EM&gt;I am so glad that what I was shouting &lt;/EM&gt;&lt;A href="http://forums.microsoft.com/msdn/showpost.aspx?postid=1133090&amp;amp;siteid=1&amp;amp;sb=0&amp;amp;d=1&amp;amp;at=7&amp;amp;ft=11&amp;amp;tf=0&amp;amp;pageid=0"&gt;&lt;EM&gt;here &lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;&amp;nbsp;8 months ago finally came into the consideration.Although it is not as complete as &lt;/EM&gt;&lt;A href="http://www.bdcmetaman.com/"&gt;&lt;EM&gt;BDC Meta Man&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;, I'm sure it is still better than nothing:)&lt;/EM&gt; 
&lt;LI&gt;WSHelloWorld Web Service 
&lt;LI&gt;Excel Services User Defined Function Sample 
&lt;LI&gt;WSOrders Custom Proxy Sample 
&lt;LI&gt;SAP Sample 
&lt;LI&gt;Sample Protocol Handler 
&lt;LI&gt;Custom Content Source 
&lt;LI&gt;IRM Document Protector&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Revised MOSS SDK conceptual topics such as : 
&lt;UL&gt;
&lt;LI&gt;How to: Create a Minimal Master Page 
&lt;LI&gt;Provisioning Portal Sites 
&lt;LI&gt;Portal Site Template File 
&lt;LI&gt;Portal (Portal Site Template) 
&lt;LI&gt;Webs (Portal Site Template) 
&lt;LI&gt;Web (Portal Site Template) &lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;New MOSS SDK conceptual topics such as : 
&lt;UL&gt;
&lt;LI&gt;How to: Customize RSS for the Content Query Web Part 
&lt;LI&gt;How to Create a Web Service Connection by using the Business Data Catalog Definition Editor 
&lt;LI&gt;How to Create a Database Connection by using the Business Data Catalog Definition Editor &lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Here are the links to the online versions: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms550992.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms550992.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms441339.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms441339.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR&gt;&lt;img src="http://blogs.devhorizon.com/aggbug.aspx?PostID=498" width="1" height="1"&gt;</description></item><item><title>Landing a site collection in its own content database</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/08/24/499.aspx</link><pubDate>Fri, 24 Aug 2007 17:02:00 GMT</pubDate><guid isPermaLink="false">fd16ab98-2804-4335-a2c7-0a6ea5ec7f8e:499</guid><dc:creator>rezaa</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.devhorizon.com/blogs/reza_on_blogging/comments/499.aspx</comments><wfw:commentRss>http://blogs.devhorizon.com/blogs/reza_on_blogging/commentrss.aspx?PostID=499</wfw:commentRss><description>&lt;P&gt;One of the many advantages of having site collections over just sub sites is that you can create a content database for each site collection. One of the obvious advantages is when backing up or restoring different pieces of your farm that makes it easier to deal with multiple content databases rather than just a giant content database. There are many other advantages that I am not going to write about mainly because it's been fully documented at TechNet site.&lt;/P&gt;
&lt;P&gt;Unfortunately, there is no a straight way to tell MOSS where you want your site collections to land when you move them around or create new ones. MOSS uses a round-robin algorithm to distribute them evenly in the existing content databases. However, there is a UI trick (also used in SPS2003) which still can be used in MOSS 2007.A few days ago I was going through the same process for a client and I thought that it is not a bad idea to blog it here. &lt;/P&gt;
&lt;P&gt;We were basically moving a site collection from DEV to QA, both environments were 32-bit, same topology and etc. In other words they were identical in many ways. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;DEV :&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;DEV-1) Run stsadm to back up the site collection&lt;BR&gt;stsadm -o backup -url &lt;A href="http://mossdev/mysitecollecionDev"&gt;http://mossdev/mysitecollecionDev&lt;/A&gt;&amp;nbsp; -filename c:\mysitecollecionDev.dat&lt;/P&gt;
&lt;P&gt;DEV-2) Copy DAT file (mysitecollecionDev.dat) to QA&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;QA:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;QA-1) Choose between QA-1-1 or QA-1-2&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;QA-1-1) ARE YOU MOVING IT TO AN EXISTING WEB APPLICATION?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1) Go to content databases in central admin&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2) Choose your web application name from the drop down box&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3) Take all existing content databases offline (status=offline).&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This doesn't actually take the Site Collections offline, but only prevents any new SiteCollections from being created in these database and that's&amp;nbsp;exactly what we want. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4) Go to QA-2 &lt;/P&gt;
&lt;P&gt;QA-1-2) ARE YOU MOVING IT TO A NEW WEB APPLICATION?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1) Create a new web application &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2) Go to QA-2 &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;QA-2)Create mysitecollecionQA as an "Explicit Inclusion"&amp;nbsp; managed path (Central Administration--&amp;gt; Application Management--&amp;gt; Managed Paths)&lt;BR&gt;QA-3)Create a site collection exactly in the same level as it was in DEV. In this example it should be &lt;A href="http://mossdev/mysitecollecionQA"&gt;http://mossdev/mysitecollecionQA&lt;/A&gt;. Make sure that&amp;nbsp;the name you choose for content database at level is the name you want to keep for ever ,because we are going to overwrite into this content database&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;QA-4) Run stsadm to restore the datafile you moved earlier&lt;/P&gt;
&lt;P&gt;stsadm -o restore -url&amp;nbsp; &lt;A href="http://mossdev/mysitecollecionQA"&gt;http://mossdev/mysitecollecionQA&lt;/A&gt; -filename c:\mysitecollecionDev.dat&amp;nbsp; -overwrite&lt;/P&gt;
&lt;P&gt;QA-5) Confirm that your new site collection is created in the only online content DB that you just created and change the status for all the other databases back to online.&lt;/P&gt;
&lt;HR&gt;&lt;img src="http://blogs.devhorizon.com/aggbug.aspx?PostID=499" width="1" height="1"&gt;</description></item><item><title>On-the-fly creation of attachments for list items</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/08/24/497.aspx</link><pubDate>Fri, 24 Aug 2007 05:57:00 GMT</pubDate><guid isPermaLink="false">fd16ab98-2804-4335-a2c7-0a6ea5ec7f8e:497</guid><dc:creator>rezaa</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.devhorizon.com/blogs/reza_on_blogging/comments/497.aspx</comments><wfw:commentRss>http://blogs.devhorizon.com/blogs/reza_on_blogging/commentrss.aspx?PostID=497</wfw:commentRss><description>&lt;P&gt;Here is the code to add an item to a list (task list in this example) programmatically and create and attach a file on the fly. You basically need to encode a set of characters into a sequence of bytes (byte array) and call SPAttachmentCollection.Add method to add the binary representation of your attachment to the list item.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;StringBuilder sbLog = new StringBuilder();&lt;/P&gt;
&lt;P&gt;sbLog.Append("Accessing root web of the site collection...\n");&lt;BR&gt;SPWeb web = new SPSite("http://moss:21165").OpenWeb();&lt;/P&gt;
&lt;P&gt;sbLog.Append("Accessing Task list in the root web...\n");&lt;BR&gt;SPList taskList = web.Lists["Tasks"];&lt;/P&gt;
&lt;P&gt;sbLog.Append("Adding a new task item...\n");&lt;BR&gt;SPListItem newTask = taskList.Items.Add();&lt;/P&gt;
&lt;P&gt;sbLog.Append("Populating the fields...\n");&lt;BR&gt;newTask["Title"] = "Work hard ,but play harder";&lt;BR&gt;newTask["Due Date"] = DateTime.Now;&lt;BR&gt;newTask["Priority"] = "(1) High";&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;sbLog.Append("Creating the attachment...\n");&lt;BR&gt;ASCIIEncoding encoder = new ASCIIEncoding();&lt;BR&gt;byte[] bytFile = encoder.GetBytes(sbLog.ToString());&lt;BR&gt;newTask.Attachments.Add("log.txt", bytFile);&lt;BR&gt;newTask.Update();&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;HR&gt;&lt;img src="http://blogs.devhorizon.com/aggbug.aspx?PostID=497" width="1" height="1"&gt;</description></item><item><title>Adding and Removing keys from appSettings in web.config</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/08/12/492.aspx</link><pubDate>Mon, 13 Aug 2007 03:03:00 GMT</pubDate><guid isPermaLink="false">fd16ab98-2804-4335-a2c7-0a6ea5ec7f8e:492</guid><dc:creator>rezaa</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.devhorizon.com/blogs/reza_on_blogging/comments/492.aspx</comments><wfw:commentRss>http://blogs.devhorizon.com/blogs/reza_on_blogging/commentrss.aspx?PostID=492</wfw:commentRss><description>&lt;P&gt;Today, I was struggling with adding and removing entries from web.config/appsettings in my feature receiver class. Well, it was quite easy to add , but removing was giving me a real hard time. I used my &lt;A href="http://www.google.ca/"&gt;perfect indexing tool&amp;nbsp;&lt;/A&gt;and I came across these great posts from &lt;A href="http://daniellarson.spaces.live.com/blog/cns!D3543C5837291E93!954.entry"&gt;Daniel Larson&lt;/A&gt;&amp;nbsp; and &lt;A href="http://sharepointsolutions.blogspot.com/2006/12/using-spwebconfigmodificat_116736917110571614.html"&gt;Tony Bierman&lt;/A&gt;. By first look at their posts I realized that removing requires a *right* call to SPWebConfigModification constructor, otherwise it won't ever happen. Both posts are for adding Ajax http handlers, but one can easily alter them to make the solution work for appsettings as well.&amp;nbsp;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;protected void ModifyWebApplication(SPWebApplication app, bool removeModification) &lt;BR&gt;{&lt;BR&gt;SPWebConfigModification modification = new SPWebConfigModification("add[@key='TotalDigits']", "configuration/appSettings");&lt;BR&gt;modification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode ;&lt;BR&gt;modification.Value = &lt;SPAN&gt;"&amp;lt;add key=\"TotalDigits\" value=\"21\" /&amp;gt;";&lt;/SPAN&gt;&lt;BR&gt;modification.Sequence = 0;&lt;BR&gt;if (removeModification)&lt;BR&gt;&amp;nbsp;&amp;nbsp; app.WebConfigModifications.Remove(modification);&lt;BR&gt;else&lt;BR&gt;&amp;nbsp;&amp;nbsp; app.WebConfigModifications.Add(modification);&lt;BR&gt;SPFarm.Local.Services.GetValue().ApplyWebConfigModifications(); &lt;BR&gt;&amp;nbsp;&lt;BR&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;As Daniel has mentioned in his comments, a real benefit of using the SPWebApplication in your code&amp;nbsp;is that the changes are applied to the farm, since the SPWebApplication represents that virtual web application that lives in the farm context.Thanks Daniel and Tony! 
&lt;HR&gt;

&lt;P&gt;&lt;/P&gt;&lt;img src="http://blogs.devhorizon.com/aggbug.aspx?PostID=492" width="1" height="1"&gt;</description></item><item><title>SPFeatureDependencyCollection</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/08/07/491.aspx</link><pubDate>Wed, 08 Aug 2007 00:58:00 GMT</pubDate><guid isPermaLink="false">fd16ab98-2804-4335-a2c7-0a6ea5ec7f8e:491</guid><dc:creator>rezaa</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.devhorizon.com/blogs/reza_on_blogging/comments/491.aspx</comments><wfw:commentRss>http://blogs.devhorizon.com/blogs/reza_on_blogging/commentrss.aspx?PostID=491</wfw:commentRss><description>&lt;P&gt;You can programmatically find all activated features that are dependent on a specific feature by using the following example. In this example, feature is stopped from being deactivated because dependant features are still in active mode.&lt;BR&gt;&lt;BR&gt;using System;&lt;BR&gt;using System.Collections.Generic;&lt;BR&gt;using System.Text;&lt;BR&gt;using Microsoft.SharePoint;&lt;BR&gt;using Microsoft.SharePoint.Administration;&lt;BR&gt;using System.Collections;&lt;BR&gt;using System.Diagnostics;&lt;/P&gt;
&lt;P&gt;namespace Configuration&lt;BR&gt;{&lt;BR&gt;public class Configurator : SPFeatureReceiver &lt;BR&gt;{&lt;BR&gt;public override void FeatureInstalled(SPFeatureReceiverProperties properties) {}&lt;BR&gt;public override void FeatureUninstalling(SPFeatureReceiverProperties properties) {}&lt;BR&gt;public override void FeatureActivated(SPFeatureReceiverProperties properties) {}&lt;BR&gt;public override void FeatureDeactivating(SPFeatureReceiverProperties properties)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPSite site = properties.Feature.Parent as SPSite;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPFeatureCollection spfeatCol = site.Features;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //iterate through all the features of the current site collection&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach (SPFeature feature in spfeatCol)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the collection of all features that are dependent on this feature&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPFeatureDependencyCollection depCollection = feature.Definition.ActivationDependencies;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (SPFeatureDependency featureDependency in depCollection)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (featureDependency.FeatureId.Equals(properties.Feature.DefinitionId) &amp;amp;&amp;amp; feature.Definition.Status.Equals(SPObjectStatus.Online))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new Exception("Deactivation aborted! There is at least one dependant feature in active mode.");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;// Do the rest of the work here.&lt;/P&gt;
&lt;P&gt;}&lt;BR&gt;}&lt;BR&gt;}&lt;BR&gt;&lt;/P&gt;
&lt;HR&gt;&lt;img src="http://blogs.devhorizon.com/aggbug.aspx?PostID=491" width="1" height="1"&gt;</description></item><item><title>non CLS-compliant classes in SDK, what that means?</title><link>http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2007/07/30/489.aspx</link><pubDate>Mon, 30 Jul 2007 21:00:00 GMT</pubDate><guid isPermaLink="false">fd16ab98-2804-4335-a2c7-0a6ea5ec7f8e:489</guid><dc:creator>rezaa</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.devhorizon.com/blogs/reza_on_blogging/comments/489.aspx</comments><wfw:commentRss>http://blogs.devhorizon.com/blogs/reza_on_blogging/commentrss.aspx?PostID=489</wfw:commentRss><description>&lt;br /&gt;
When you browse SharePoint SDK , you come across some classes such as &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.publishing.webcontrols.contentbyquerywebpart.aspx"&gt; ContentByQueryWebPart &lt;/a&gt; which is marked as non CLS-compliant classes. This class or any derived type may not be interoperable with a wide range of .Net supported programming languages.Something that you really need to consider when using this calss or driving your custom types off of it. Generally, C# complier does not check for CLS compliance of your code and you have to explicitly instruct it to do so.

&lt;br /&gt;&lt;br /&gt;


This class for whatever reason is not decorated to be CLS-compliant and it should be used with extra caution in regards to interoperability.

&lt;br /&gt;&lt;br /&gt;

[CLSCompliant(false)] &lt;br /&gt;
public class ContentByQueryWebPart : CmsDataFormWebPart &lt;br /&gt;
{ &lt;br /&gt;
..... &lt;br /&gt;
}&lt;br /&gt;

&lt;br /&gt;

&lt;HR&gt;&lt;img src="http://blogs.devhorizon.com/aggbug.aspx?PostID=489" width="1" height="1"&gt;</description></item></channel></rss>