tag:blogger.com,1999:blog-76475872024-03-08T01:54:27.266+08:00Mei Ying's Tech BlogSharePoint 2007, Microsoft Content Management Server (MCMS), ASP.NET, C# and random thoughtsUnknownnoreply@blogger.comBlogger88125tag:blogger.com,1999:blog-7647587.post-8749140937143994552008-07-25T12:20:00.000+08:002008-07-25T12:24:06.727+08:00Link to download the Lotus Notes C++ ToolkitI've received a few questions about where to get the lcppn30.dll file that is required by SharePoint to connect to Lotus Notes. Here's the link for reference: <a href="https://www14.software.ibm.com/webapp/iwm/web/reg/download.do?source=ESD-SUPPORT&S_PKG=CR3DNNA&S_TACT=104CBW71&lang=en_US&cp=UTF-8">https://www14.software.ibm.com/webapp/iwm/web/reg/download.do?source=ESD-SUPPORT&S_PKG=CR3DNNA&S_TACT=104CBW71&lang=en_US&cp=UTF-8</a><br /><br />You will have to register with IBM to download the file.<br /><br />The version that contains the file is <strong>Lotus C++ API Toolkit Release 3.0 for Windows English US</strong>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7647587.post-24931557680339483752008-03-20T11:52:00.000+08:002008-03-20T12:17:49.829+08:00When active directory users get deleted and re-createdWhen active directory users get deleted and re-created, even with the same user id, there's a nasty side effect. Each time they try to access their "my site", they will receive the following error:<br /><br /><span style="color:#ff0000;">The file exists. (Exception from HRESULT: 0x80070050)</span><br /><br /><br /><br />The reason is because when active directory accounts are deleted and re-created, the SID changes. Hence, the link between the user id and his "my site" is broken. There's an interesting solution from the <a href="http://groups.google.com.sg/group/microsoft.public.sharepoint.general/browse_thread/thread/1218d72e13cb77/9434ef80df1f6bce?hl=en&lnk=st&q=0x80070050#9434ef80df1f6bce">Microsoft Forums</a> that provides a good technical background on the problem. However, the suggested solution involves updating the SharePoint tables which is an unsupported activity. Here's how you can get around the issue without touching the database:<br /><br /><br /><strong><u>1. Access the user's my site settings page</u></strong><br />The first step would be to access the user's my site page. You could simply append "_layouts/settings.aspx" to the URL of the site. However, here's a slightly easier way to get to the page.<br /><br /><br />a. Login to the SharePoint Central Administration site and access the Shared Services Provider page.<br /><br />b. On the SSP admin page, select "User profiles and properties" "View User Profiles"<br /><br />c. Search for the user whose account has been deleted. Click on the profile name and select "Manage Personal Site"<br /><br /><p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKS0069a-fhAwg5WZ3S5Rg6TlVfqBAfWpD50klCpIKbRLNMzf1FAAY0r92bnKMjR8sjJ7ah2IqO91hzbfFQoH08WJ6nHPY8d0jb7W1UAWQYigxMlOYSdF1kstJDUCcn61FTw/s1600-h/SearchProfile.gif"></a></p><p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirdOCLDifKGwTdwWTpLCQtZEpegkQkjoucQfzWpCDKojTp8rY3MOJqXgl3UmLKNbLKkLCGhHa0OElL6Fynxx3E6ego5mmom_PB3sn4t-p8dS5Q0_Mpwu1aa-FI_HfXFvVRSA/s1600-h/SearchProfile.gif"><img id="BLOGGER_PHOTO_ID_5179669785709408850" style="CURSOR: hand" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirdOCLDifKGwTdwWTpLCQtZEpegkQkjoucQfzWpCDKojTp8rY3MOJqXgl3UmLKNbLKkLCGhHa0OElL6Fynxx3E6ego5mmom_PB3sn4t-p8dS5Q0_Mpwu1aa-FI_HfXFvVRSA/s400/SearchProfile.gif" border="0" /></a> </p><p>That will bring you to the user's personal site's settings page.</p><br /><p><strong><u>2. Delete the user from the site collection</u></strong></p><p>a. Click "People and Groups"</p><p>b. In the "Groups" section, click on the "(sitename)_Owners" group</p><p>c. Check the user and select "Actions Remove Users from Group"</p>Repeat (a) - (c) for each group that the user is a member of within the site collection.<br /><p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhclfixDVED0kn_h6K9XkCn3zQpW9SmE4O4qhqYIeoxFGJ2cOSmV28Zajk6J9aSeVauOVsIbbSmjNcw46tlW6ppHVz6qjDK-55OBiqjPWn67BCT9agldGN-UYyLOLwblkX9_Q/s1600-h/removefromownersgroup.gif"><img id="BLOGGER_PHOTO_ID_5179671147214041698" style="CURSOR: hand" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhclfixDVED0kn_h6K9XkCn3zQpW9SmE4O4qhqYIeoxFGJ2cOSmV28Zajk6J9aSeVauOVsIbbSmjNcw46tlW6ppHVz6qjDK-55OBiqjPWn67BCT9agldGN-UYyLOLwblkX9_Q/s400/removefromownersgroup.gif" border="0" /></a> </p><br /><p>d. Next, click "Site Permissions" and select "Settings Site Collection Administrators"</p><br /><p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFLg27-rTfnA9lw-rMueoGbcB3nX-TScSNBigFdf0ms4gzcAe32T1rGTY7B_ZCTDV1j1Q66RznV2kMHB8_PSKfSQjxbHGw8IU_MRTpC6bPM5Qk4tYEiHd_94Ln0JeoYa8jjg/s1600-h/SiteCollectionAdmin.gif"><img id="BLOGGER_PHOTO_ID_5179671632545346162" style="CURSOR: hand" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFLg27-rTfnA9lw-rMueoGbcB3nX-TScSNBigFdf0ms4gzcAe32T1rGTY7B_ZCTDV1j1Q66RznV2kMHB8_PSKfSQjxbHGw8IU_MRTpC6bPM5Qk4tYEiHd_94Ln0JeoYa8jjg/s400/SiteCollectionAdmin.gif" border="0" /></a><br /></p><br /><p>e. Add the farm account as a site collection adminsitrator. Remove the user whose account has been deleted. Click OK.</p><p><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwBtBxBCOj37vPXvjyIubR131lZLhK6egKDorVW6RAhEyXbCxWhChbpwTLEPh8-8nhYvhcAdT5fBEEY4-YT-NTQBHUxrdnJavsUY8DP2FkmeHfAG1uaUE-xrjaDvEHJL6yyg/s1600-h/AddFarmAccount.gif"><img id="BLOGGER_PHOTO_ID_5179672113581683330" style="CURSOR: hand" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwBtBxBCOj37vPXvjyIubR131lZLhK6egKDorVW6RAhEyXbCxWhChbpwTLEPh8-8nhYvhcAdT5fBEEY4-YT-NTQBHUxrdnJavsUY8DP2FkmeHfAG1uaUE-xrjaDvEHJL6yyg/s400/AddFarmAccount.gif" border="0" /></a> </p><p>f. Back at the "People and Groups" screen, click "People" and remove the user whose account has been deleted from the list.</p><p>Effectively, we have removed the user from the site collection entirely. This will flush the link between the user and his old SID.</p><p><strong><u>3. Add the user to the site collection</u></strong></p><p>Now, let's add the user back to the site collection</p><p>a. Click "Site Permissions"</p><p>b. Select "Settings Site Collection Administrators"</p><p>c. Add the user as a site collection adminsitrator. Remove the farm account that was added in the previous steps. Click OK.</p><p>And the user's access to his "my site" should be restored!<br /></p>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-7647587.post-63311676050762639982008-01-08T14:54:00.000+08:002008-01-08T15:14:38.009+08:00Microsoft Small Business Specialist Primer: Your Certification Path to Success!The latest version of the Microsoft Small Business Specialist Primer has recently been released!<br /><br />An excerpt from the official <a href="http://www.smbnation.com/bookstore/70-282.htm">website</a>:<br /><br /><table><tbody><tr><td valign="top"><a href="http://www.smbnation.com/images/Books/cover%20rev%204_140px.jpg"><img style="CURSOR: hand" alt="" src="http://www.smbnation.com/images/Books/cover%20rev%204_140px.jpg" border="0" /></a></td><td><b>Description:</b><br /><br />The "new and improved" version of our Microsoft Test Certification book. Covers Exams 70-282 and 70-631.<br /><br />Based on our previous exam cram, this book has been updated, using tips and tricks from the original release, deep dive information from the "70-282 Exam Update Guide" and then some!<br /><br />NEW! 70-631 - Three chapters in the book also cover the Microsoft exam: TS: Windows SharePoint Services 3.0, Configuring written by Mei Ying Lim, a SharePoint MVP in Singapore.<br /><br />Release Date: December 15, 2007<br /></td></tr></tbody></table><br /><br />When Beatrice asked me to help with the chapters for the WSS exam, I did not believe that all that material could be covered in three chapters. However, looking at the material versus what was required in the examination, I was convinced. If you are looking for a fast way to get all the information you require to pass <a href="http://www.microsoft.com/learning/exams/70-631.mspx">70-631: TS: Windows SharePoint Services 3.0, Configuring</a>, then this is the book for you!<br /><br />It condenses what you need to know for the exam in easy to digest bits. Plus it links to relevant sites on the internet if you need to deep-dive into specific areas. Its a no nonsense primer on getting you up to speed on 70-631 in the shortest time possible.<br /><br /><a href="http://www.smbnation.com/bookstore/70-282.htm">Order it now!</a>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-7647587.post-3796493733501610872008-01-08T14:06:00.000+08:002008-01-09T09:13:47.054+08:00A brand new year, a brand new startIf I was Hiro Nakamura and teleported myself back to the start of 2007, I would still find it impossible to predict how the year would end. 2007 was a year of twists, turns and curveballs that led to an unpredictable series of events.<br /><br />For starters, I've left Avanade. My new job is with a local investment company. Will I miss the world of consulting? Probably. Will I consider going back to that line of work? Maybe. But until then, I will settle for what I have now, which is considerable more time to persue personal projects. From little things like teaching the dog to fetch the papers,picking up new cooking recipes to catching Martha Stewart on TV (oops! Did I just 'fess up on that?). In my previous job, I just wasn't able to find the time to enjoy the simple pleasures of life. Time was flying by too fast. June felt like March and November felt like April. I guess it was just time to do things a little differently to achieve a different result. Thanks to everyone who helped with the job search. Next round of drinks will be on me :-)<br /><br />I've also been renewed as an <a href="http://mvp.support.microsoft.com/">MVP</a>! Its definitely a great honour to be part of this wonderful program. I've learnt a lot from the community. This year, I hope to give back a lot more than I've taken from it. Its great to work with a product like SharePoint. Kinda like being part of a worldwide movement but for computers and tech geeks. Plus, in the coming future, I'm going to be looking at it seriously from the viewpoint of an end-user. Will I feel the same way about SharePoint after that? We'll see :-) But I'll definitely still be running my own mini-code projects. You can take the geek away from a computer but you can't take the computer away from the geek.<br /><br />2008 is going to be an exciting year. I just know it!Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-7647587.post-21768004897411087062007-10-25T17:12:00.000+08:002007-10-25T18:00:18.583+08:00Programatically Organizing Web Parts in a GalleryThe other day we were given the challenge of organizing web parts for "my site" site collections.<br /><br /><br />The interesting thing about "my sites" is that they are created on the fly, which rules out the option of <a href="http://office.microsoft.com/en-us/winsharepointadmin/HA011608541033.aspx">manually organizing the web parts</a>.<br /><br /><br />We could deploy a feature that adds web parts to the gallery by <a href="http://msdn2.microsoft.com/en-us/library/ms441170.aspx">provisioning the *.dwp and *.webpart files</a>. However, there doesn't seem to be an easy way to delete existing web parts that the customer wishes to hide from the list.<br /><br /><br />So what we did eventually was to manage the list through code. Using a similar technique described in the article, <a href="http://blogs.msdn.com/sharepoint/archive/2007/03/22/customizing-moss-2007-my-sites-within-the-enterprise.aspx">Customizing MOSS 2007 My Sites within the enterprise</a>, we ran a script to organize the web parts within each "My Site" web part gallery. The script essentially performs the following steps:<br /><br />a. Get an instance of the web part gallery<br />b. Deletes all web parts in the gallery<br />c. Adds only the required web parts to the gallery.<br /><br /><br />And of course, it runs only once, when the site is created.<br /><br /><br /><br /><strong><u>Getting an instance of the web part gallery</u></strong><br /><br />The first step in process is to get an instance of the web part gallery. Simply get an instance of the list named "Web Part Gallery" from the root web site.<br /><br /><span style="font-family:courier new;font-size:85%;">Dim webPartGallery As SPList = SPContext.Current.Site.RootWeb.Lists("Web Part Gallery")</span><br /><br /><br /><br /><strong><u>Deleting all web parts in the gallery</u></strong><br /><br />Next, we web ahead to delete all web parts in the list. Well, we could have skipped this step. But in our case, the requirement was to completely change the way the web parts were listed, so it didn't make much sense to keep the existing structure.<br /><br /><span style="font-family:courier new;font-size:85%;">Dim webPartsCount As Integer = webPartGallery.ItemCount<br />Dim arrWebParts As New ArrayList()<br />For i As Integer = 0 To webPartsCount - 1<br /> arrWebParts.Add(webPartGallery.Items(i).ID)<br />Next</span><br /><span style="font-family:courier new;font-size:85%;"><br />For Each webPartId As Integer In arrWebParts<br /> webPartGallery.Items.DeleteItemById(webPartId)<br />Next<br /><br />webPartGallery.Update()</span><br /></span><br /><br /><br /><strong><u>Adding web parts to the gallery</u></strong><br /><br />Finally, we add web parts to the gallery. To do so, we create SPFile objects and upload them to the "/_catalogs/wp/" folder.<br /><br /><br /><br />The idea is to build a string for the web part description file (*.dwp or *.webpart) and load it as a byte array to the folder. In this example, we create a method that builds up a *.dwp file.<br /><br /><span style="font-family:courier new;font-size:85%;">Private Sub AddWebPartToGallery(ByVal assembly As String, ByVal typeName As String, ByVal title As String, ByVal description As String, ByVal partImageLarge As String, ByVal partImageSmall As String, ByVal web As SPWeb, ByVal webPartUrl As String, ByVal group As String, ByVal quickAddGroup As String) </span><br /><span style="font-family:Courier New;font-size:85%;"></span><span style="font-family:courier new;font-size:85%;"><br />Dim sb As New StringBuilder()<br /><br />Dim sb As New StringBuilder()<br />sb.Append("<?xml version=""1.0"" encoding=""utf-8""?>")<br />sb.Append("<webpart xmlns="">")<br />sb.Append("<assembly>" + assembly + "</assembly>")<br />sb.Append("<typename>" + typeName + "</typename>")<br />sb.Append("<title>" + title + "</title>")<br />sb.Append("<description>" + description + "</description>")<br />sb.Append("<partimagelarge>" + partImageLarge + "</partimagelarge>")<br />sb.Append("<partimagesmall>" + partImageSmall + "</partimagesmall>")<br />sb.Append("<chrometype>TitleOnly</chrometype>")<br />sb.Append("</webpart>")</span><br /><span style="font-family:courier new;font-size:85%;"><br />Dim file As SPFile = web.Files.Add("_catalogs/wp/" + webPartUrl, New System.Text.UTF8Encoding().GetBytes(sb.ToString()), True)<br />file.Properties("Group") = group<br />file.Properties("QuickAddGroups") = quickAddGroup<br />file.Update()<br />web.Update()<br /><br /></span><span style="font-family:courier new;font-size:85%;">End Sub</span><br /></span><br /><span style="font-family:Courier New;font-size:85%;"></span><br /><br />What's nice about it is that you could also supply information about the Group and quick add groups as well. Which means you get to manage how the web parts are displayed in the web part gallery picker.<br /><br /><br />We could easily create a smiliar method that handles *.webpart files.<br /><br />Here's an example that calls the AddwebPartToGallery() method to add a summary link web part to a custom group, "My Stuff".<br /><br /><span style="font-family:courier new;font-size:85%;">AddWebPartToGallery("Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c", "Microsoft.SharePoint.Publishing.WebControls.SummaryLinkWebPart", "Summary Link Web Part", "Use to display links on your web page that can be grouped and styled and can be organized by dragging and dropping.", "/_layouts/images/webpart.gif", "/_layouts/images/webpart.gif", rootWeb, "SummaryLink.dwp", "My Stuff", "My Stuff")</span><br /><br />And the end result of running the script is a web part gallery picker page that contains only the summary links web part in a category named, "My Stuff".<br /><br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM5T3rLbev-DxcCMByXv3wvHF1cMWTtZx6zlOLFXudEjE-gI5fqNtD9N4ngNxxF63qGaP2Ld7FjuxYLC-viXhOE6Pe9x2yzxEFY3lQFqHx8ogzgtZUcx0eBcqpIzqrgR-Wvw/s1600-h/webpartgallery.jpg"><img id="BLOGGER_PHOTO_ID_5125209900581939138" style="CURSOR: hand" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM5T3rLbev-DxcCMByXv3wvHF1cMWTtZx6zlOLFXudEjE-gI5fqNtD9N4ngNxxF63qGaP2Ld7FjuxYLC-viXhOE6Pe9x2yzxEFY3lQFqHx8ogzgtZUcx0eBcqpIzqrgR-Wvw/s400/webpartgallery.jpg" border="0" /></a>Unknownnoreply@blogger.com8tag:blogger.com,1999:blog-7647587.post-77816470984247322502007-10-25T16:52:00.000+08:002007-10-25T17:01:45.929+08:00I'm a Charter Member for SharePoint:Configuring!A pleasant surprise came through the mail the other day. I received a certificate for one of the <a href="http://meiyinglim.blogspot.com/2007/01/im-mcts-for-sharepoint-configuring.html">SharePoint exams I took last year</a>. It says that I am a Charter Member for the MCTS: SharePoint:Configuring exam. I don't really know what being a charter member really means, but it sounds really cool! It really made my day :-)Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-7647587.post-58102018587770591682007-06-22T11:09:00.000+08:002007-06-22T11:56:30.802+08:00File or arguments not valid for site templateI was trying to use stsadm to create a SharePoint 2007 site collection using the <span style="font-family:courier new;">createsiteinnewdb</span> operation. I specified the site template name using the <span style="font-family:courier new;">-sitetemplate</span> switch but I kept getting the following error:<br /><br /><span style="font-family:courier new;">File or arguments not valid for site template [template name]</span><br /><br />Here's the full command I was using:<br /><br /><span style="font-family:courier new;">stsadm -o createsiteinnewdb -url </span><a href="http://someurl/"><span style="font-family:courier new;">http://someurl/</span></a><span style="font-family:courier new;"> -sitetemplate <strong>"publishing portal"</strong></span><br /><br />Turns out that silly me was supplying the template's display name and not its system name. So in order for the command to work correctly, I should have used <span style="font-family:courier new;">"blankinternetcontainer#0"</span> instead of <span style="font-family:courier new;">"publishing portal"</span>. Where "blankinternetcontainer" is the name of the site definition and "0" is the configuration to be used.<br /><span style="font-family:Courier New;"></span><br /><span style="font-family:courier new;">stsadm -o createsiteinnewdb -url </span><a href="http://someurl/"><span style="font-family:courier new;">http://someurl/</span></a><span style="font-family:courier new;"> -sitetemplate <strong>"blankinternetcontainer#0"</strong></span><br /><strong><span style="font-family:Courier New;"></span></strong><br />A quick way to get a list of template names is to navigate to the following page :<a href="http://website/_layouts/templatepick.aspx">http://website/_layouts/templatepick.aspx</a>. Right-click on the page, view the source and pick out the name of the template from the values of the list items.Unknownnoreply@blogger.com6tag:blogger.com,1999:blog-7647587.post-57556107404449535302007-04-27T13:24:00.000+08:002007-04-27T13:34:56.386+08:00Content Management for SMB<table><tbody><tr><td valign="top"><a href="http://www.smbnation.com/smbpc.htm"><img src="http://www.smbnation.com/images/magcovers/magad_150w_sidebar.jpg" border="0" /></a></td><td valign="top"><p><br /><a href="http://www.smbnation.com">SMB Nation</a> has published an article I've written about SharePoint in its April edition. Its titled <strong>"Content Management for SMB"</strong> (Small and Medium businesses). It gives a quick overview about the SharePoint's coolest content management features. </p><p>Get a copy of the magazine at your nearest magazine stand. And if you are a Microsoft Small Business Specialist, <a href="http://www.smbnation.com/smbpc.htm">sign up for a free subscription</a>!<br /></p></td></tr></tbody></table>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-7647587.post-68118818867249757282007-03-13T17:16:00.000+08:002007-05-14T14:51:01.379+08:00Exploring the Properties of the HTML Editor Field ControlI was trying to figure out the easiest way to hide/show buttons on the HTML Editor Field Control.<br /><br />Strangely, there's some <a href="http://msdn2.microsoft.com/en-us/library/ms561507.aspx">documentation</a> on the topic but it doesn't go into the details about the buttons.<br /><br />I thought I'd write about the results of my little experiment. The following tabulates the buttons that get activated/deactivated when specific properties are turned on/off.<br /><br /><table><p><p></p><tbody><tr style="COLOR: white" bgcolor="navy"><td><b>Property</b></td><td><b>Value</b></td><td><b>Buttons Activated</b></td></tr><tr><td valign="top">(Default)</td><td></td><td><ul><li>Cut</li><li>Copy</li><li>Paste</li><li>Undo</li><li>Redo</li><li>Left-to-right <li>Right-to-left</li><li>Remove Inline Styles</li><li>Help</li><li>Select</li><li>Apply Paragraph Format - Normal</li></ul><br /></td></tr><tr bgcolor="lightblue"><td valign="top">AllowFonts<br />DisableBasicFormattingButtons</td><td valign="top">True<br />False</td><td><ul><li>Font</li><li>Font Size</li><li>Text Color</li><li>Text Highlight Color</li><li>Align Left</li><li>Center</li><li>Align Right</li></ul></td></tr><tr><td></td></tr><tr><td valign="top">Allow Headings</td><td valign="top">True</td><td><ul><li>Apply Paragraph format <ul><li>Address</li><li>Heading 1</li><li>Heading 2</li><li>Heading 3</li><li>Heading 4</li><li>Heading 5</li><li>Heading 6</li></ul></li></ul></td></tr><tr bgcolor="lightblue"><td valign="top">AllowHtmlSourceEditing</td><td valign="top">True</td><td>Edit HTML Source</td></tr><tr><td valign="top">Allow Hyperlinks<br />AllowExternalUrls</td><td valign="top">True<br />True</td><td><ul><li>Insert/Edit Hyperlink (allows external URLs as well)</li><li>Remove Hyperlink</li></ul></td></tr><tr bgcolor="lightblue"><td valign="top">Allow Hyperlinks<br />AllowExternalUrls</td><td valign="top">True<br />False</td><td><ul><li>Insert/Edit Hyperlink (allows only internal URLs)</li><li>Remove Hyperlink</li></ul></td></tr><tr><td valign="top">AllowImages</td><td valign="top">True</td><td><ul><li>Insert/Edit Image</li></ul></td></tr><tr bgcolor="lightblue"><td valign="top">Allow Lists</td><td valign="top">True</td><td><ul><li>Numbered Lists</li><li>Bulleted Lists</li><li>Apply Paragraph Format <ul><li>Bulleted List</li><li>Definition</li><li>Definition Term</li><li>Directory List</li><li>Menu List</li><li>Numbered List</li></ul></li></ul></td></tr><tr><td valign="top">AllowReusableContent</td><td valign="top">True</td><td><ul><li>Insert Reusable Content</li></ul></td></tr><tr bgcolor="lightblue"><td valign="top">AllowTables</td><td valign="top">True</td><td><ul><li>Insert Table</li><li>Edit Table</li><li>Show/Hide Gridlines</li><li>Table Operations</li><li>Merge Cell</li><li>Change Column Width and Row Height</li></ul></td></tr><tr><td valign="top">AllowTextMarkup<br />DisableBasicFormattingButtons<br /></td><td valign="top">True<br />True</td><td><ul><li>Apply Paragraph Format -Formatted</li></ul></td></tr><br /><tr bgcolor="lightblue"><td valign="top">AllowTextMarkup<br />DisableBasicFormattingButtons<br /></td><td valign="top">True<br />False</td><td><ul><li>Apply Paragraph Format -Formatted</li><li>Bold</li><li>Italics</li><li>Underline</li><li>Align Left</li><li>Center></li><li>Align Right</li><li>Decrease Indent</li><li>Increase Indent</li></ul></td></tr><tr><td valign="top">DisableCustomStyles</td><td valign="top">False</td><td><ul><li>Styles</li></ul></td></tr></tbody></table><br />There's an additional property, <b>DisableBasicFormattingButtons</b>, which as the name suggests, disables basic formatting buttons. And these are the buttons it considers "basic:<br /><br /><table><tr bgcolor="navy"><td>Property</td><td>Value</td><td>Buttons Deactivated</td></tr><tr><td>DisableBasicFormattingButtons</td><td>False</td><td><ul><li>Font Size</li><li>Font<li>Bold</li><li>Italics</li><li>Underline</li><li>Align Left</li><li>Center</li><li>Align Right</li><li>Decrease Indent</li><li>Increase Indent</li><li>Text Color</li><li>Text Highlight Color</li></ul></td></tr></table>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-7647587.post-1169176596925588692007-01-19T11:15:00.000+08:002007-01-19T11:16:37.723+08:00Integrating Domino Data with Microsoft SharePoint ServicesInteresting <a href="http://www-128.ibm.com/developerworks/lotus/library/domino-sharepoint/?S_TACT=105AGX54&S_CMP=NLLO">article</a> by Tony Patton on how IBM's Domino can integrate with Microsoft SharePoint Services. It uses the domino agent to retrieve XML content from the Lotus notes database which can then be consumed by SharePoint. Another possible solution to integrate SharePoint and Domino.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7647587.post-1168414989511063442007-01-10T15:34:00.000+08:002007-01-12T04:37:32.713+08:00Displaying the Correct Titles of Lotus Notes Documents in SharePoint Search Results<p><a href="http://www.sharepointblogs.com/helloitsliam">Liam</a> has posted a <a href="http://www.sharepointblogs.com/helloitsliam/archive/2007/01/09/17654.aspx">great article</a> on configuring SharePoint to search Lotus Notes.<br /></p><br /><p>The post reminded me that I missed out a part of the configuration steps - how to get the titles to show up correctly. By default, the search results display the GUID of the Notes document which isn't pretty. For example, you may get results which resemble the following:<br /><br /><a href="http://photos1.blogger.com/x/blogger/4033/295/1600/788769/SearchResults.gif"><img alt="" src="http://photos1.blogger.com/x/blogger/4033/295/320/386955/SearchResults.png" border="0" /></a><br /><br />Having Guids as titles really does not make any sense to anyone reading it.<br /><br />What I like best about this part of the configuration is that it demonstrates how flexible SharePoint can be. Here, we have a Lotus Notes document which is at best an alien to SharePoint. It was created by a completely different organisation (IBM) and may be tweaked and customized by Notes developers anyway they deem fit. Yet, we can easily configure SharePoint to understand what fields the Notes document has. Pretty neat, huh?<br /><br />The answer lies in the Metadata property mappings. You can access the Metadata Property Mappings page from <span style="color:#009900;">SharedServices Administration Page > Search Settings > Metadata property mappings</span>.<br /><br /><b>1. Where is the Title Stored?</b><br />First,we need to take a look at the fields available in our Lotus Notes document. Lotus Notes documents stores its Title/Subject in a variety of places. To locate the name of the field, we'll have to take a look at the document's fields. To do so, simply open the document using the Lotus Notes client. Right-click anywhere on the document and select <strong>Document Properties...</strong><br /><br />A dialog appears showing the document's properties. Look for the field that contain's its title. For example, in the diagram below, the field is named <strong>Subject</strong><br /><a href="http://photos1.blogger.com/x/blogger/4033/295/1600/96172/LotusNotesDocumentProperties.gif"><img alt="" src="http://photos1.blogger.com/x/blogger/4033/295/320/752901/LotusNotesDocumentProperties.gif" border="0" /></a></p><p><br /><b>2. Link the SharePoint's Title field to the Lotus Notes Document's Title field</b><br /><br />Next, we will use the Metadata property mappings administration page to link the document's Title field to SharePoint's Title field.<br /><br />In the Metadata property mappings administration page, click on the managed property named <strong>Title</strong> (you may have to navigate to the second page to find it) and select <strong>Edit/Map Property</strong>.<br /><br /><a href="http://photos1.blogger.com/x/blogger/4033/295/1600/52266/ManagedProperty_Title.png"><img alt="" src="http://photos1.blogger.com/x/blogger/4033/295/320/974561/ManagedProperty_Title.png" border="0" /></a><br /><br />In the Mappings to crawled properties section, click <strong>Add Mapping</strong>. The Crawled property selection dialog appears in a new window.<br /></p><br /><p>In the <strong>Select Category</strong> field, choose <strong>Notes</strong>. Select the property you would like to map to. In our case, we will choose the <strong>Subject</strong> field. Click <b>OK</b>.<br /><br /><a href="http://photos1.blogger.com/x/blogger/4033/295/1600/234563/AddMapping.gif"><img alt="" src="http://photos1.blogger.com/x/blogger/4033/295/320/858496/AddMapping.png" border="0" /></a><br /></p><br /><br /><p>Back at the Edit Managed Property page, click the <b>Move Up</b> button twice to give the notesfield higher priority over the <strong>Basic:displaytitle(Text)</strong> field. Click <b>OK</b> to save the changes.<br /><br /><a href="http://photos1.blogger.com/x/blogger/4033/295/1600/507971/Mapping.gif"><img alt="" src="http://photos1.blogger.com/x/blogger/4033/295/320/932752/Mapping.png" border="0" /></a><br /></p><br /><p><br /><b>3. Start a Full Crawl</b><br /><br />Finally, start a full crawl so that SharePoint and index the new Notes property. After the crawl completes, you will find that the correct title now appears in the Search results!<br /><br /><a href="http://photos1.blogger.com/x/blogger/4033/295/1600/957381/searchresults_correct.gif"><img alt="" src="http://photos1.blogger.com/x/blogger/4033/295/320/777084/searchresults_correct.png" border="0" /></a><br /></p>Unknownnoreply@blogger.com8tag:blogger.com,1999:blog-7647587.post-1168052980740983532007-01-06T11:07:00.000+08:002007-01-06T12:19:17.620+08:00I've been tagged - 5 Things you may not know about me<a href="http://blogs.technet.com/stefan_gossner/archive/2007/01/05/i-ve-been-tagged-five-things-you-might-not-know-about-me.aspx">Stefan</a>, my co-writer for the MCMS books we've written has tagged me. I'm suppose to list 5 personal details that you may not know about. Well, I've never really shared any personal secrets on my blog before (it's a Tech blog), so this will be a first :-)<br /><br />1. I was born a left-hander but was trained to use my right hand to write. Now, I perform most tasks with my left hand except holding a pen or mouse.<br /><br />2. I once shot a 3-in-1 at Air Rifle practice when I was at <a href="http://www.rjc.edu.sg/newrjc/">Junior College</a>. And yes, I shoot better with my left arm than my right.<br /><br />3. My childhood ambition was to be a vet. But the encounter with my neighbour's Apple IIe (he was an Apple engineer) changed all that. My brother and I would sneak over to his house to play computer games with his son and run back before he got home. I was 7 years old then.<br /><br />4. I studied electrical engineering in <a href="http://www.nus.edu.sg/">University</a>, specializing in wireless technologies. My final year thesis was about building a "multi-layered suspended microstrip low pass filter". It gave me the taste of being on the bleeding edge of technology. I enjoyed it immensely but thought it was better matched with my interest in computers.<br /><br />5. I started participating in the MCMS community with a pseudonym so that I could keep my activities hidden from the watchful eyes of the then conservative culture at my ex-company. You may have known me as <a href="http://groups.google.com/groups/search?hl=en&ie=UTF-8&amp;amp;amp;oe=UTF-8&q=%22trevor+grant%22">"Trevor".</a> No, I'm neither a cross-dresser nor someone with a complex alter ego. The name was chosen randomly such that no one who looked at it could remotely link it to me. I have since changed jobs and retired Trevor.<br /><br />I've now got the license to tag 5 more people and I'm tagging <a href="http://community.sgdotnet.org/blogs/kitkai/">Kit Kai</a>, <a href="http://firechewy.com/blog/">Chewy</a>, <a href="http://www.howardlo.com/">Howard</a>, <a href="http://serena-yeoh.blogspot.com/">Serena</a> and <a href="http://lilianq-thatwasthenthisisnow.blogspot.com/">Lilian</a>.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-7647587.post-1167810825738027382007-01-03T15:53:00.000+08:002007-02-09T05:28:45.483+08:00Using SharePoint 2007 to Index a Lotus Notes Database<p>A couple of months ago, we wrapped up a POC that used SharePoint 2007 to index a Lotus Notes Database.</p><p>There exist a few good articles on this topic. Notably, <a href="http://blogs.msdn.com/edhild/articles/473060.aspx">Ed Hild's blog</a> and <a href="http://office.microsoft.com/en-us/sharepointportaladmin/HA011603581033.aspx">Microsoft's help file</a>. However, the how-tos are based on SharePoint 2001/2003. The good news is: this piece of the puzzle has not changed very much since SharePoint 2003. Most of the steps are still applicable. Nevertheless, here's a brief update on what we did for SharePoint 2007.</p><p>It's probably worthwhile to note that SharePoint is able to honour notes security with security trimming. This means that end-users will only see documents that they have access to. However, to keep things simple in this how-to, we will skip the security portion. If you need to implement security trimming, take a look at <a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q288816">Knowledge Base article Q288816</a>. Truth be told, that's not a trivial task and whether it works depends largely on environmental factors. Hopefully, Microsoft fixes these issues in subsequent hotfix and/or service pack releases</p><p><br /><b>Step 1. Install the Lotus Notes Client</b><br /><br />First, we will install the Lotus Notes client on the SharePoint Search server performing the indexing. Depending on the existing environment, you can choose to install Lotus Notes Client R5 or R6.x. For our POC, we chose to install R5. Tests on our VPCs showed that R6.5 could be used as well.<br /><br />Take note of the directory in which the application is installed (e.g. c:\lotus\notes\). We will require this bit of information later on in the configuration.<br /><br />Once the note client is installed, ensure that its able to connect to the server and databases successfully. The notes account will be the same one used by SharePoint to access and index the databases. Minimally, this account will require read access to the database - it should not need higher rights. </p><p><br /><b>Step 2. Download the Lotus C++ API Toolkit</b><br /><br />SharePoint requires a library file named lcppn30.dll. However, this file is not distributed with SharePoint so we will have to download it from <a href="http://www-128.ibm.com/developerworks/lotus/downloads/toolkits.html">IBM's website</a>. The file is packaged as part of the Lotus C++ API Toolkit. Once extracted, copy it to the C:\Program Files\Microsoft Office Servers\12.0\Bin directory.<br /><br /><b>Step 3. Run the Lotus Notes Index Setup Wizard</b><br /><br />With the notes client installed and the lcppn30.dll file copied, we are ready to roll. Execute the NotesSetup.exe file located in the C:\Program Files\Microsoft Office Servers\12.0\Bin directory. This launches the Lotus Notes Index Setup Wizard.<br /><br />After the welcome screen, you will be presented with a dialog requesting you to enter: </p><p>1. The location of the notes.ini file (usually in the notes installation directory)<br />2. The notes installation directory (we noted this down in step 1 e.g. c:\lotus\notes)<br />3. The password of the account used to connect to the notes directory (the account has already been specified when we tested the connection earlier)<br />4. Because we are ignoring notes security, we will check the box that says "Ignore Lotus Notes security while building an index.".<br /><br /><a href="http://photos1.blogger.com/x/blogger/4033/295/1600/167954/LotusNotes1.gif"><img alt="" src="http://photos1.blogger.com/x/blogger/4033/295/320/585010/LotusNotes1.png" border="0" /></a><br /><br />The last screen summarizes the settings to be configured. Click <b>Finish</b> to commit the changes. And if all goes well, you will get a nice little message informing you that the configuration has succeeded.<br /><br /><a href="http://photos1.blogger.com/x/blogger/4033/295/1600/953722/LotusNotes3.gif"><img alt="" src="http://photos1.blogger.com/x/blogger/4033/295/320/783317/LotusNotes3.png" border="0" /></a><br /><br /><b>Step 4. Create a Lotus Notes content Source</b><br /><br />After the Lotus Notes Index Setup Wizard successfully completes at least once, you get a new option to create a Lotus Notes content source.<br /><br /><a href="http://photos1.blogger.com/x/blogger/4033/295/1600/425220/LotusNotes2.gif"><img alt="" src="http://photos1.blogger.com/x/blogger/4033/295/320/214124/LotusNotes2.png" border="0" /></a><br /><br />Choose to create a Lotus Notes content source and you get to select the server and database to index.<br /><br />Once created, the Lotus Notes content source can be managed just like any other SharePoint content sources.<br /><br /><b>Final Steps</b><br /><br />We needed to convert the URLs generated by SharePoint to use the "notes://" protocol instead of the "http://" protocol as our databases were not web-enabled. But other than that, the solution was good to go!<br /></p><p>If you encounter any problems, the <a href="http://support.microsoft.com/search/default.aspx?catalog=LCID%3D1033&spid=global&query=lotus+sharepoint&adv=&mode=r&cat=False">knowledge base articles written for SharePoint 2001/2003</a> may provides some clues.<br /></p>Unknownnoreply@blogger.com10tag:blogger.com,1999:blog-7647587.post-1167805156547187882007-01-03T13:41:00.000+08:002007-01-04T09:21:42.310+08:00I'm an MCTS for SharePoint: Configuring!Just received the good news that I've passed the beta exam for <a href="http://www.microsoft.com/learning/exams/70-630.mspx">071-630, TS: Configuring Microsoft® Office SharePoint® Server 2007</a>. Woot! It's my first exam for the new Microsoft certification track.<br /><br /><span style="color:#000099;">Update 4 Jan 07:</span> I peered into my mailbox this morning and was surprised to see the letter notifying me that I've passed <a href="http://www.microsoft.com/learning/exams/70-631.mspx">071-631, TS: Windows SharePoint Services, Configuring</a> too! Coolness!Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-7647587.post-1162874395632691112006-11-07T12:36:00.000+08:002007-02-01T06:05:25.823+08:002007 Microsoft Office System Is Golden<p>Finally!<br /><br />---<br />REDMOND, Wash. — Nov. 6, 2006 — Microsoft Corp. today announced the completion of the 2007 Microsoft® Office system code and confirmed its release to manufacturing (RTM). This gold code milestone concludes the largest Microsoft Office beta program to date, with more than 3.5 million people downloading Beta 2. The unprecedented quantity of feedback from beta testers and customers helped the Office development team effectively validate product quality and optimize performance. Microsoft Office RTM also marks a critical step toward worldwide business availability of the 2007 Office system, Windows Vista™ operating system and Exchange Server 2007 on Nov. 30, 2006. To underscore the significance of this new day for business, Microsoft executives will participate in events around the globe, including an event with Microsoft CEO Steve Ballmer in New York. General availability of the products will follow in early 2007. <a href="http://www.microsoft.com/presspass/press/2006/nov06/11-062007OfficeRTMPR.mspx">Read the entire article</a>.</p>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-7647587.post-1161168414678792642006-10-18T17:32:00.000+08:002007-01-31T18:45:01.036+08:00Integrating Microsoft Commerce Server 2007 and MOSSI have just completed an interesting proof-of-concept project that showed how MOSS and Commerce Server can complement each other in provisioning an eCommerce site.<br /><br />Traditionally, Commerce Server handles all commerce-type transactions, e.g. shopping carts, product catalogs, inventory, order management, etc.<br /><br />MOSS picks up where Commerce Server leaves off by putting forward web content management (versioning of product information, approval workflows), some level of collaboration (e.g. product review sub-sites) and generally handling the overall branding and management of the portal.<br /><br />Since both products leverage on ASP.NET 2.0, they integrate really nicely together. Kind of like building an eCommerce site on steroids :-)<br /><br />The trickiest bit, which suprisingly turned out to be a really smooth ride, was how to get MOSS linked up to Commerce Server. For an integrated solution, we absolutely needed to call Commerce Server APIs from MOSS. To add an additional level of complexity to the problem, we were also required to authenticate users using Commerce Server's UpmMembershipProvider.<br /><br />And before I forget what we went through, here's how it was done.<br /><br /><strong>Getting MOSS to recognize Commerce Server's APIs</strong><br />The first step was to merge the configuration files of both the Commerce Server and SharePoint site. Since we were using MOSS to manage the branding of the site, it made sense to make it the customer facing app and modify it's web.config file to include Commerce Server's configurations. These are the parts that need to be copied over (I'm going to use square brackets instead of angle brackets here as <a href="http://www.blogger.com">Blogger </a>does not handle angles very well):<br /><br />1. Everything in the [sectionGroup name="CommerceServer]" tag<br />2. Everything in the ["CommerceServer"] tag<br />3. All the commerce server specific handlers in the [httpModules] tag - Includes "CommerceApplication" all the way down to "CommerceDataWarehouseAuthenticationModule"<br />4. All the commerce server [assemblies] listed in the [compilation] tag.<br /><br />Next, we copied all the CommerceServer library files to the bin directory. List of files included:<br />a. CommerceMessageManager.dll<br />b. The "de-DE", "en-us", "fr-fr", ja-JP" sub folders.<br /><br />Copy also the following files from the root directory of the Commerce Server site to the root directory of the SharePoint site:<br />a. csapp.ini<br />b. OrderObjectMappings.xml<br />c. OrderPipelineMappings.xml<br />d. as well as the entire "pipelines" folder.<br /><br />And voila! With that, we could use the Commerce Server API from any page within MOSS. E.g. CommerceContext.Current should now return a valid instance.<br /><br /><strong>Implementing the UpmMembershipProvider on a MOSS site</strong><br />To capitalize on Commerce Server's Profiler, we needed to implement the UpmMembershipProvider on the MOSS site. This part of the setup has been nicely documented in this <a href="http://groups.google.com.sg/group/microsoft.public.commerceserver.general/msg/dae61f2735df12d2?dmode=source&hl=en">newsgroup post by Amy</a>.<br /><br />However, it's probably worthwhile to note that if you're using the email address as the loginID, you could distill it down to the following steps:<br /><br />1. Add the [membership] tag, for example: (note, I've replaced angle brakets with square brackets).<br /><br /><span style="color:#009900;">[membership defaultProvider="UpmMembershipProvider"]</span><br /><span style="color:#009900;">[providers]</span><br /><span style="color:#009900;">[clear /] </span><br /><span style="color:#009900;">[add applicationName="MyAppName" enablePasswordRetrieval="false" enablePasswordReset="true" logonNameProperty="GeneralInfo.email_address" requiresQuestionAndAnswer="true" requiresUniqueEmail="true" enableCreateDate="true" enableEmailAddress="true" enableLastLoginDate="true" profileDefinition="UserObject" passwordFormat="Hashed" name="UpmMembershipProvider" type="Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipProvider" /]</span><br /><span style="color:#009900;">[/providers] </span><br /><span style="color:#009900;">[/membership]</span><br /><br />2. Uncomment, or add (if it's not already present) the [profiles] tag in the [CommerceServer] section of the web.config file.<br /><br />3. And before you can add the first administrator to the site. You will need to complete all the steps above (yes, even the part about merging the web.config file) on the SharePoint Central Administration website as well.<br /><br />4. Finally, use SharePoint Central Administration to apply forms authentication to the site in question and specify "UpmMembershipProvider" as the membership provider.<br /><br />The biggest headaches that arose from the applying the UpmMembershipProvider were typos and missing commerce server tags. Make a tiny mistake and you will find that the login form gets stuck in a loop, regardless of the userid and password entered. When I forgot to add the commerce server [assemblies] to the web.config file, it took me 2 agonizing hours before I realised what was wrong. Erk.<br /><br />The best part is, once its setup, integrating Commerce Server and MOSS is a breeze. After the initial setup is done, you can easily create SharePoint web parts and user controls using Commerce Server's API to build some really neat features.<br /><br />Food for thought: It would really be nice to have an "Enable as Commerce Site" button in SharePoint Designer like the "Enable as CMS site" button we had in VS.NET for MCMS. That will be really neat!Unknownnoreply@blogger.com23tag:blogger.com,1999:blog-7647587.post-1156996674126465082006-08-31T11:55:00.000+08:002007-02-02T13:16:12.710+08:00One of the first SharePoint 2007 TAP sites goes liveCheck out one of the first SharePoint 2007 sites to go live, Hed Kandi: <a href="http://www.hedkandi.com/Pages/default.aspx">http://www.hedkandi.com/Pages/default.aspx</a><br /><br />You can't miss the "trademark" /Pages/ stamp in the URLs :-)Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-7647587.post-1153806674998724832006-07-25T13:51:00.000+08:002007-01-13T01:45:00.213+08:00Part 2 - Enabling Anonymous AccessEarlier, I wrote a about how to <a href="http://meiyinglim.blogspot.com/2006/07/implementing-forms-authentication-in.html">implement forms authentication for a SharePoint 2007 Beta2 site</a>. Typically, you would probably not want to apply authentication to the entire web site. You may want, for example, to allow anonymous users to view the home page.<br /><br />Here's how to turn on anonymous access:<br /><br /><strong>1.Enable anonymous access on the top-level web site:</strong><br />a. Select <span style="color:#009900;">Start > SharePoint 3.0 Central Administration</span><br />b. Click <span style="color:#009900;">Application Management</span><br />c. In the "Application Security" section, click <span style="color:#009900;">Authentication Providers</span>.<br />d. Select the web application to work on.<br />e. Click <span style="color:#009900;">ASpNetSqlMembershipProvider</span><br />f. Check the <span style="color:#009900;">Enable Anonymous Access</span> checkbox.<br />g. Click <span style="color:#009900;">Save</span><br /><br /><strong>2. Enable anonymous access at the site level</strong><br />a. Navigate to the web site. You will be prompted for a user id and password. Login as the adminstrator.<br />b. Goto <span style="color:#009900;">Site Actions> Site Settings > Modify All Site Settings</span><br />c. In the Users and Permissions column, choose <span style="color:#009900;">Advanced Permissions</span>.<br />d. From the menu, choose <span style="color:#009900;">Settings > Anonymous Access</span><br /><br /><a href="http://photos1.blogger.com/blogger/4033/295/1600/anonymous1.jpg"><img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/4033/295/320/anonymous1.jpg" border="0" /></a><br /><br /><span style="color:#009900;"></span><br />e. You could choose to allow guest users to view only lists or the entire web site. Choose to enable anonymous access on the entire web site.<br /><br /><a href="http://photos1.blogger.com/blogger/4033/295/1600/anonymous2.jpg"><img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/4033/295/320/anonymous2.jpg" border="0" /></a><br /><br /><strong>3. Delete the authentication cookie</strong><br />a. Select <span style="color:#009900;">Tools > Internet Options</span><br />b. Click <span style="color:#009900;">Delete Cookies</span><br /><br />And the next time you open your page, you won't have to login to view the front page. To prevent anonymous users from viewing sub sites, repeat step 2 for each sub site but choose "Nothing" instead.Unknownnoreply@blogger.com7tag:blogger.com,1999:blog-7647587.post-1153477245703477112006-07-21T18:13:00.000+08:002007-02-27T16:08:12.188+08:00Implementing Forms Authentication in MOSS Beta 2 with the ASP.NET SQL Provider - Part 1Finally! I've got some time to take a really good look at MOSS :-) Along the way, I've been jotting down notes. Thought I'd just post them here so that in case if I forget to bring along my files, the information is right here on my blog.<br /><br />Steps to get Forms Authentication working with the ASP.NET SQL provider:<br /><br /><strong>1. Install the Application Services Database for SQL Server</strong><br />a. Select <span style="color:#009900;">Start > All Programs > Microsoft Visual Studio 2005 > Visual Studio Tools > Visual Studio 2005 Command Prompt</span>.<br />b. Enter:<br /><span style="font-family:courier new;font-size:85%;">aspnet_regsql.exe -E -A all -S localhost\DatabaseServerName</span><br /><br />c. Wait while features are added to the local SQL dataase<br /><br />More details on the aspnet_regsql utility here:<br /><a href="http://msdn2.microsoft.com/en-us/library/x28wfk74.aspx">http://msdn2.microsoft.com/en-us/library/x28wfk74.aspx</a><br /><br /><strong>2. Add the First User</strong><br />The database has been created. However, it does not<br />contain any users and threfore we won't be able to log in. There are at least two ways to add a user. We could write a script, or we could access the ASP.NET Web Site Administration<br />Tool.<br /><br />[Update 27 Feb 2007] After a few tries, I find that writing a script is a lot easier and faster.<br /><strong>Option 1: Adding Users by Script</strong><br /><br />Simply run the following query in Microsoft SQL Management Studio against the aspnetdb database.<br /><br />declare @now datetime<br />set @now= GETDATE()<br />exec aspnet_Membership_CreateUser 'appName', 'userid','password','','email@somewhere.com','','',1,@now,@now,0,0,null<br /><br />Details on the structure of this script is available on <a href="http://msdn2.microsoft.com/en-us/library/aa478949.aspx">MSDN</a>.<br /><br /><strong>Option 2: Adding Users by Creating a Web Application</strong><br />a. Create a new web application.<br />b. Add the connection string between the <span style="font-family:courier new;font-size:85%;"><a href="http://msdn2.microsoft.com/en-us/library/bf7sd233.aspx"><configuration></a></span><a href="http://msdn2.microsoft.com/en-us/library/bf7sd233.aspx"><span style="font-family:courier new;font-size:85%;"><configuration></span></a><configuration><configuration>tags of the web.config file.<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdeL7OwwLHR_AkNkm6B7lf2T7MlVwK3OK8osEhSWmBHztfBCDdPIgdGmSwTXDfMp13NN7NQlBk4FtOyfG5IafXnTVu9NC-IxmoofT3gSTJSi-wKVtb4NwfLxrlojRcmb1Qxg/s1600-h/connectionStrings_CreateUser.gif"><img id="BLOGGER_PHOTO_ID_5036078610682798178" style="CURSOR: hand" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdeL7OwwLHR_AkNkm6B7lf2T7MlVwK3OK8osEhSWmBHztfBCDdPIgdGmSwTXDfMp13NN7NQlBk4FtOyfG5IafXnTVu9NC-IxmoofT3gSTJSi-wKVtb4NwfLxrlojRcmb1Qxg/s400/connectionStrings_CreateUser.gif" border="0" /></a><br /><br />c. From Visual Studio, select <span style="color:#006600;">Website ASP.NET Web Configuration</span>.<br />d. Click <span style="color:#006600;">Security Create User</span>. Add the name of the user. Later on, we will configure this user to be the site administrator.<br /><a href="http://photos1.blogger.com/blogger/4033/295/1600/aspnet.gif"><img src="http://photos1.blogger.com/blogger/4033/295/1600/aspnet.gif" width="300" /></a><br /><br /><br /><strong>3. Modify the web.config file</strong><br />a. Open the web.config file located in the C:\Inetpub\wwwroot\wss\VirtualDirectories\GUID<br />folder. To determine the exact location, open IIS and check the home directory of the SharePoint site.<br />b. Add the following connection string between the <span style="font-family:courier new;font-size:85%;"><a href="http://msdn2.microsoft.com/en-us/library/bf7sd233.aspx"><configuration></a></span>tag:<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6Y8EsxBzqOXNs3t51eUOjFf6iiV3cxHtv3Vr2qqLtvlVhXro0IG1nUVooZK7xHaOIzsjUsAsuZncWs8gyVb3LdirNeUyddZ_TfU1tyAJMUcCwuwy9q2td9NBnv3tulbMOyg/s1600-h/connectionStrings.gif"><img id="BLOGGER_PHOTO_ID_5036086779710595250" style="CURSOR: hand" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6Y8EsxBzqOXNs3t51eUOjFf6iiV3cxHtv3Vr2qqLtvlVhXro0IG1nUVooZK7xHaOIzsjUsAsuZncWs8gyVb3LdirNeUyddZ_TfU1tyAJMUcCwuwy9q2td9NBnv3tulbMOyg/s400/connectionStrings.gif" border="0" /></a><br /><br />c. Add the <a href="http://msdn2.microsoft.com/en-us/library/system.web.security.membership.aspx">provider </a>details between the <span style="font-family:courier new;font-size:85%;"><a href="http://msdn2.microsoft.com/en-us/library/system.web.security.membership.aspx"><system.web></a></span>tag:<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguR-ZsKB6aYjD-Jup1BBU2hZSoAUc1FcyKa4ghgz0pmhsnmtzwKkR27iackMwPda0fijXTE5lWB1lLBRPYoiQV3ED7mMNgtzcpZzLu6cy2cQ9MHYfznsA7WZp7W_L36h832A/s1600-h/membership.gif"><img id="BLOGGER_PHOTO_ID_5036105411278725330" style="CURSOR: hand" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguR-ZsKB6aYjD-Jup1BBU2hZSoAUc1FcyKa4ghgz0pmhsnmtzwKkR27iackMwPda0fijXTE5lWB1lLBRPYoiQV3ED7mMNgtzcpZzLu6cy2cQ9MHYfznsA7WZp7W_L36h832A/s400/membership.gif" border="0" /></a><br /><br />d. Repeat steps (a)-(c) for the <strong>SharePoint Central Administration v3</strong> website. We'll need the central administration site to work with forms authentication so that we can add the first administrator of the site. It is important to perform this step, otherwise you won't be able to add the first forms-based administrator later.<br /><br /><em>Warning! Check for typos. A single mistake may result in hours of troubleshooting!</em><br /><em></em><br /><em>[27 Feb 2007] One problem that I've had was mismatch of the applicationName field. It's got to be the same as the one used within the SQL script or SharePoint won't be able to match the users.</em><br /><br /><strong>4. Configure the SharePoint site for forms authentication</strong><br />a. Select <span style="color:#006600;">Start SharePoint Central Administration</span><br />b. Click <span style="color:#006600;">Application Management</span>.<br />c. In the Appliation Security section, click <span style="color:#006600;">Authentication providers</span>.<br />d. Check that you are working with the web application that you wish to configure Forms Authentication for.<br />e. Click <span style="color:#009900;">Windows</span>.<br />f. Set the the following fields:<br /><br /><br /><br /><br /><br /><br /><br /><ul><br /><br /><br /><br /><li>Authentication Mode = Forms </li><br /><br /><br /><br /><li>Membership provider name = AspNetSqlMembershipProvider.</li></ul>g. Click <span style="color:#006600;">Save</span><br /><br /><a href="http://photos1.blogger.com/blogger/4033/295/1600/provider.gif"><img src="http://photos1.blogger.com/blogger/4033/295/1600/provider.gif" width="300" /></a><br /><br /><br /><strong>5. Assign the user to be a site collection administrator.</strong><br />a. In SharePoint Central Administration Application Management, click <span style="color:#009900;">Site Collection Administrators</span> (you can find it in the SharePoint Site Management section).<br />b. Add the user as the site collection administrator of the website in which forms authentication will be applied.<br /><br /><a href="http://photos1.blogger.com/blogger/4033/295/1600/admin.gif"><img src="http://photos1.blogger.com/blogger/4033/295/1600/admin.gif" width="300" /></a><br /><br />And we're almost done. There are a couple more things such as granting anonymous users access to sections of the site. Also, we probably want employees on the intranet to use their windows account to log on to the site. I'll write a little about these topics in future articles.<br /><br /><span style="color:#000066;">[Update 27 Feb 2007] I've corrected some of the code errors. Blogger ate up the angled brackets and some of the mixed cased tags became lower case. To get around this, I've converted all the code to images and (hope) to post the snippets to my Y! briefcase for downloading soon. </span>Unknownnoreply@blogger.com13tag:blogger.com,1999:blog-7647587.post-1152764087505544402006-07-13T11:52:00.000+08:002006-07-13T17:46:45.550+08:00Installing MOSS - Just some random notesJust jotting down some random notes on installing a standalone version of MOSS 2007 Beta2 on a Windows 2003 Server.<br /><br /><strong>1. Error Message:</strong> This product requires ASP.Net web server extensions to be enabled in Internet Information Services (IIS). Enable this setting and re-run setup.<br /><br /><strong>Solution that worked:</strong><br />a. Ensure that ASP.NET 2.0 has been installed. (Check list of programs in Add/Remove programs)<br />b. In IIS, choose <span style="color:#009900;">Web Server Extensions</span> and ensure that ASP.NET 2.0 is allowed (by default, it is prohibited).<br /><br /><a href="http://photos1.blogger.com/blogger/4033/295/1600/iis_aspnet.1.jpg"><img alt="" src="http://photos1.blogger.com/blogger/4033/295/400/iis_aspnet.jpg" border="0" /></a><br /><br /><strong>2. Error Message:</strong> Failed to create the configuration database. An exception of type Microsoft.SharePoint.SPException was thrown. Additional exception information: The language is not supported on the server.<br /><br /><strong>Solution that worked: </strong>Matthew Cosier has hit the nail on the head with this one: <a href="http://mcosier.blogspot.com/2006/05/language-is-not-supported-on-server.html">http://mcosier.blogspot.com/2006/05/language-is-not-supported-on-server.html</a>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-7647587.post-1149572862604001132006-06-06T13:42:00.000+08:002006-06-10T23:50:36.260+08:00Jun 2006 SGDN #25 UG MeetingCome for the Singapore DotNet user group Portal Day this thursday, 8 Jun 2006! Kit Kai and I will be rolling up our sleeves to show you what's new in Microsoft SharePoint Server 2007. Hope to see you there!<br /><br /><a href="http://sgdotnet.org/forums/thread/26507.aspx">http://sgdotnet.org/forums/thread/26507.aspx</a><br /><br />---<br /><span style="font-size:130%;">It's Portal Day in June! </span><br /><br /><strong><u>Agenda </u></strong><br />--------------------------------------------------------------------------------------------<br />6:45 - 7:00 Registration<br />7:00 - 7:45 Grooving with Sharepoint 2007 by Loke Kit Kai<br />7:45 - 8:00 Break (Snacks will be provided)<br />8:00 - 8:45 Web Content Management with Microsoft Office Sharepoint Server 2007 by Lim Mei Ying<br />--------------------------------------------------------------------------------------------<br /><strong><u></u></strong><br /><strong><u>Venue </u></strong><br />Level 22, CF-12<br />NTUC Centre, 1 Marina Boulevard (near Raffles Place MRT and next to Neptune Theatre)<br />Synopsis<br /><br /><strong><u>Grooving with Sharepoint 2007 by Loke Kit Kai (MVP, Sharepoint) </u></strong><br />The upcoming Sharepoint 2007 introduces many new technologies that will faciliate the<br />managmeent of content and processes. Find out from Sharepoint MVP - Kit Kai on what's new in Sharepoint 2007, and be amongst the first amongst communities to witness the powerful new features, and how developers can make use of Sharepoint to deliver value to users.<br /><br /><strong><u>Web Content Management with Microsoft Office Sharepoint Server 2007 by Lim Mei Ying (MVP, CMS) </u></strong><br />Experience the power of the next generation of web content management with Microsoft Office SharePoint Server 2007. Mei Ying (MVP, CMS) will demonstrate how SharePoint streamlines the process of web content management and how you can use it to build your very own website today.<br /><br />Date/Time: 8th June 2006, 6:45pm to 8:45pm<br /><br /><strong><u>How to get there: </u></strong><br />For attendees who drive:<br />We recommend to park at the Neptune Theatre car park<br /><br /><strong><u>For attendees traveling by MRT: </u></strong><br />It is a 5 minute's walk from Raffles MRT Interchange, passing by the Asia Building.<br /><br /><strong><u>For attendees traveling by bus: </u></strong><br />Nearest bus stop is at Clifford Pier and it is a 2 minute's stroll to the OMB. Buses that service this bus stop are:<br />- SBS 10, 70, 97, 100, 107, 130, 131, 162 and 196<br />- TIBS 75, 167 and 700<br />- CSS 605 and 608Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-7647587.post-1148442157634697102006-05-24T11:08:00.000+08:002006-08-24T21:55:58.586+08:00Get Microsoft Office System 2007 Beta 2 now!The "<a href="http://www.microsoft.com/office/preview/beta/getthebeta.mspx">Get the Beta</a>" link is finally listed on the Office Preview website: <a href="http://www.microsoft.com/office/preview/default.mspx">http://www.microsoft.com/office/preview/default.mspx</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7647587.post-1140494042723744382006-02-21T11:50:00.000+08:002006-02-21T11:54:03.213+08:00Free Chapters available on MSDNPackt Publishing has released more code samples from the book <a href="http://www.packtpub.com/more_mcms/book">"Advanced Microsoft Content Management Server Development"</a><br /><br />The article discusses the how-to behind building custom MCMS placeholder controls, and shows the step-by-step process behind creating a:<br /><br />1. <a href="http://msdn.microsoft.com/library/en-us/odc_mcms2002_bk/html/cmsch8usefulplaceholdercontrols_p1.asp">Date Time Picker Control</a><br />2. <a href="http://msdn.microsoft.com/library/en-us/odc_mcms2002_bk/html/cmsch8usefulplaceholdercontrols_p2.asp">Multiple Attachment Placeholder Control</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7647587.post-1140144734734463742006-02-17T10:45:00.000+08:002006-02-17T11:06:49.936+08:00Microsoft Releases Pricing and Packaging Schemes for 2007 Microsoft Office SystemIt's finally been released!<br /><br />Read about the new packaging and pricing scheme on what was previously dubbed as Office 12:<br /><a href="http://www.microsoft.com/presspass/presskits/2007office/default.mspx">http://www.microsoft.com/presspass/presskits/2007office/default.mspx</a>.<br /><br />Read what Jeff Teper has to say about it on the <a href="http://blogs.msdn.com/sharepoint/archive/2006/02/16/533494.aspx">SharePoint Team Blog</a>. <br /><br />Exciting times are ahead!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-7647587.post-1135088963691638482005-12-20T22:24:00.000+08:002005-12-29T09:56:57.273+08:00Buy 2 MCMS eBooks for the price of 1!For a limited time only, you can get both electronic versions of "<a href="http://www.packtpub.com/mcms/book">Building Websites with Microsoft Content Management Server</a>" and "<a href="http://www.packtpub.com/more_mcms/book">Advanced Microsoft Content Management Server Development</a>" for the price of 1!<br /><br />Check out this irresistable offer at Packt's website: <a href="http://www.packtpub.com/articles/ebook_offer/cm1">http://www.packtpub.com/articles/ebook_offer/cm1</a><br /><br />Hurry, promotion ends on 3 Jan 2006.Unknownnoreply@blogger.com2