<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8128781602115848291</id><updated>2011-11-27T15:24:39.096-08:00</updated><category term='MOSS AND WSS'/><title type='text'>Moss and Wss</title><subtitle type='html'>Microsoft Ofice Sharepoint Server and Windows Sharepoint Server</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sharepoint-invention.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sharepoint-invention.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sankar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8128781602115848291.post-6063381446178581589</id><published>2008-07-17T01:58:00.001-07:00</published><updated>2008-07-17T01:58:36.002-07:00</updated><title type='text'>How do I install Active Directory on my Windows Server 2003 server?</title><content type='html'>First make sure you read and understand  Active Directory Installation Requirements. If you don't comply with all the requirements of that article you will not be able to set up your AD (for example: you don't have a NIC or you're using a computer that's not connected to a LAN).&lt;br /&gt;&lt;br /&gt;Note: This article is only good for understanding how to install the FIRST DC in a NEW AD Domain, in a NEW TREE, in a NEW FOREST. Meaning - don't do it for any other scenario, such as a new replica DC in an existing domain. In order to install a Windows Server 2003 DC in an EXISTING Windows 2000 Domain follow the Windows 2003 ADPrep tip.&lt;br /&gt;&lt;br /&gt;A Great Way to Master Active Directory... Watch These Videos!&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Have you seen the Active Directory Training videos by Train Signal? I highly recommend this course, as you will learn much more than you will from books (which never seem to have enough detail!). Their learn by doing approach is excellent because it shows you the "ins and outs" of Active Directory instead of reading pages and pages of theory.&lt;br /&gt;&lt;br /&gt;-Daniel Petri, Petri IT Knowledge Base&lt;br /&gt;&lt;br /&gt;Click Here to Watch Active Directory Videos!&lt;br /&gt;&lt;br /&gt;Windows 2000 Note: If you plan to install a new Windows 2000 DC please read How to Install Active Directory on Windows 2000.&lt;br /&gt;&lt;br /&gt;Windows Server 2003 Note: If you plan to install a new Windows Server 2003 DC in an existing AD forest please read the  page BEFORE you go on, otherwise you'll end up with the following error:&lt;br /&gt;&lt;br /&gt;Here is a quick list of what you must have:&lt;br /&gt;&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      An NTFS partition with enough free space&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      An Administrator's username and password&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      The correct operating system version&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      A NIC&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      Properly configured TCP/IP (IP address, subnet mask and - optional - default gateway)&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      A network connection (to a hub or to another computer via a crossover cable)&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      An operational DNS server (which can be installed on the DC itself)&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      A Domain name that you want to use&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      The Windows Server 2003 CD media (or at least the i386 folder)&lt;br /&gt;    *&lt;br /&gt;&lt;br /&gt;      Brains (recommended, not required...)&lt;br /&gt;&lt;br /&gt;This article assumes that all of the above requirements are fulfilled.&lt;br /&gt;Step 1: Configure the computer's suffix&lt;br /&gt;&lt;br /&gt;(Not mandatory, can be done via the Dcpromo process).&lt;br /&gt;&lt;br /&gt;   1.&lt;br /&gt;&lt;br /&gt;      Right click My Computer and choose Properties.&lt;br /&gt;   2.&lt;br /&gt;&lt;br /&gt;      Click the Computer Name tab, then Change.&lt;br /&gt;&lt;br /&gt;   3.&lt;br /&gt;&lt;br /&gt;      Set the computer's NetBIOS name. In Windows Server 2003, this CAN be changed after the computer has been promoted to Domain Controller.&lt;br /&gt;   4.&lt;br /&gt;&lt;br /&gt;      Click More.&lt;br /&gt;&lt;br /&gt;   5.&lt;br /&gt;&lt;br /&gt;      In the Primary DNS suffix of this computer box enter the would-be domain name. Make sure you got it right. No spelling mistakes, no "oh, I thought I did it right...". Although the domain name CAN be changed after the computer has been promoted to Domain Controller, this is not a procedure that one should consider lightly, especially because on the possible consequences. Read more about it on my Windows 2003 Domain Rename Tool page.&lt;br /&gt;&lt;br /&gt;   6.&lt;br /&gt;&lt;br /&gt;      Click Ok.&lt;br /&gt;   7.&lt;br /&gt;&lt;br /&gt;      You'll get a warning window.&lt;br /&gt;&lt;br /&gt;   8.&lt;br /&gt;&lt;br /&gt;      Click Ok.&lt;br /&gt;   9.&lt;br /&gt;&lt;br /&gt;      Check your settings. See if they're correct.&lt;br /&gt;&lt;br /&gt;  10.&lt;br /&gt;&lt;br /&gt;      Click Ok.&lt;br /&gt;  11.&lt;br /&gt;&lt;br /&gt;      You'll get a warning window.&lt;br /&gt;&lt;br /&gt;  12.&lt;br /&gt;&lt;br /&gt;      Click Ok to restart.&lt;br /&gt;&lt;br /&gt;Step 2: Configuring the computer's TCP/IP settings&lt;br /&gt;&lt;br /&gt;You must configure the would-be Domain Controller to use it's own IP address as the address of the DNS server, so it will point to itself when registering SRV records and when querying the DNS database.&lt;br /&gt;Configure TCP/IP&lt;br /&gt;&lt;br /&gt;   1.&lt;br /&gt;&lt;br /&gt;      Click Start, point to Settings and then click Control Panel.&lt;br /&gt;   2.&lt;br /&gt;&lt;br /&gt;      Double-click Network and Dial-up Connections.&lt;br /&gt;   3.&lt;br /&gt;&lt;br /&gt;      Right-click Local Area Connection, and then click Properties.&lt;br /&gt;&lt;br /&gt;   4.&lt;br /&gt;&lt;br /&gt;      Click Internet Protocol (TCP/IP), and then click Properties.&lt;br /&gt;&lt;br /&gt;   5.&lt;br /&gt;&lt;br /&gt;      Assign this server a static IP address, subnet mask, and gateway address. Enter the server's IP address in the Preferred DNS server box.&lt;br /&gt;&lt;br /&gt;    Note: This is true if the server itself will also be it's own DNS server.&lt;br /&gt;&lt;br /&gt;    If you have another operational Windows 2000/2003 server that is properly configured as your DNS server (read my Create a New DNS Server for AD page) - enter that server's IP address instead:&lt;br /&gt;&lt;br /&gt;   6.&lt;br /&gt;&lt;br /&gt;      Click Advanced.&lt;br /&gt;   7.&lt;br /&gt;&lt;br /&gt;      Click the DNS Tab.&lt;br /&gt;   8.&lt;br /&gt;&lt;br /&gt;      Select "Append primary and connection specific DNS suffixes"&lt;br /&gt;   9.&lt;br /&gt;&lt;br /&gt;      Check "Append parent suffixes of the primary DNS suffix"&lt;br /&gt;  10.&lt;br /&gt;&lt;br /&gt;      Check "Register this connection's addresses in DNS". If this Windows 2000/2003-based DNS server is on an intranet, it should only point to its own IP address for DNS; do not enter IP addresses for other DNS servers here. If this server needs to resolve names on the Internet, it should have a forwarder configured.&lt;br /&gt;&lt;br /&gt;  11.&lt;br /&gt;&lt;br /&gt;      Click OK to close the Advanced TCP/IP Settings properties.&lt;br /&gt;  12.&lt;br /&gt;&lt;br /&gt;      Click OK to accept the changes to your TCP/IP configuration.&lt;br /&gt;  13.&lt;br /&gt;&lt;br /&gt;      Click OK to close the Local Area Connections properties.&lt;br /&gt;&lt;br /&gt;Step 3: Configure the DNS Zone&lt;br /&gt;&lt;br /&gt;(Not mandatory, can be done via the Dcpromo process).&lt;br /&gt;&lt;br /&gt;This article assumes that you already have the DNS service installed. If this is not the case, please read Create a New DNS Server for AD.&lt;br /&gt;&lt;br /&gt;Furthermore, it is assumed that the DC will also be it's own DNS server. If that is not the case, you MUST configure another Windows 2000/2003 server as the DNS server, and if you try to run DCPROMO without doing so, you'll end up with errors and the process will fail.&lt;br /&gt;Creating a Standard Primary Forward Lookup Zone&lt;br /&gt;&lt;br /&gt;   1.&lt;br /&gt;&lt;br /&gt;      Click Start, point to All Programs, point to Administrative Tools, and then click DNS Manager. You see two zones under your computer name: Forward Lookup Zone and Reverse Lookup Zone.&lt;br /&gt;   2.&lt;br /&gt;&lt;br /&gt;      Right click Forward Lookup Zones and choose to add a new zone.&lt;br /&gt;&lt;br /&gt;   3.&lt;br /&gt;&lt;br /&gt;      Click Next. The new forward lookup zone must be a primary zone so that it can accept dynamic updates. Click Primary, and then click Next.&lt;br /&gt;&lt;br /&gt;   4.&lt;br /&gt;&lt;br /&gt;      The name of the zone must be the same as the name of the Active Directory domain, or be a logical DNS container for that name. For example, if the Active Directory domain is named "lab.dpetri.net", legal zone names are "lab.dpetri.net", "dpetri.net", or "net".&lt;br /&gt;&lt;br /&gt;    Type the name of the zone, and then click Next.&lt;br /&gt;&lt;br /&gt;   5.&lt;br /&gt;&lt;br /&gt;      Accept the default name for the new zone file. Click Next.&lt;br /&gt;&lt;br /&gt;   6.&lt;br /&gt;&lt;br /&gt;      To be able to accept dynamic updates to this new zone, click "Allow both nonsecure and secure dynamic updates". Click Next.&lt;br /&gt;&lt;br /&gt;   7.&lt;br /&gt;&lt;br /&gt;      Click Finish.&lt;br /&gt;&lt;br /&gt;    You should now make sure your computer can register itself in the new zone. Go to the Command Prompt (CMD) and run "ipconfig /registerdns" (no quotes, duh...). Go back to the DNS console, open the new zone and refresh it (F5). Notice that the computer should by now be listed as an A Record in the right pane.&lt;br /&gt;&lt;br /&gt;    If it's not there try to reboot (although if it's not there a reboot won't do much good). Check the spelling on your zone and compare it to the suffix you created in step 1. Check your IP settings.&lt;br /&gt;&lt;br /&gt;Enable DNS Forwarding for Internet connections (Not mandatory)&lt;br /&gt;&lt;br /&gt;   1.&lt;br /&gt;&lt;br /&gt;      Start the DNS Management Console.&lt;br /&gt;   2.&lt;br /&gt;&lt;br /&gt;      Right click the DNS Server object for your server in the left pane of the console, and click Properties. &lt;br /&gt;&lt;br /&gt;   3.&lt;br /&gt;&lt;br /&gt;      Click the Forwarders tab.&lt;br /&gt;   4.&lt;br /&gt;&lt;br /&gt;      In the IP address box enter the IP address of the DNS servers you want to forward queries to - typically the DNS server of your ISP. You can also move them up or down. The one that is highest in the list gets the first try, and if it does not respond within a given time limit - the query will be forwarded to the next server in the list. &lt;br /&gt;&lt;br /&gt;   5.&lt;br /&gt;&lt;br /&gt;      Click OK. &lt;br /&gt;&lt;br /&gt;Creating a Standard Primary Reverse Lookup Zone&lt;br /&gt;&lt;br /&gt;You can (but you don't have to) also create a reverse lookup zone on your DNS server. The zone's name will be the same as your TCP/IP Network ID. For example, if your IP address is 192.168.0.200, then the zone's name will be 192.168.0 (DNS will append a long name to it, don't worry about it). You should also configure the new zone to accept dynamic updates. I guess you can do it on your own by now, can't you?&lt;br /&gt;&lt;br /&gt;Step 4: Running DCPROMO&lt;br /&gt;&lt;br /&gt;After completing all the previous steps (remember you didn't have to do them) and after double checking your requirements you should now run Dcpromo.exe from the Run command.&lt;br /&gt;&lt;br /&gt;   1.&lt;br /&gt;&lt;br /&gt;      Click Start, point to Run and type "dcpromo".&lt;br /&gt;&lt;br /&gt;   2.&lt;br /&gt;&lt;br /&gt;      The wizard windows will appear. Click Next.&lt;br /&gt;&lt;br /&gt;   3.&lt;br /&gt;&lt;br /&gt;      In the Operating System Compatibility windows read the requirements for the domain's clients and if you like what you see - press Next.&lt;br /&gt;&lt;br /&gt;   4.&lt;br /&gt;&lt;br /&gt;      Choose Domain Controller for a new domain and click Next.&lt;br /&gt;&lt;br /&gt;   5.&lt;br /&gt;&lt;br /&gt;      Choose Create a new Domain in a new forest and click Next.&lt;br /&gt;&lt;br /&gt;   6.&lt;br /&gt;&lt;br /&gt;      Enter the full DNS name of the new domain, for example - kuku.co.il - this must be the same as the DNS zone you've created in step 3, and the same as the computer name suffix you've created in step 1. Click Next.&lt;br /&gt;&lt;br /&gt;    This step might take some time because the computer is searching for the DNS server and checking to see if any naming conflicts exist.&lt;br /&gt;&lt;br /&gt;   7.&lt;br /&gt;&lt;br /&gt;      Accept the the down-level NetBIOS domain name, in this case it's KUKU. Click Next&lt;br /&gt;&lt;br /&gt;   8.&lt;br /&gt;&lt;br /&gt;      Accept the Database and Log file location dialog box (unless you want to change them of course). The location of the files is by default %systemroot%\NTDS, and you should not change it unless you have performance issues in mind. Click Next.&lt;br /&gt;&lt;br /&gt;   9.&lt;br /&gt;&lt;br /&gt;      Accept the Sysvol folder location dialog box (unless you want to change it of course). The location of the files is by default %systemroot%\SYSVOL, and you should not change it unless you have performance issues in mind. This folder must be on an NTFS v5.0 partition. This folder will hold all the GPO and scripts you'll create, and will be replicated to all other Domain Controllers. Click Next.&lt;br /&gt;&lt;br /&gt;  10.&lt;br /&gt;&lt;br /&gt;      If your DNS server, zone and/or computer name suffix were not configured correctly you will get the following warning:&lt;br /&gt;&lt;br /&gt;    This means the Dcpromo wizard could not contact the DNS server, or it did contact it but could not find a zone with the name of the future domain. You should check your settings. Go back to steps 1, 2 and 3. Click Ok.&lt;br /&gt;&lt;br /&gt;    You have an option to let Dcpromo do the configuration for you. If you want, Dcpromo can install the DNS service, create the appropriate zone, configure it to accept dynamic updates, and configure the TCP/IP settings for the DNS server IP address.&lt;br /&gt;&lt;br /&gt;    To let Dcpromo do the work for you, select "Install and configure the DNS server...".&lt;br /&gt;&lt;br /&gt;    Click Next.&lt;br /&gt;&lt;br /&gt;    Otherwise, you can accept the default choice and then quit Dcpromo and check steps 1-3.&lt;br /&gt;&lt;br /&gt;  11.&lt;br /&gt;&lt;br /&gt;      If your DNS settings were right, you'll get a confirmation window.&lt;br /&gt;&lt;br /&gt;    Just click Next.&lt;br /&gt;&lt;br /&gt;  12.&lt;br /&gt;&lt;br /&gt;      Accept the Permissions compatible only with Windows 2000 or Windows Server 2003 settings, unless you have legacy apps running on Pre-W2K servers.&lt;br /&gt;&lt;br /&gt;  13.&lt;br /&gt;&lt;br /&gt;      Enter the Restore Mode administrator's password. In Windows Server 2003 this password can be later changed via NTDSUTIL. Click Next.&lt;br /&gt;&lt;br /&gt;  14.&lt;br /&gt;&lt;br /&gt;      Review your settings and if you like what you see - Click Next.&lt;br /&gt;&lt;br /&gt;  15.&lt;br /&gt;&lt;br /&gt;      See the wizard going through the various stages of installing AD. Whatever you do - NEVER click Cancel!!! You'll wreck your computer if you do. If you see you made a mistake and want to undo it, you'd better let the wizard finish and then run it again to undo the AD.&lt;br /&gt;&lt;br /&gt;  16.&lt;br /&gt;&lt;br /&gt;      If all went well you'll see the final confirmation window. Click Finish.&lt;br /&gt;&lt;br /&gt;  17.&lt;br /&gt;&lt;br /&gt;      You must reboot in order for the AD to function properly.&lt;br /&gt;&lt;br /&gt;  18.&lt;br /&gt;&lt;br /&gt;      Click Restart now.&lt;br /&gt;&lt;br /&gt;Step 5: Checking the AD installation&lt;br /&gt;&lt;br /&gt;You should now check to see if the AD installation went well.&lt;br /&gt;&lt;br /&gt;   1.&lt;br /&gt;&lt;br /&gt;      First, see that the Administrative Tools folder has all the AD management tools installed.&lt;br /&gt;&lt;br /&gt;   2.&lt;br /&gt;&lt;br /&gt;      Run Active Directory Users and Computers (or type "dsa.msc" from the Run command). See that all OUs and Containers are there.&lt;br /&gt;&lt;br /&gt;   3.&lt;br /&gt;&lt;br /&gt;      Run Active Directory Sites and Services. See that you have a site named Default-First-Site-Name, and that in it your server is listed.&lt;br /&gt;&lt;br /&gt;   4.&lt;br /&gt;&lt;br /&gt;      Open the DNS console. See that you have a zone with the same name as your AD domain (the one you've just created, remember? Duh...). See that within it you have the 4 SRV record folders. They must exist.&lt;br /&gt;&lt;br /&gt;    = Good&lt;br /&gt;&lt;br /&gt;    If they don't (like in the following screenshot), your AD functions will be broken (a good sign of that is the long time it took you to log on. The "Preparing Network Connections" windows will sit on the screen for many moments, and even when you do log on many AD operations will give you errors when trying to perform them).&lt;br /&gt;&lt;br /&gt;    = Bad&lt;br /&gt;&lt;br /&gt;    This might happen if you did not manually configure your DNS server and let the DCPROMO process do it for you.&lt;br /&gt;&lt;br /&gt;    Another reason for the lack of SRV records (and of all other records for that matter) is the fact that you DID configure the DNS server manually, but you made a mistake, either with the computer suffix name or with the IP address of the DNS server (see steps 1 through 3).&lt;br /&gt;&lt;br /&gt;    To try and fix the problems first see if the zone is configured to accept dynamic updates.&lt;br /&gt;&lt;br /&gt;       1.&lt;br /&gt;&lt;br /&gt;          Right-click the zone you created, and then click Properties.&lt;br /&gt;&lt;br /&gt;       2.&lt;br /&gt;&lt;br /&gt;          On the General tab, under Dynamic Update, click to select "Nonsecure and secure" from the drop-down list, and then click OK to accept the change.&lt;br /&gt;&lt;br /&gt;    You should now restart the NETLOGON service to force the SRV registration.&lt;br /&gt;&lt;br /&gt;    You can do it from the Services console in Administrative tools:&lt;br /&gt;&lt;br /&gt;    Or from the command prompt type "net stop netlogon", and after it finishes, type "net start netlogon".&lt;br /&gt;&lt;br /&gt;    Let it finish, go back to the DNS console, click your zone and refresh it (F5). If all is ok you'll now see the 4 SRV record folders.&lt;br /&gt;&lt;br /&gt;    If the 4 SRV records are still not present double check the spelling of the zone in the DNS server. It should be exactly the same as the AD Domain name. Also check the computer's suffix (see step 1). You won't be able to change the computer's suffix after the AD is installed, but if you have a spelling mistake you'd be better off by removing the AD now, before you have any users, groups and other objects in place, and then after repairing the mistake - re-running DCPROMO.&lt;br /&gt;&lt;br /&gt;   5.&lt;br /&gt;&lt;br /&gt;      Check the NTDS folder for the presence of the required files.&lt;br /&gt;&lt;br /&gt;   6.&lt;br /&gt;&lt;br /&gt;      Check the SYSVOL folder for the presence of the required subfolders.&lt;br /&gt;&lt;br /&gt;   7.&lt;br /&gt;&lt;br /&gt;      Check to see if you have the SYSVOL and NETLOGON shares, and their location.&lt;br /&gt;&lt;br /&gt;If all of the above is ok, I think it's safe to say that your AD is properly installed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128781602115848291-6063381446178581589?l=sharepoint-invention.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepoint-invention.blogspot.com/feeds/6063381446178581589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128781602115848291&amp;postID=6063381446178581589' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/6063381446178581589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/6063381446178581589'/><link rel='alternate' type='text/html' href='http://sharepoint-invention.blogspot.com/2008/07/how-do-i-install-active-directory-on-my.html' title='How do I install Active Directory on my Windows Server 2003 server?'/><author><name>Sankar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128781602115848291.post-1629301416395136518</id><published>2008-07-05T01:25:00.000-07:00</published><updated>2008-07-05T01:26:14.897-07:00</updated><title type='text'>Connecting Web Parts in SharePoint Portal Server 2003, Part 2</title><content type='html'>&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;b&gt;Connecting Web Part Exercise&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;I am using an ICellProvider Web Part to display the functionality of a connectable Web Part. The Cell Provider Web Part contains a textbox where end users can enter a value and a button. When the Cell Provider Web Part is connected to another Web Part, the value entered to the textbox will be passed to the consumer Web Part. Article two in this series will focus on how to create Cell Provider Web Parts. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;The end users select the dropdown arrow at right hand corner of the Web Part when they are ready to connect the Web Part. End users should make sure that the page is in design view. The information about the Web Part will display as shown below, explaining the functionality of the Web Part. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;img src="http://www.intranetjournal.com/articles/200408/webpart4.bmp" border="1" /&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;The developer has the option to enter a meaningful description about the Web Part when developing it.  &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;It will display a list of Web Parts that are compatible to connect to the Web Part as displayed below. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;img src="http://www.intranetjournal.com/articles/200408/webpart5.bmp" border="1" /&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;Currently only one Web Part is indicated compatible with the Provider Web Part. Simply clicking the "Cell Consumer Web Part" will connect the Cell Provider Web Part with "Cell Consumer Web Part". &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;A right sign will indicate which Web Part is connected to what as displayed below. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;img src="http://www.intranetjournal.com/articles/200408/webpart6.bmp" border="1" /&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;Article three in this series will focus on how to create ICellConsumer Web Parts. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;img src="http://www.intranetjournal.com/articles/200408/webpart7.bmp" border="1" width="450" /&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;b&gt;&lt;i&gt;The connection between and ICellProvider and ICellConsumer Web Part.&lt;/i&gt;&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;The value entered in the textbox at Cell Provider Web Part will get consumed by Cell Consumer Web Part. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;b&gt;Disconnecting the Web Parts&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;To remove the connection between two Web Parts, navigate to design view of the Web page and click the connected Web Part title. (The connected Web Part title will display with a right mark in front.). A message will display to confirm your action as displayed below: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;img src="http://www.intranetjournal.com/articles/200408/webpart8.bmp" border="1" width="450" /&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;b&gt;&lt;i&gt;Removing connection between Web Parts.&lt;/i&gt;&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;b&gt;Web Services and Connectable Web Parts&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;Web services are mainly developed to provide specific data to a consumer. The developer has full control over exposing the Web service. The connectable Web Parts provide the option to the end user. The connectable Web Part can stand alone as individual Web Parts providing their dedicated information and then connect them together to provide filtering of information. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;For example, there can be an employee list Web Part and employee details Web Part. Both of the Web Parts can stand alone providing information. If the end user wants to display the details of a selected employee, the end user has the option to connect the employee list Web Part to the employee detail Web Part. In this way, when the end user selects an employee from the employee list, the selected employee details will display in the details Web Part. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;If you develop a Web service to cater to the above scenario, the developer has full control of the end result. The functionality provided by the Web service is not visible to the end user and the end user won't have knowledge or control to reuse the Web service if they need to in the future. At the end of the day it's reliant on whether you want to create a dedicated Web service or individual Web Parts that can stand alone and work together if needed. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;The biggest benefit Web Parts have over a Web service is the reusability and the option for the end user to have control of their environment. This is a very important aspect in a portal architecture where end users have control over what they see. Portals are mainly developed so that end users can gather information relevant to them and centralize it. End users having more control over their environment is better than depending on a developer in a portal environment. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;b&gt;Conclusion&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;The connectable Web Parts are similar to normal Web Parts. The only difference is they are inheriting from a connection interface class that provides capability to communicate with other Web Parts at run time, so they can act as service if needed. Articles two and three of this series will show how to develop connectable Web Parts using the ICellProvider and ICellConsumer interfaces. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128781602115848291-1629301416395136518?l=sharepoint-invention.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepoint-invention.blogspot.com/feeds/1629301416395136518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128781602115848291&amp;postID=1629301416395136518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/1629301416395136518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/1629301416395136518'/><link rel='alternate' type='text/html' href='http://sharepoint-invention.blogspot.com/2008/07/connecting-web-parts-in-sharepoint_05.html' title='Connecting Web Parts in SharePoint Portal Server 2003, Part 2'/><author><name>Sankar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128781602115848291.post-3849143939435577230</id><published>2008-07-05T01:24:00.000-07:00</published><updated>2008-07-05T01:25:33.591-07:00</updated><title type='text'>Connecting Web Parts in SharePoint Portal Server 2003, Part 1</title><content type='html'>&lt;p&gt;  &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;Microsoft's SharePoint Portal Server lets different developers and organisations develop Web Parts that can communicate with each other. A Web Part is a modular unit of information that works with Windows SharePoint Services Web sites only. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;Web Parts contain Web-based content and are the building block of a Web Part Page. You can also create connections between Web Parts so that when you perform an action in one Web Part, it changes the contents of another Web Part. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;The SharePoint architecture supports standard Connection Interfaces for passing information among Web Parts at runtime. The connectable Web Part will act as a provider Web Part by providing information to another Web Part or as a consumer Web Part by consuming information from a provider Web Part. Two Web Parts supported by a connection interface can be connected by an end user with either Microsoft Office Front Page or an Internet browser. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;b&gt;Connection Interface Details&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;There are few a different connection interfaces that provide different behaviors. The difference is mainly found in the amount of information that can be passed from one to another. For example, one interface can support providing a single value to a consumer Web Part. There are other interfaces that support more than a single value. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;The connectable Web Part raises an interface event that executes an action in Web Parts connected to it. These connection interfaces act as pairs by either being a provider or consumer Web Part. An event from the provider will trigger an action in the consumer Web Part, and an event from the consumer Web Part will trigger an action in the provider Web Part. The following are some of the connection interface pairs and their functionality. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;table align="center" border="1" cellpadding="3" cellspacing="0" width="450"&gt; &lt;tbody&gt;&lt;tr bgcolor="#e1e1e1"&gt; &lt;td colspan="2" align="center"&gt;&lt;b&gt;Connection Interface Pairs and Their Functionality&lt;/b&gt;&lt;/td&gt;  &lt;/tr&gt; &lt;tr&gt; &lt;td align="center"&gt;&lt;b&gt;Connection Interface Pair&lt;/b&gt;&lt;/td&gt; &lt;td align="center"&gt;&lt;b&gt;Functionality&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;ICellProvider, ICellConsumer&lt;/td&gt; &lt;td&gt;Provide or consume a single value from one Web Part to another.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;IRowProvider, IRowConsumer&lt;/td&gt; &lt;td&gt;Provide or consume a single or multiple rows of values from one Web Part to another.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;IListProvider, IListConsumer&lt;/td&gt; &lt;td&gt;Provide or consume an entire list from one Web Part to another.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;IFilterProvider, IFilterConsumer&lt;/td&gt; &lt;td&gt;Provide or consume a filter value.&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;There are more connection interfaces available from the SharePoint architecture. However, I am mainly looking at interfaces connected using an Internet browser. There are a few more interfaces that are supported by Microsoft Front Page. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;Web Parts can be connected only if they are compatible with each other. If Web Parts are not compatible, the Connection menu item in the Web Part will be disabled, and a tool tip will display the reason why it is disabled. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;img src="http://www.intranetjournal.com/articles/200408/webpart1.bmp" border="1" /&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;b&gt;Compatibility Rules&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;The Web Part won't be able to connect to itself either directly or through a chain of connections. There are a few compatibility rules that SharePoint architecture follows when determining whether the Web Parts are compatible. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;li&gt; Are the Web Parts connecting as opposite pairs? For example, only ICellProvider interface can be connect with ICellConsumer interface. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt; Is the Web Part connecting through a Transformer? The Web Part architecture supports connecting dissimilar Web Parts with each other through transformers. For example, the IRowProvider Web Part can connect with either the IRowConsumer or the ICellConsumer Web Part. When it is connected to an ICellConsumer Web Part, the transformer determines which field will be consumed from the provider Web Part. The following are some of the transformers supported by connecting through a browser: &lt;p&gt; IRowProvider to ICellConsumer&lt;br /&gt;IRowProvider to IFilterConsumer  &lt;/p&gt;&lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt; &lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;The following are some of the interfaces that support the cross page connections. This means Web Parts in two different pages can communicate with each other. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;table align="center" border="1" cellpadding="3" cellspacing="0" width="450"&gt; &lt;tbody&gt;&lt;tr bgcolor="#e1e1e1"&gt;&lt;td colspan="2" align="center"&gt;&lt;b&gt;Interfaces Supporting Cross Page Connection&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align="center"&gt;&lt;b&gt;Source page Interface&lt;/b&gt;&lt;/td&gt;  &lt;td align="center"&gt;&lt;b&gt;Target page Interface&lt;/b&gt;&lt;/td&gt;  &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;IRowProvider&lt;/td&gt; &lt;td&gt;IFilterConsumer&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;IFilterProvider&lt;/td&gt; &lt;td&gt;IFilterConsumer&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;Web Parts can run on the client side, server side, or both. The connectable Web Part only can connect with other connectable Web Parts in the same location. This means both Web Parts should run either client side or server side. A client side Web Part won't be able to connect to a server side Web Part and vice versa. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;When the developer creates the Web Part, he can determine the number of connections supported by the Web Part. This is done when the interface is registered in the code. The connection number can be either one or unlimited. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;b&gt;Connect Web Parts Through an Internet Browser&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;According to the SharePoint Portal Server 2003 Client section on &lt;a href="http://www.microsoft.com/office/sharepoint/prodinfo/sysreq.mspx"&gt;Microsoft's SharePoint Portal Server 2003 System Requirements page&lt;/a&gt;, "To use the SharePoint Portal Server 2003 client, you need:  &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;b&gt;Portal access&lt;/b&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;li&gt;Microsoft Internet Explorer 5.01, plus the latest service pack  &lt;/li&gt;&lt;li&gt;Internet Explorer 5.5, plus the latest service pack  &lt;/li&gt;&lt;li&gt;Internet Explorer 6, plus the latest service pack  &lt;/li&gt;&lt;li&gt;Internet Explorer 5.2 for Mac OS X, plus the latest service pack  &lt;/li&gt;&lt;li&gt;Netscape Navigator 6.2 or later  &lt;/li&gt;&lt;li&gt;Netscape Navigator 6.2 for Mac  &lt;/li&gt;&lt;li&gt;Netscape Navigator 6.2 for UNIX  &lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt; &lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;b&gt;Portal management&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;li&gt;Internet Explorer 5.5, plus the latest service pack  &lt;/li&gt;&lt;li&gt;Internet Explorer 6, plus the latest service pack &lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt; The Web page that contains the Web Parts should be in design view to support the connection functionality; otherwise, the connecting Web Part option won't be available to the end user. To access the design view of a SharePoint Web page, navigate to the top right hand corner and select &lt;b&gt;Modify My Page&lt;/b&gt; or &lt;b&gt;Modify Shared Page&lt;/b&gt; depending on whether the end user is using personal or shared view. Then select &lt;b&gt;Design&lt;/b&gt; this page option from the dropdown menu as displayed below.  &lt;/span&gt;&lt;/span&gt;&lt;p align="center"&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;img src="http://www.intranetjournal.com/articles/200408/webpart2.bmp" border="1" /&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;A right mark will indicate whether the page is in design view as displayed below. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;&lt;img src="http://www.intranetjournal.com/articles/200408/webpart3.bmp" border="1" /&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;span style="font-family:Arial,Helvetica;font-size:-2;"&gt;&lt;span style="font-family:Arial, Helvetica;font-size:85%;"&gt;There are more options available in a Web Part menu when its holding page is in design view. The Web Parts "Connections" option only is available when the Web Part is displayed in design view.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128781602115848291-3849143939435577230?l=sharepoint-invention.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepoint-invention.blogspot.com/feeds/3849143939435577230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128781602115848291&amp;postID=3849143939435577230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/3849143939435577230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/3849143939435577230'/><link rel='alternate' type='text/html' href='http://sharepoint-invention.blogspot.com/2008/07/connecting-web-parts-in-sharepoint.html' title='Connecting Web Parts in SharePoint Portal Server 2003, Part 1'/><author><name>Sankar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128781602115848291.post-4290690583719284330</id><published>2008-07-04T22:57:00.000-07:00</published><updated>2008-07-04T23:50:36.308-07:00</updated><title type='text'>Creating a Basic Web Part</title><content type='html'>&lt;div id="mainSection"&gt; &lt;div id="mainBody"&gt;  &lt;p&gt;This walkthrough provides the steps for creating a basic custom Web Part that you can add to your Web Part page. It is a simple HelloWorld Web Part demonstrating how to create a Web Part that derives from the ASP.NET 2.0 &lt;b&gt;WebPart&lt;/b&gt; class for use in a SharePoint site. &lt;/p&gt; &lt;div class="alert"&gt;&lt;table width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th align="left"&gt;&lt;img class="note" alt="Note" src="http://i.msdn.microsoft.com/ms415817.note%28en-us,office.12%29.gif" /&gt;Note: &lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &lt;p&gt;For more information about ASP.NET Web Parts, see the following ASP.NET 2.0 documentation: &lt;a id="ctl00_rs1_mainContentContainer_ctl01" onclick="javascript:Track('ctl00_rs1_mainContentContainer_ctl00|ctl00_rs1_mainContentContainer_ctl01',this);" href="http://www.asp.net/QuickStart/aspnet/doc/webparts/default.aspx"&gt;ASP.NET Web Parts Quick Start&lt;/a&gt; and &lt;a id="ctl00_rs1_mainContentContainer_ctl02" onclick="javascript:Track('ctl00_rs1_mainContentContainer_ctl00|ctl00_rs1_mainContentContainer_ctl02',this);" href="http://msdn2.microsoft.com/en-us/library/e0s9t4ck.aspx"&gt;ASP.NET Web Parts Pages&lt;/a&gt;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; &lt;div id="ctl00_rs1_mainContentContainer_cpe211476" class="MTPS_CollapsibleRegion"&gt;    &lt;div id="ctl00_rs1_mainContentContainer_cpe211476_h" class="CollapseRegionLink"&gt;     &lt;img id="ctl00_rs1_mainContentContainer_cpe211476_i" src="http://i.msdn.microsoft.com/Platform/Controls/CollapsibleArea/resources/minus.gif" style="border-width: 0px; vertical-align: middle;" /&gt; Prerequisites    &lt;/div&gt;&lt;div style="overflow: visible; display: block; height: auto; width: 1193px;" id="ctl00_rs1_mainContentContainer_cpe211476_c" class="MTPS_CollapsibleSection"&gt;&lt;div style="display: block;" id="" class="MTPS_CollapsibleSection"&gt;     &lt;a name="prerequisitesToggle"&gt;&lt;/a&gt; &lt;p&gt;         Windows SharePoint Services 3.0 &lt;/p&gt; &lt;p&gt;Visual Studio 2005&lt;/p&gt;     &lt;/div&gt;&lt;/div&gt;   &lt;/div&gt;&lt;div id="sectionSection0" class="seeAlsoNoToggleSection"&gt;  &lt;div class="subSection"&gt;  &lt;h4 class="subHeading"&gt;Step 1: Create an ASP.NET Web Part assembly&lt;/h4&gt;&lt;div class="subSection"&gt; &lt;p&gt;To create a simple Web Part, you start by developing an ASP.NET Web Part assembly. To start, you can create a class library project with a class that derives from the &lt;b&gt;System.Web.UI.WebControls.WebParts.WebPart&lt;/b&gt; base class. &lt;/p&gt; &lt;h3 class="subHeading"&gt;Create an ASP.NET Web Part Assembly&lt;/h3&gt;&lt;div class="subSection"&gt;&lt;ol&gt;&lt;li&gt; &lt;p&gt;Start Visual Studio 2005.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;Start a new C# class library project.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;Type &lt;b&gt;HelloWorldWebPart&lt;/b&gt; as the project name.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;Add a reference to &lt;b&gt;System.Web.&lt;/b&gt;&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;In your .cs file, copy and paste in the following code:&lt;/p&gt; &lt;div class="libCScode" id="ctl00_rs1_mainContentContainer_ctl05_CSharp"&gt;&lt;div class="CodeSnippetTitleBar"&gt;&lt;div class="CodeDisplayLanguage"&gt;C#&lt;/div&gt;&lt;div class="CopyCodeButton"&gt;&lt;a class="copyCode" href="javascript:CopyCode('ctl00_rs1_mainContentContainer_ctl05CSharp');"&gt;&lt;img src="http://i.msdn.microsoft.com/Platform/Controls/CodeSnippet/resources/copy_off.gif" align="middle" border="0" height="9" /&gt; Copy Code&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;pre class="libCScode" id="ctl00_rs1_mainContentContainer_ctl05CSharp" space="preserve"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Web.UI.WebControls.WebParts;&lt;br /&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; MyWebPartLibrary&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; HelloWorldWebPart : WebPart&lt;br /&gt;   {&lt;br /&gt;    &lt;span style="color: blue;"&gt;protected&lt;/span&gt; override &lt;span style="color: blue;"&gt;void&lt;/span&gt; Render(System.Web.UI.HtmlTextWriter writer)&lt;br /&gt;     {&lt;br /&gt;        writer.Write(&lt;span style="color: maroon;"&gt;&lt;span style="color: maroon;"&gt;"Hello, World!"&lt;/span&gt;&lt;/span&gt;);&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;Compile the solution. Now you have an assembly that contains your HelloWorldWebPart Web Part. &lt;/p&gt; &lt;/li&gt;&lt;/ol&gt;&lt;/div&gt; &lt;/div&gt; &lt;h4 class="subHeading"&gt;Step 2: Place your assembly in the bin or global assembly cache&lt;/h4&gt;&lt;div class="subSection"&gt; &lt;p&gt;Within a SharePoint site, you can deploy a Web Part assembly to one of two locations:&lt;/p&gt; &lt;ul&gt;&lt;li&gt; &lt;p&gt;bin directory: The bin directory is a folder stored in your Web application root directory. For more information, see &lt;a id="ctl00_rs1_mainContentContainer_ctl06" onclick="javascript:Track('ctl00_rs1_mainContentContainer_ctl00|ctl00_rs1_mainContentContainer_ctl06',this);" href="http://msdn.microsoft.com/en-us/library/ms474356.aspx"&gt;How to: Find the Web Application Root&lt;/a&gt;.&lt;/p&gt; &lt;div class="alert"&gt;&lt;table width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th align="left"&gt;&lt;img class="note" alt="Note" src="http://i.msdn.microsoft.com/ms415817.note%28en-us,office.12%29.gif" /&gt;Note: &lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &lt;p&gt;If a bin directory does not exist you must add one. Web Parts cannot be stored in the _app_bin directory. &lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;global assembly cache: The global assembly cache enables you to share assemblies across numerous applications. The global assembly cache is automatically installed with the .NET runtime. Components are typically stored in &lt;tt&gt;C:\WINNT\Assembly&lt;/tt&gt;. &lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Each location has advantages and disadvantages, as described in the following table.&lt;/p&gt; &lt;div class="labelheading"&gt;&lt;b&gt;&lt;!----&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="tableSection"&gt;&lt;table width="100%"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;th&gt;                       Deployment Location                     &lt;/th&gt; &lt;th&gt;                       Advantages                     &lt;/th&gt; &lt;th&gt;                       Disadvantages                     &lt;/th&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt; &lt;p&gt;bin directory&lt;/p&gt; &lt;/td&gt; &lt;td&gt; &lt;p&gt;A partial trust location. By default, code that runs from this directory has a low level of code access security (CAS) permissions. Because administrators must explicitly raise permissions granted to a Web Part so it can function properly, they can prefer that assemblies run in the bin directory with a known set of required CAS permissions. &lt;/p&gt; &lt;p&gt;A bin directory is specific to a Web application. This makes it possible to isolate code to a particular Web application.&lt;/p&gt; &lt;/td&gt; &lt;td&gt; &lt;p&gt;If you want your Web Part to run everywhere, you would need to deploy your bin assembly.&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt; &lt;p&gt;global assembly cache&lt;/p&gt; &lt;/td&gt; &lt;td&gt; &lt;p&gt;A global location where signed assemblies can be deployed. Assemblies run with full trust by default. They are globally installed, so they will work in any Web application. &lt;/p&gt; &lt;/td&gt; &lt;td&gt; &lt;p&gt;Generally no CAS restrictions on code installed to the global assembly cache; therefore, you lose the defense-in-depth security benefit.&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; &lt;p&gt;For the purposes of this sample, we are placing the assembly in the bin directory. &lt;/p&gt; &lt;/div&gt; &lt;h4 class="subHeading"&gt;Step 3: (Optional) If using the bin directory, set special security attributes&lt;/h4&gt;&lt;div class="subSection"&gt; &lt;p&gt;By default, code access security permissions for the bin directory are low; only pure execution is allowed. Although the sample in this walkthrough can run with the minimal trust level, in most cases you need to elevate these permissions to make your assembly run correctly, for example, if your Web Part requires access to the SharePoint object model.&lt;/p&gt; &lt;p&gt;There are two ways to elevate permissions:&lt;/p&gt; &lt;ul&gt;&lt;li&gt; &lt;p&gt;(Recommended) Create a new trust policy file, and point your web.config file at the new file. This option is more complicated but it gives you a precise attribution of permissions for your Web Parts.&lt;/p&gt; &lt;p&gt;For more information about trust policy files, see &lt;a id="ctl00_rs1_mainContentContainer_ctl07" onclick="javascript:Track('ctl00_rs1_mainContentContainer_ctl00|ctl00_rs1_mainContentContainer_ctl07',this);" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_SP2003_ta/html/sharepoint_wsscodeaccesssecurity.asp"&gt;Microsoft Windows SharePoint Services and Code Access Security&lt;/a&gt;. &lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;Raise the net trust level of the bin directory. In the web.config file in the Web application root, there is a tag called &lt;tt&gt;&lt;trust&gt;&lt;/tt&gt; with a default attribute of &lt;tt&gt;level="WSS_Minimal"&lt;/tt&gt;. You can change this level to &lt;tt&gt;WSS_Medium&lt;/tt&gt;. While this option is simpler, it grants arbitrary new permissions you might not need and is less secure than creating a new trust policy file. &lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;h3 class="subHeading"&gt;To raise the trust level of the bin directory&lt;/h3&gt;&lt;div class="subSection"&gt;&lt;ol&gt;&lt;li&gt; &lt;p&gt;Locate the web.config file in your application root and open it for editing.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;Locate the trust level tag, &lt;tt&gt;&lt;trust level="WSS_Minimal"&gt;&lt;/tt&gt;. Change the trust level to &lt;tt&gt;WSS_Medium&lt;/tt&gt;.&lt;/p&gt; &lt;/li&gt;&lt;/ol&gt;&lt;/div&gt; &lt;/div&gt; &lt;h4 class="subHeading"&gt;Step 4: Add your Web Part to the SafeControls List&lt;/h4&gt;&lt;div class="subSection"&gt; &lt;p&gt;A fundamental assumption of the Windows SharePoint Services technology is that untrusted users can upload and create ASPX pages within the system on which Windows SharePoint Services is running. To prevent these users from arbitrarily adding server-side code within ASPX pages, Windows SharePoint Services provides a SafeControls list, which is a list of approved controls that they can use.&lt;/p&gt; &lt;p&gt;The SafeControls list is a list of controls and Web Parts specific to your SharePoint site that you have designated as safe for invocation on any ASPX page within your site. This list is contained in the web.config file in your Web application root. &lt;/p&gt; &lt;h3 class="subHeading"&gt;To add your Web Part to the Safe Controls list&lt;/h3&gt;&lt;div class="subSection"&gt;&lt;ol&gt;&lt;li&gt; &lt;p&gt;Open the web.config file in the application root.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;Add a safe control entry for your custom assembly to the web.config file as follows:&lt;/p&gt; &lt;p&gt;[xml]&lt;/p&gt; &lt;p&gt; &lt;tt&gt;&lt;safecontrol assembly="HelloWorldWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" namespace="MyWebPartLibrary" typename="*" safe="True" allowremotedesigner="True"&gt;&lt;/tt&gt; &lt;/p&gt; &lt;/li&gt;&lt;/ol&gt;&lt;/div&gt; &lt;/div&gt; &lt;h4 class="subHeading"&gt;Step 5: Create a .webpart file for your Web Part&lt;/h4&gt;&lt;div class="subSection"&gt; &lt;p&gt;Every Web Part should have a .webpart file, which is an XML file that describes the Web Part. The .webpart file also makes your Web Part appear in the Web Part gallery. This procedure describes the easiest way to create a .webpart file. &lt;/p&gt; &lt;h3 class="subHeading"&gt;To Create a .webpart file for your Web Part&lt;/h3&gt;&lt;div class="subSection"&gt;&lt;ol&gt;&lt;li&gt; &lt;p&gt;After you have deployed your Web Part and registered it in the Safe Control list, navigate to http://&lt;i&gt;myserver&lt;/i&gt;/_layouts/newdwp.aspx, where &lt;i&gt;myserver&lt;/i&gt; is the name of the server on which your SharePoint site is deployed.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;Select the check box next to &lt;b&gt;MyWebPartLibrary.HelloWorldWebPart&lt;/b&gt;.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;Click &lt;b&gt;Populate Gallery &lt;/b&gt;and the Web Part is added to the Team Site Gallery.&lt;/p&gt; &lt;div class="alert"&gt;&lt;table width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th align="left"&gt;&lt;img class="note" alt="Note" src="http://i.msdn.microsoft.com/ms415817.note%28en-us,office.12%29.gif" /&gt;Note: &lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &lt;p&gt;To create a .webpart file for your Web Part, you can select &lt;b&gt;Edit&lt;/b&gt; for the Web Part in the Web Part Gallery, and then click &lt;b&gt;Export&lt;/b&gt;. You are prompted to provide a location in which to put the .webpart file.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; &lt;/li&gt;&lt;/ol&gt;&lt;/div&gt; &lt;/div&gt; &lt;h4 class="subHeading"&gt;Step 6: Add your Web Part to a Page&lt;/h4&gt;&lt;div class="subSection"&gt; &lt;p&gt;In this step, you import the Web Part to a page in any SharePoint site. The following procedure explains the steps for adding the Web Part to a page. &lt;/p&gt; &lt;h3 class="subHeading"&gt;To add and test your Web Part&lt;/h3&gt;&lt;div class="subSection"&gt;&lt;ol&gt;&lt;li&gt; &lt;p&gt;Navigate to the Web Part page on your SharePoint site where you want to add the Web Part.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;In the Web Part page, click &lt;b&gt;Site Actions&lt;/b&gt;, and select &lt;b&gt;Edit Page&lt;/b&gt;.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;In the Web Part zone where you want to add the HelloWorldWebPart, click &lt;b&gt;Add a Web Part&lt;/b&gt;.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;At the bottom of the &lt;b&gt;Add Web Parts&lt;/b&gt; dialog box, click Advanced Web Part gallery and options.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;Open the Team Site Gallery and drag the HelloWorldWebPart onto the page. The Web Part displays the SharePoint look and feel.&lt;/p&gt; &lt;/li&gt;&lt;/ol&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/div&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128781602115848291-4290690583719284330?l=sharepoint-invention.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepoint-invention.blogspot.com/feeds/4290690583719284330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128781602115848291&amp;postID=4290690583719284330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/4290690583719284330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/4290690583719284330'/><link rel='alternate' type='text/html' href='http://sharepoint-invention.blogspot.com/2008/07/creating-basic-web-part.html' title='Creating a Basic Web Part'/><author><name>Sankar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128781602115848291.post-1082453405728448185</id><published>2008-07-03T03:59:00.000-07:00</published><updated>2008-07-03T04:08:11.760-07:00</updated><title type='text'>Presentation on SharePoint WebParts to Bellingham .NPresentation on SharePoint WebParts to Bellingham .NET Users Group ET Users Group</title><content type='html'>&lt;div&gt;Andrew Robinson, the president of the &lt;a href="http://www.bellinghamdotnet.org/"&gt;Bellingham .NET Users Group&lt;/a&gt;, invited me to give a talk to his group. I will be giving them a talk on "WebParts for SharePoint 2007" on Wednesday January 8, 2007 starting at 6:00 PM. Bellingham is the most visited city accross the border for British Columbians and I look forward to forging closer ties between .netBC and the Bellingham .NET Users Groups.&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;Here is the extract of my talk:&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;strong&gt;WebParts for SharePoint 2007&lt;/strong&gt;&lt;/div&gt; &lt;div&gt;WebParts provide the fundamental building blocks for creating custom applications for SharePoint. This session will show you how to efficiently and quickly use your ASP.NET 2.0 and C# skills to develop WebParts for deployment into SharePoint 2007. Most of the development, testing and debugging will be done in Visual Studio .NET 2007. We shall then deploy the WebPart as a feature into Windows SharePoint Services 3.0 (WSS 3.0). We will also look at WebPart communication and modifying WebPart verb menus. &lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;Wednesday January 9, 2008&lt;/div&gt; &lt;div&gt;The files that make up my presentation can be downloaded from &lt;a href="http://cisa.ca/blogs/medhat/AppDocs/SharePoint_2007_WebPart_Dev.zip"&gt;here&lt;/a&gt;.&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;Thursday January 10, 2008&lt;/div&gt; &lt;div&gt;I had an enjoyable time at Bellingham. There were 13 people in attendance. Pizza was great and I was glad that they serve water instead of the dreaded pop.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128781602115848291-1082453405728448185?l=sharepoint-invention.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepoint-invention.blogspot.com/feeds/1082453405728448185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128781602115848291&amp;postID=1082453405728448185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/1082453405728448185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/1082453405728448185'/><link rel='alternate' type='text/html' href='http://sharepoint-invention.blogspot.com/2008/07/presentation-on-sharepoint-webparts-to.html' title='Presentation on SharePoint WebParts to Bellingham .NPresentation on SharePoint WebParts to Bellingham .NET Users Group ET Users Group'/><author><name>Sankar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128781602115848291.post-7739415525392488882</id><published>2008-07-03T03:54:00.000-07:00</published><updated>2008-07-03T03:55:13.256-07:00</updated><title type='text'>FBA pointing to Active Directory</title><content type='html'>&lt;div class="ForumPostContentText"&gt;               &lt;p&gt;SharePoint and ExCM can use any Membership provider for operations like authentication, add users, reset passwords. The .NET framework provides two membership providers out-of-the-box (ActiveDirectoryMembershipProvider, SQLMembershipProvider). You can use the ActiveDirectoryMembership provider to connect to AD or AD LDS (ADAM). MOSS 2007 comes with an an additional provider named LdapMembershipProvider which can be used to connect to AD via LDAP or other LDAP sources. However, not every provider supports the same operations and the AD/LDAP providers can be more difficult to implement.&lt;/p&gt; &lt;p&gt;When selecting a provider you also have to think about Role and Profile providers. SQL supports all three provider types. AD supports only membership and the LDAP provider supports membership and roles. This is the reason why most customer choose to implement SQL membership, because it is fully functional and scales well. Please take a look at some of the links below for more information...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;General&lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;(Authentication Samples)&lt;br /&gt;&lt;a href="http://technet2.microsoft.com/windowsserver/WSS/en/library/91035419-980e-4230-b3ae-67253b94af4a1033.mspx?mfr=true"&gt;http://technet2.microsoft.com/windowsserver/WSS/en/library/91035419-980e-4230-b3ae-67253b94af4a1033.mspx?mfr=true&lt;/a&gt;&lt;/p&gt; &lt;p&gt;(Plan authentication settings)&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc288081.aspx"&gt;http://technet.microsoft.com/en-us/library/cc288081.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;(Forms based authentication in MOSS)&lt;br /&gt;&lt;a href="http://blogs.msdn.com/harsh/rss_tag_FBA.xml"&gt;http://blogs.msdn.com/harsh/rss_tag_FBA.xml&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;(How to use Membership in ASP.NET 2.0)&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms998347.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms998347.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;LdapMembershipProvider&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;(LDAP Membership Provider Class)&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.office.server.security.ldapmembershipprovider.aspx"&gt;http://msdn2.microsoft.com/en-us/library/microsoft.office.server.security.ldapmembershipprovider.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;(Configure forms-based authentication against an LDAP data store in Office Project Server 2007)&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc197721.aspx"&gt;http://technet.microsoft.com/en-us/library/cc197721.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;(Moss LDAP Membership Provider)&lt;br /&gt;&lt;a href="http://blog.hametbenoit.info/Lists/Categories/Category.aspx?Name=Security"&gt;http://blog.hametbenoit.info/Lists/Categories/Category.aspx?Name=Security&lt;/a&gt;&lt;/p&gt; &lt;p&gt;(Using LdapMembershipProvider in SharePoint, and get it to work!)&lt;br /&gt;&lt;a href="http://www.sharepointblogs.com/rhulsman/archive/2006/12/12/using-ldapmembershipprovider-in-sharepoint-and-get-it-to-work.aspx"&gt;http://www.sharepointblogs.com/rhulsman/archive/2006/12/12/using-ldapmembershipprovider-in-sharepoint-and-get-it-to-work.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;ActiveDirectoryMembershipProvider&lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;(Active Directory Membership Provider Class)&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.security.activedirectorymembershipprovider.aspx"&gt;http://msdn2.microsoft.com/en-us/library/system.web.security.activedirectorymembershipprovider.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;u&gt;&lt;strong&gt;Alternate Access Mappings&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/u&gt;(Plan alternate access mappings)&lt;br /&gt;&lt;a href="http://technet2.microsoft.com/windowsserver/WSS/en/library/c8ccffce-5162-46af-a3ef-1d7914e8efee1033.mspx?mfr=true"&gt;http://technet2.microsoft.com/windowsserver/WSS/en/library/c8ccffce-5162-46af-a3ef-1d7914e8efee1033.mspx?mfr=true&lt;/a&gt;&lt;/p&gt; &lt;p&gt;(Configure alternate access mapping)&lt;br /&gt;&lt;a href="http://technet2.microsoft.com/windowsserver/WSS/en/library/8642f748-f169-4799-8fe9-8140fbb23fbf1033.mspx?mfr=true"&gt;http://technet2.microsoft.com/windowsserver/WSS/en/library/8642f748-f169-4799-8fe9-8140fbb23fbf1033.mspx?mfr=true&lt;/a&gt;&lt;/p&gt;                             &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128781602115848291-7739415525392488882?l=sharepoint-invention.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepoint-invention.blogspot.com/feeds/7739415525392488882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128781602115848291&amp;postID=7739415525392488882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/7739415525392488882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/7739415525392488882'/><link rel='alternate' type='text/html' href='http://sharepoint-invention.blogspot.com/2008/07/fba-pointing-to-active-directory.html' title='FBA pointing to Active Directory'/><author><name>Sankar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128781602115848291.post-2508680104543716753</id><published>2008-07-02T06:08:00.000-07:00</published><updated>2008-07-02T06:10:02.165-07:00</updated><title type='text'>Office SharePoint Server 2007 - Forms Based Authentication (FBA) w/MySites Walk-through - Part 2</title><content type='html'>&lt;p&gt;As promised, here is part 2 of my series on hooking up Forms based authentication on a SharePoint 2007 site AND integrating your web application with MySites and the Personalization features of Office SharePoint Server 2007.&lt;/p&gt; &lt;p&gt;I am going to assume that you have read and gone through all of the steps in &lt;a href="http://www.devcow.com/blogs/jdattis/archive/2007/02/23/Office_SharePoint_Server_2007_Forms_Based_Authentication_FBA_Walkthrough_Part_1.aspx" target="_blank"&gt;part 1&lt;/a&gt; of the series.  The steps below ARE dependent on &lt;a href="http://www.devcow.com/blogs/jdattis/archive/2007/02/23/Office_SharePoint_Server_2007_Forms_Based_Authentication_FBA_Walkthrough_Part_1.aspx" target="_blank"&gt;part 1&lt;/a&gt; and I will be making some references to it.  If you have not gone through &lt;a href="http://www.devcow.com/blogs/jdattis/archive/2007/02/23/Office_SharePoint_Server_2007_Forms_Based_Authentication_FBA_Walkthrough_Part_1.aspx" target="_blank"&gt;part 1&lt;/a&gt;, I encourage you to read this entire post before trying to implement the solution.  There are quite a few caveats and very UNINTUITIVE steps.  Since none of this is documented (to my knowledge), I have to say that since it is undocumented, it may be unsupported as well.  What I can say for certain, that in my 2 or 3 support calls to Microsoft regarding this issue, I had given up on them helping me.  Essentially I was told on more than one occasion that "it's not supposed to work" or "it does not work".  Of course after those answers, I had to prove to myself that either it does work or support was right.  They do after all claim that this is "pluggable" authentication, and other than the obvious features, like Office integration, or SharePoint Designer integration, I expected all of the functionality to work.  The following is the fruit of my labor.  As a side note, this effort, although it may seem simple after you go thru the steps, took me about 5 weeks of nights and weekends trying to get the sequence of steps and the steps themselves defined.&lt;/p&gt; &lt;p&gt;One major disappointing caveat is MySite search.  Search works fine against the FBA site to which we have a "mirror" intranet version, like we do in our example, but unfortunately we do not have a Windows authentication version of each and every MySite.  I guess we could, technically, but really, that's not going to happen.  I have heard however, through a very reliable source that Microsoft is working VERY VERY hard on getting the SharePoint search crawler to be able to penetrate forms based authentication sites and just maybe, might have a solution in Q2.  I am optimistic about this and can't wait, then we really have a fully searchable FBA solution.&lt;/p&gt; &lt;p&gt;So here goes...&lt;/p&gt; &lt;h1&gt;Assumptions&lt;/h1&gt; &lt;p&gt;Like any good assumer, I am going to list all of my assumptions here.  If you think that anything is missing, please do let me know and I will update this list.&lt;/p&gt; &lt;ul&gt;&lt;li&gt;You have created and configured a Shared Services Provider (SSP) and can link to its setting page using either of the following two methods. &lt;ul&gt;&lt;li&gt;Click on the Share Services Provider's link in the left navigation in Central Administration.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Edit_Shared_Services_Provider21.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Edit_Shared_Services_Provider2_thumb1.png" border="0" height="240" width="198" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click on the &lt;strong&gt;Create or configure this farm's shared services&lt;/strong&gt; link in the &lt;strong&gt;Office SharePoint Server Shared Services&lt;/strong&gt; section of the &lt;strong&gt;Application Management&lt;/strong&gt; tab in Central Administration, then select &lt;strong&gt;Edit Properties&lt;/strong&gt; from the dropdown menu that appears when you hover over its name.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Link_To_Edit_Shared_Services_Provider2.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Link_To_Edit_Shared_Services_Provider_thumb2.png" border="0" height="84" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Edit_Shared_Services_Provider32.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Edit_Shared_Services_Provider3_thumb2.png" border="0" height="114" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;The &lt;strong&gt;SSP Administrative Site URL&lt;/strong&gt; and the &lt;strong&gt;MySite Location URL&lt;/strong&gt; are each on their own web applications.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Edit_Shared_Services_Provider2.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Edit_Shared_Services_Provider_thumb2.png" border="0" height="204" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is possible and sometimes desirable for some to locate their MySite site collections within the same Web Application of the site to which they are associated.  What I mean by this is that there are two very different ways in which to setup MySites and they are as follows.  Let's pretend for the sake of conversation, that our site is www.microsoft.com.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Method #1&lt;/strong&gt; - The site www.microsoft.com is its own Web Application.  In turn, www.microsoft.com/mysite is where the MySites site collection is located.  The main benefit to this design is that since we are using FBA as our authentication method, the same cookie will work for both sites and we will not have to log into our MySite independently of logging into the main site.  The main drawback is that MySites will now be created in the same content database(s) that the www.microsoft.com Web Application is using.  This may be an issue when it comes to scaling and capacity planning.  Chris Johnson has outlined the steps needed to produce this scenario &lt;a href="http://blogs.msdn.com/cjohnson/archive/2006/09/15/754902.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Method #2&lt;/strong&gt; - The site www.microsoft.com is its own Web Application.  In turn, my.microsoft.com is where your MySites site collection is located.  The main benefit to this is that MySites are stored in a separate Web Application and can be managed independently.  The main drawback is that since we are using FBA as out authentication method, we will have to log into our MySite separately, the cookie will not be shared.&lt;br /&gt;&lt;br /&gt;Microsoft's &lt;a href="http://technet2.microsoft.com/Office/en-us/library/97a22c4e-6fc0-4745-9a03-0bfa500a4ca51033.mspx?mfr=true" target="_blank"&gt;best practice&lt;/a&gt; dictates that you use Method #2, so that is what I have done in my walkthrough.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;As indicated above, for the purpose of this post, my SSP Administrative Site URL is http://ossdev:23456/ssp/admin.  &lt;/li&gt;&lt;li&gt;As indicated above, for the purpose of this post, my MySite Location URL is &lt;a href="http://ossdev:23457/"&gt;http://ossdev:23457&lt;/a&gt;.  &lt;/li&gt;&lt;li&gt;You will NOT access the URL in the previous bullet until instructed to do so.  This has the potential to create problems, so please resist the urge. &lt;/li&gt;&lt;li&gt;You will NOT click on the MySite link until instructed to do so.  This also has the potential to create problems, so please resist the urge.&lt;/li&gt;&lt;/ul&gt; &lt;h1&gt;Update the Shared Service Provider Administrative Site's web.config File&lt;/h1&gt; &lt;p&gt;The web.config file of the Shared Service Provider needs to be updated with the same information you placed into the web.config of your FBA web application.&lt;/p&gt; &lt;h2&gt;Determine File Path to web.config.&lt;/h2&gt; &lt;ol&gt;&lt;li&gt;Open &lt;strong&gt;Internet Information Services (IIS) Manager&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;Expand Web Sites and select the Shared Service Provider's website, in my case, &lt;strong&gt;SharePoint_SSP_Default1 - 23456&lt;/strong&gt;.  Yours will most likely be different so be sure you select the right site.  &lt;/li&gt;&lt;li&gt;Right click on the above website and select &lt;strong&gt;Properties&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;Select the &lt;strong&gt;Home Directory&lt;/strong&gt; tab.  &lt;/li&gt;&lt;li&gt;In the &lt;strong&gt;Local path&lt;/strong&gt; textbox take note of the entire string.  This is the folder on the file system that contains the web.config for the &lt;strong&gt;http://ossdev:23456/ssp/admin&lt;/strong&gt; web application.  We will be updating this file next.  &lt;/li&gt;&lt;li&gt;Open &lt;strong&gt;Windows Explorer&lt;/strong&gt; and browse to the folder noted in step 5.  &lt;/li&gt;&lt;li&gt;Make a &lt;strong&gt;backup&lt;/strong&gt; copy of the web.config file. &lt;/li&gt;&lt;/ol&gt;  &lt;h2&gt;Add Connection String&lt;/h2&gt; &lt;ol&gt;&lt;li&gt;Add the following connection string snippet immediately above the &lt;system.web&gt; tag.  Be sure to replace the bolded text with the appropriate values from your environment.&lt;br /&gt;&lt;br /&gt;&lt;connectionstrings&gt;&lt;br /&gt;&lt;add name=""&gt;AspNetDbFBADemoConnectionString" connectionString="Data Source=&lt;strong&gt;OSSDEV&lt;/strong&gt;;Initial Catalog=&lt;strong&gt;AspNetDb_FBADemo&lt;/strong&gt;;Integrated Security=True" /&gt;&lt;br /&gt;&lt;/add&gt;&lt;br /&gt;&lt;/connectionstrings&gt;&lt;/system.web&gt;&lt;/li&gt;&lt;/ol&gt; &lt;h2&gt;Add Providers&lt;/h2&gt; &lt;ol&gt;&lt;li&gt;Add the following membership provider and role manager elements immediately inside the &lt;system.web&gt; element.  Again, be sure to replace the bolded text with the appropriate values from your environment.&lt;br /&gt;&lt;br /&gt;&lt;!-- membership provider --&gt;&lt;br /&gt;&lt;membership defaultprovider=""&gt;FBADemoMember"&gt;&lt;br /&gt;&lt;providers&gt;&lt;br /&gt;  &lt;add connectionstringname=""&gt;AspNetDbFBADemoConnectionString"&gt;&lt;br /&gt;    enablePasswordRetrieval="false"&lt;br /&gt;    enablePasswordReset="true"&lt;br /&gt;    requiresQuestionAndAnswer="false"&lt;br /&gt;    applicationName="/"&lt;br /&gt;    requiresUniqueEmail="false"&lt;br /&gt;    passwordFormat="Hashed"&lt;br /&gt;    maxInvalidPasswordAttempts="5"&lt;br /&gt;    minRequiredPasswordLength="1"&lt;br /&gt;    minRequiredNonalphanumericCharacters="0"&lt;br /&gt;    passwordAttemptWindow="10"&lt;br /&gt;    passwordStrengthRegularExpression=""&lt;br /&gt;    name="&lt;strong&gt;FBADemoMember&lt;/strong&gt;"&lt;br /&gt;    type="System.Web.Security.SqlMembershipProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" /&gt;&lt;br /&gt;&lt;/add&gt;&lt;br /&gt;&lt;/providers&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- role provider --&gt;&lt;br /&gt;&lt;rolemanager enabled="true" defaultprovider=""&gt;FBADemoRole"&gt;&lt;br /&gt;&lt;providers&gt;&lt;br /&gt;  &lt;add connectionstringname=""&gt;AspNetDbFBADemoConnectionString"&gt;&lt;br /&gt;    applicationName="/"&lt;br /&gt;    name="&lt;strong&gt;FBADemoRole&lt;/strong&gt;"&lt;br /&gt;    type="System.Web.Security.SqlRoleProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" /&gt;&lt;br /&gt;&lt;/add&gt;&lt;br /&gt;&lt;/providers&gt;&lt;br /&gt;&lt;/rolemanager&gt;&lt;/membership&gt;&lt;/system.web&gt;&lt;/li&gt;&lt;li&gt;Save and close the web.config file.  &lt;/li&gt;&lt;li&gt;Perform an IISReset and verify that you can still access the SSP.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt; &lt;h1&gt;Update the MySite Host Web Application's web.config File.&lt;/h1&gt; &lt;p&gt;The web.config file of the MySite Host Web Application needs to be updated with the same information you placed into the web.config of your FBA web application.&lt;/p&gt; &lt;h2&gt;Determine File Path to web.config.&lt;/h2&gt; &lt;ol&gt;&lt;li&gt;Open &lt;strong&gt;Internet Information Services (IIS) Manager&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;Expand Web Sites and select the MySite Host website, in my case, &lt;strong&gt;SharePoint_MySite_Default1 - 23457&lt;/strong&gt;.  Yours will most likely be different so be sure you select the right site.  &lt;/li&gt;&lt;li&gt;Right click on the above website and select &lt;strong&gt;Properties&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;Select the &lt;strong&gt;Home Directory&lt;/strong&gt; tab.  &lt;/li&gt;&lt;li&gt;In the &lt;strong&gt;Local path&lt;/strong&gt; textbox take note of the entire string.  This is the folder on the file system that contains the web.config for the &lt;strong&gt;http://ossdev:23457&lt;/strong&gt; web application.  We will be updating this file next.  &lt;/li&gt;&lt;li&gt;Open &lt;strong&gt;Windows Explorer&lt;/strong&gt; and browse to the folder noted in step 5.  &lt;/li&gt;&lt;li&gt;Make a &lt;strong&gt;backup&lt;/strong&gt; copy of the web.config file. &lt;/li&gt;&lt;/ol&gt;  &lt;h2&gt;Add Connection String&lt;/h2&gt; &lt;ol&gt;&lt;li&gt;Add the following connection string snippet immediately above the &lt;system.web&gt; tag.  Be sure to replace the bolded text with the appropriate values from your environment.&lt;br /&gt;&lt;br /&gt;&lt;connectionstrings&gt;&lt;br /&gt;&lt;add name=""&gt;AspNetDbFBADemoConnectionString" connectionString="Data Source=&lt;strong&gt;OSSDEV&lt;/strong&gt;;Initial Catalog=&lt;strong&gt;AspNetDb_FBADemo&lt;/strong&gt;;Integrated Security=True" /&gt;&lt;br /&gt;&lt;/add&gt;&lt;br /&gt;&lt;/connectionstrings&gt;&lt;/system.web&gt;&lt;/li&gt;&lt;/ol&gt; &lt;h2&gt;Add Providers&lt;/h2&gt; &lt;ol&gt;&lt;li&gt;Add the following membership provider and role manager elements immediately inside the &lt;system.web&gt; element.  Again, be sure to replace the bolded text with the appropriate values from your environment.&lt;br /&gt;&lt;br /&gt;&lt;!-- membership provider --&gt;&lt;br /&gt;&lt;membership defaultprovider=""&gt;FBADemoMember"&gt;&lt;br /&gt;&lt;providers&gt;&lt;br /&gt;  &lt;add connectionstringname=""&gt;AspNetDbFBADemoConnectionString"&gt;&lt;br /&gt;    enablePasswordRetrieval="false"&lt;br /&gt;    enablePasswordReset="true"&lt;br /&gt;    requiresQuestionAndAnswer="false"&lt;br /&gt;    applicationName="/"&lt;br /&gt;    requiresUniqueEmail="false"&lt;br /&gt;    passwordFormat="Hashed"&lt;br /&gt;    maxInvalidPasswordAttempts="5"&lt;br /&gt;    minRequiredPasswordLength="1"&lt;br /&gt;    minRequiredNonalphanumericCharacters="0"&lt;br /&gt;    passwordAttemptWindow="10"&lt;br /&gt;    passwordStrengthRegularExpression=""&lt;br /&gt;    name="&lt;strong&gt;FBADemoMember&lt;/strong&gt;"&lt;br /&gt;    type="System.Web.Security.SqlMembershipProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" /&gt;&lt;br /&gt;&lt;/add&gt;&lt;br /&gt;&lt;/providers&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- role provider --&gt;&lt;br /&gt;&lt;rolemanager enabled="true" defaultprovider=""&gt;FBADemoRole"&gt;&lt;br /&gt;&lt;providers&gt;&lt;br /&gt;  &lt;add connectionstringname=""&gt;AspNetDbFBADemoConnectionString"&gt;&lt;br /&gt;    applicationName="/"&lt;br /&gt;    name="&lt;strong&gt;FBADemoRole&lt;/strong&gt;"&lt;br /&gt;    type="System.Web.Security.SqlRoleProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" /&gt;&lt;br /&gt;&lt;/add&gt;&lt;br /&gt;&lt;/providers&gt;&lt;br /&gt;&lt;/rolemanager&gt;&lt;/membership&gt;&lt;/system.web&gt;&lt;/li&gt;&lt;li&gt;Save and close the web.config file.  &lt;/li&gt;&lt;li&gt;Perform an IISReset and close all your browser windows, but DO NOT try and access this URL yet.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt; &lt;h1&gt;Assign FBA Admin User Personalization services permissions.&lt;/h1&gt; &lt;p&gt;Remember in &lt;a href="http://www.devcow.com/blogs/jdattis/archive/2007/02/23/Office_SharePoint_Server_2007_Forms_Based_Authentication_FBA_Walkthrough_Part_1.aspx" target="_blank"&gt;part 1&lt;/a&gt;, we created a handful of FBA users.  One of those users (spadmin) was created to be used as an administrator for our FBA site.  We are going to re-use that user here to manage the SSP once we "flip" it to Forms Authentication.  Yes, that's right, we are going to switch the authentication method of our SSP Administration site to Forms!  How else did you think it would wok with FBA users?  Ideally, you should probably go and create another user for this, maybe sspadmin or something similar.&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Browser to your SSP Administration Site.  &lt;/li&gt;&lt;li&gt;Click on &lt;strong&gt;Personalization services permissions&lt;/strong&gt; in the &lt;strong&gt;User Profile and My Sites&lt;/strong&gt; section.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Personalization_Services_Permissions1.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Personalization_Services_Permissions_thumb1.png" border="0" height="240" width="213" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click on the &lt;strong&gt;Add Users/Groups&lt;/strong&gt; link.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Add_Users_Groups1.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Add_Users_Groups_thumb1.png" border="0" height="118" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Type &lt;strong&gt;spadmin&lt;/strong&gt; into the &lt;strong&gt;Users/Groups&lt;/strong&gt; textbox and click the &lt;strong&gt;Check Names&lt;/strong&gt; button &lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/checknames2.gif" height="16" width="16" /&gt; , watch SharePoint resolve the user, then check all of the permissions and click &lt;strong&gt;Save&lt;/strong&gt;.  This will ensure that when we make the switch to Forms Authentication on the SSP site, that our FBA admin user will actually be able to perform the operations listed here.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/SSP_Assign_Permissions1.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/SSP_Assign_Permissions_thumb1.png" border="0" height="103" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Perform an IISReset and close all your browser windows.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt; &lt;/p&gt; &lt;h1&gt;Switch Authentication Providers for SSP and MySites&lt;/h1&gt; &lt;ol&gt;&lt;li&gt;Click on the &lt;strong&gt;Authentication providers&lt;/strong&gt; link in the &lt;strong&gt;Application security&lt;/strong&gt; section on the Application Management tab in Central Administration.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Authentication_Providers1.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Authentication_Providers_thumb1.png" border="0" height="115" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Verify that the &lt;strong&gt;SSP Web Application&lt;/strong&gt; is selected in the &lt;strong&gt;Web Application&lt;/strong&gt; dropdown in the top right hand corner of the page.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Verify_SSP1.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Verify_SSP_thumb1.png" border="0" height="57" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click on &lt;strong&gt;Default&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/SSP_Click_Default1.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/SSP_Click_Default_thumb1.png" border="0" height="39" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Select &lt;strong&gt;Forms&lt;/strong&gt; as the &lt;strong&gt;Authentication Type&lt;/strong&gt;, and enter the appropriate values for the &lt;strong&gt;Membership provider name&lt;/strong&gt; and the &lt;strong&gt;Role manager name&lt;/strong&gt; as they exist in this web application's web.config, then click &lt;strong&gt;OK&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/SSP_Auth_Settings1.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/SSP_Auth_Settings_thumb1.png" border="0" height="240" width="210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Perform steps 1 to 4 again for the &lt;strong&gt;MySite Web Application&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt; &lt;h1&gt;Update Site Collection Administrator for SSP and MySites&lt;/h1&gt; &lt;p&gt;We now need to update the Site Collection Administrators of the SSP and MySite host so we can go make some more changes.&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Click on the Site collection administrators link in the SharePoint Site Management section of the Application Management tab in the Central Administration.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Update_Site_Collection_Administrator2.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Update_Site_Collection_Administrator_thumb2.png" border="0" height="164" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Switch the &lt;strong&gt;Site Collection&lt;/strong&gt; dropdown to the SSP admin Site Collection.  Remember, you may have to switch the Web Application to get the correct list of Site Collections (this is done in the popup).  I know of some people who are not too fond of this user interface, myself included).  Notice that since we switched the Authentication Type of our SSP to Forms, we will see a squiggly under the Windows account that was previously the Site Collection Administrator.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Update_Site_Collection_Administrator22.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Update_Site_Collection_Administrator2_thumb2.png" border="0" height="193" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Delete the squigglied name (is that a word?) and replace it with &lt;strong&gt;spadmin&lt;/strong&gt;, the FBA admin user we discussed earlier.  Click the &lt;strong&gt;Check Names&lt;/strong&gt; button &lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/checknames5.gif" height="16" width="16" /&gt;  and watch SharePoint resolve the FBA admin user, then click &lt;strong&gt;OK&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Update_Site_Collection_Administrator31.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Update_Site_Collection_Administrator3_thumb1.png" border="0" height="194" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Repeat steps 1 to 3 for the MySite Host Site Collection.&lt;/li&gt;&lt;/ol&gt; &lt;h1&gt;Assign My Site Host Permissions to FBA Users&lt;/h1&gt; &lt;p&gt;The following steps were the most unintuitive steps ever, in my opinion, and if anyone can tell me why it is required for FBA/MySite integration, but not for Windows/MySite integration I would love to know.  That said, here are the steps.&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Browse to your SSP Administration site.  &lt;/li&gt;&lt;li&gt;You will be prompted with the standard out of the box FBA login form.  Log in as &lt;strong&gt;spadmin&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;Click on the &lt;strong&gt;My Site settings&lt;/strong&gt; link in the &lt;strong&gt;User Profiles and My Sites&lt;/strong&gt; section on the SSP Home page.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/My_Site_Settings1.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/My_Site_Settings_thumb1.png" border="0" height="95" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click on the My Site Host Permissions link in the loft navigation.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/My_Site_Host_Permission1.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/My_Site_Host_Permission_thumb1.png" border="0" height="240" width="138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You will be prompted with the standard out of the box FBA login form.  Log in as &lt;strong&gt;spadmin&lt;/strong&gt;.  You will be directed to the &lt;strong&gt;People and Groups&lt;/strong&gt; page.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/My_Site_Host_People_And_Groups2.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/My_Site_Host_People_And_Groups_thumb2.png" border="0" height="87" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click on the Site Permissions link in the left navigation.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/My_Site_Host_Site_Permissions_Link2.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/My_Site_Host_Site_Permissions_Link_thumb2.png" border="0" height="117" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click on &lt;strong&gt;Add Users&lt;/strong&gt; under the &lt;strong&gt;New&lt;/strong&gt; menu item.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Add_Users_Under_New2.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Add_Users_Under_New_thumb2.png" border="0" height="80" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add the 3 roles we created in &lt;a href="http://www.devcow.com/blogs/jdattis/archive/2007/02/23/Office_SharePoint_Server_2007_Forms_Based_Authentication_FBA_Walkthrough_Part_1.aspx" target="_blank"&gt;part 1&lt;/a&gt;, &lt;strong&gt;Administrator&lt;/strong&gt;, &lt;strong&gt;Manager&lt;/strong&gt; and &lt;strong&gt;Employee&lt;/strong&gt;.  Ideally we would have created a role that holds all of the FBA users (maybe call it Everyone).  Had we done that in &lt;a href="http://www.devcow.com/blogs/jdattis/archive/2007/02/23/Office_SharePoint_Server_2007_Forms_Based_Authentication_FBA_Walkthrough_Part_1.aspx" target="_blank"&gt;part 1&lt;/a&gt; (we did not and I apologize), we would only have had one role to add here and so long as we always assigned new users to the Everyone role we would never have to come to this page again.  As it stands now, if we were to create another user and place them in a &lt;strong&gt;new&lt;/strong&gt; role, they would not be able to create a MySite.  I think you get my drift here.  Give them &lt;strong&gt;Read&lt;/strong&gt; permission directly and click &lt;strong&gt;OK&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Actually, doing this doesn't actually give users permission to create a MySite, but permission to use the MySite Host site should they already have the permission to create a MySite.  The next section will grant users permission to create MySites.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Add_Users1.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Add_Users_thumb1.png" border="0" height="118" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Close all your browser windows.&lt;/li&gt;&lt;/ol&gt; &lt;h1&gt;Grant Personalization Services Permissions&lt;/h1&gt; &lt;p&gt;The next set of steps, as mentioned above is to grant our FBA users the appropriate permission to allow them to create MySites and use the personalization features of Office SharePoint Server 2007.&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Browse to your SSP Administration site.  &lt;/li&gt;&lt;li&gt;You will be prompted with the standard out of the box FBA login form.  Log in as &lt;strong&gt;spadmin&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;Click on the &lt;strong&gt;Personalization services permissions&lt;/strong&gt; link in the &lt;strong&gt;User Profiles and My Sites&lt;/strong&gt; section of the SSP Home page.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Personalization_Services_Permissions4.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Personalization_Services_Permissions_thumb4.png" border="0" height="240" width="213" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click on the &lt;strong&gt;Add Users/Groups&lt;/strong&gt; link.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Add_Users_Groups5.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Add_Users_Groups_thumb5.png" border="0" height="118" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Type &lt;strong&gt;Administrator;Manager;Employee&lt;/strong&gt; into the &lt;strong&gt;Users/Groups&lt;/strong&gt; textbox and click the &lt;strong&gt;Check Names&lt;/strong&gt; button &lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/checknames2.gif" height="16" width="16" /&gt; , watch SharePoint resolve the roles, check only the &lt;strong&gt;Create personal site&lt;/strong&gt; and &lt;strong&gt;Use personal features&lt;/strong&gt; permission, and click &lt;strong&gt;Save&lt;/strong&gt;.  This grants these roles the permission to create a MySite and to use the personalization features.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Add_Users22.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Add_Users2_thumb2.png" border="0" height="102" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Your screen should resemble the following screen shot.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Manage_Permissions_After1.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Manage_Permissions_After_thumb1.png" border="0" height="84" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Perform an IISReset and close all your browser windows.&lt;/li&gt;&lt;/ol&gt; &lt;h1&gt;Assign Roles to Default Reader Site Group&lt;/h1&gt; &lt;p&gt;Ideally, we don't want users to have to assign other users Read permission just to view the public areas of their MySites.  When using Windows authentication, the default is to allow all authenticated users to read other users MySites.  Such a group does not exist when using FBA.  Had we created some sort of Everyone role, as suggested earlier in this post, in &lt;a href="http://www.devcow.com/blogs/jdattis/archive/2007/02/23/Office_SharePoint_Server_2007_Forms_Based_Authentication_FBA_Walkthrough_Part_1.aspx" target="_blank"&gt;part 1&lt;/a&gt; of the series, we could have leveraged that role, however, since we did not, we will have the same scenario as before manifest itself should we decide to add a new role in the future, after making the following changes.  So lesson learned #1 would be to create an &lt;strong&gt;Everyone&lt;/strong&gt; role in your role manager and place all of your users in it.&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Browse to your SSP Administration site.  &lt;/li&gt;&lt;li&gt;You will be prompted with the standard out of the box FBA login form.  Log in as &lt;strong&gt;spadmin&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;Click on the &lt;strong&gt;My Site Settings&lt;/strong&gt; link in the &lt;strong&gt;User Profiles and My Sites&lt;/strong&gt; section on the SSP Home page.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/My_Site_Settings3.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/My_Site_Settings_thumb3.png" border="0" height="95" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Scroll down to the &lt;strong&gt;Default Reader Site Group&lt;/strong&gt; section and type or append &lt;strong&gt;Administrator; Manager; Employee&lt;/strong&gt; into the textbox.  You can leave NT AUTHORITY\authenticated users in the textbox or remove it, it does not matter at this point, then click &lt;strong&gt;OK&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Default_Reader_Site_Group1.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Default_Reader_Site_Group_thumb1.png" border="0" height="33" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Close all your browser windows.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt; &lt;/p&gt; &lt;h1&gt;Test You Solution!&lt;/h1&gt; &lt;p&gt;Remember, I made allot of assumptions at the beginning of this post.  One of those assumptions was that you had completed part 1 of this series.  Under the assumption that you have completed &lt;a href="http://www.devcow.com/blogs/jdattis/archive/2007/02/23/Office_SharePoint_Server_2007_Forms_Based_Authentication_FBA_Walkthrough_Part_1.aspx" target="_blank"&gt;part 1&lt;/a&gt;, test your solution using these steps.&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Browse to http://fbaextranet.attis.org and first login as &lt;strong&gt;spadmin&lt;/strong&gt;.  You should see a My Site link in the top right hand corner of the page.  DO NOT CLICK ON IT YET.  &lt;/li&gt;&lt;li&gt;Verify that the Employee role is in the pre-created Visitor SharePoint group and that the Manager role is in the pre-created Member SharePoint group (I have to assume you know how to do this!). &lt;/li&gt;&lt;li&gt;As I mentioned earlier, since we set our My Site Host site collection up on a separate Web Application than our website, we will need to log to our My Site independently of this site.  You may now click on the My Site link! &lt;/li&gt;&lt;li&gt;Login as &lt;strong&gt;spadmin&lt;/strong&gt; and watch the &lt;strong&gt;MAGIC!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Create_MySite2.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/Create_MySite_thumb2.png" border="0" height="40" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Check it out!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/spadmin_MySite2.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/spadmin_MySite_thumb2.png" border="0" height="116" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Close your browser, open a new one and browse to http://fbaextranet.attis.org again.  &lt;/li&gt;&lt;li&gt;Login as &lt;strong&gt;Employee1&lt;/strong&gt;.  You should see a My Site link in the top right hand corner of the page.  Remember, this user was created in part 1.  Click on the My Site link, logon as &lt;strong&gt;Employee1&lt;/strong&gt; and again, watch the &lt;strong&gt;MAGIC!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/employee1_MySite1.png" target="_new"&gt;&lt;img src="http://www.devcow.com/blogs/jdattis/images/OfficeSharePointServer2007FormsBasedAuth_1177D/employee1_MySite_thumb1.png" border="0" height="114" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt; &lt;h1&gt;Caveats&lt;/h1&gt; &lt;p&gt;Of course, this solution has a couple of caveats.  The biggest issue I have come across is Search.  At present time, the crawler simply cannot deal with Forms Authentication yet.  This is not a problem for the main website as the crawler simply enters through another zone.  The following &lt;a href="http://technet2.microsoft.com/Office/en-us/library/40117fda-70a0-4e3d-8cd3-0def768da16c1033.mspx?mfr=true" target="_blank"&gt;TechNet article&lt;/a&gt; explains how the crawler interacts with multiple zones and authentication modes in great detail.  I encourage you to read it.  With that said, MySite Search does not work OOB (I say OOB because I am sure someone will come up with a clever solution at some point) because all of the MySites lie behind Forms Authentication.&lt;/p&gt; &lt;p&gt;Now go forth and integrate your Forms Authentication Solutions with MySites and your SSP's.  it will be interesting to see if there is going to be a supported or documented solution put forth by Microsoft.  I guess we will just have to wait and see!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128781602115848291-2508680104543716753?l=sharepoint-invention.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepoint-invention.blogspot.com/feeds/2508680104543716753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128781602115848291&amp;postID=2508680104543716753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/2508680104543716753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/2508680104543716753'/><link rel='alternate' type='text/html' href='http://sharepoint-invention.blogspot.com/2008/07/office-sharepoint-server-2007-forms_02.html' title='Office SharePoint Server 2007 - Forms Based Authentication (FBA) w/MySites Walk-through - Part 2'/><author><name>Sankar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128781602115848291.post-7559838005981976194</id><published>2008-07-02T06:07:00.000-07:00</published><updated>2008-07-02T06:08:42.735-07:00</updated><title type='text'>Office SharePoint Server 2007 - Forms Based Authentication (FBA) Walk-through - Part 1</title><content type='html'>&lt;p&gt;A while back a client asked me to set up Forms Based Authentication (FBA) for them.  I said sure (of course) and started to research the steps required to accomplish this.  In my oodles and oodles of research I had found many useful but somewhat partial posts.  What I mean by this is that not one of the posts I have encountered in my research had ALL of the steps required to get this to work, I was left to aggregate steps from different areas.  Most posts assumed you were running as an administrator, maybe even that your SharePoint application pools were running as system accounts with unlimited privileges (on both the operating system and in the database), no "real world" scenarios if you will.  Also, all of the posts never made mention of Office SharePoint Server, they all centered around Windows SharePoint Services (more on that later).  My aim here is to provide a series of posts that include the following:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Each and every step required to setup FBA using the built in Asp.Net Membership and Role providers (Part 1).  I will demonstrate one way to accomplish this.  There are others and they will be mentioned, but not looked at in any detail. &lt;/li&gt;&lt;li&gt;How to enable MySites and the Personalization features included with Office Server and have them actually work with a site using (FBA). &lt;/li&gt;&lt;li&gt;A natural extension of 1 and 2 that will demonstrate how to hook into the ADAM membership provider, and get it functioning with MySites and the Personalization features as well.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Initially, after setting FBA up successfully (Part 1), my client then asked me to enable MySites.  That's when all hell broke loose.  Not only did this not work right away, but after 3 unsuccessful calls to Microsoft support (they could not get it to work and kept parading me in circles, and still are for that matter, maybe they will read this and call me back), and quotes from Microsoft employees saying "it's not supposed to work" or "it does not work", I am pleased to say that it does in fact work and I will show you how (Part 2).&lt;/p&gt; &lt;p&gt;Before we begin I have to say that since I have been told that "it's not supposed to work" or "it does not work", and since I have not found any reliable documentation indicating how to do this, I must add a disclaimer that if it does not work for you, something is different between our environments, or to please call Microsoft &lt;shrug&gt;.  I will do my best to be as detailed as possible about my environment and all of the steps involved.  If anything is unclear, please leave a comment and I will do my best to make it a little clearer.  One last thing I would like to mention is that I have successfully implemented MySite functionality as well as the other Personalization features of Office SharePoint Server 2007 with Forms Authentication using both the built in Asp.Net Membership and Role providers as well as with an ADAM Membership provider.  I have recently received an ADAM Role provider from &lt;a title="ADAM (Active Directory In Application Mode) Custom Role Provider" href="http://www.sharepointsecurity.com/content-183.html" target="_blank"&gt;Adam Buenz&lt;/a&gt; and plan on testing that soon but fully expect it to integrate seamlessly (with his help if needed, I hope).&lt;/shrug&gt;&lt;/p&gt; &lt;p&gt;So here we go, this is going to be a long one so bear with me.  In the end of the series you will have MySite and the Personalization features working seamlessly with Forms Authentication in your Office SharePoint Server 2007 environment!  Good Luck!&lt;/p&gt; &lt;p&gt;One assumption I have made in this process is that you have already created a Shared Services Provider and started the Office SharePoint Server Search service.  Also, I am logged on to the development machine as a domain administrator.  The term browser in this series means Internet Explorer 7.  All of the below steps are to be performed on the Guest machine.&lt;/p&gt; &lt;h1&gt;Environment&lt;/h1&gt; &lt;p&gt;My environment is as follows.  Keep in mind that any variation from this could produce different results.  Again, if I forget to mention something obvious, please let me know and I will update the list.&lt;/p&gt; &lt;h2&gt;Host Machine&lt;/h2&gt; &lt;ol&gt;&lt;li&gt;Intel(R) Pentium(R) M processor 1.86GHz 1.86GHz  &lt;/li&gt;&lt;li&gt;2.00 GB of RAM  &lt;/li&gt;&lt;li&gt;Microsoft Windows XP Professional, Version 2002, Service Pack 2  &lt;/li&gt;&lt;li&gt;VMWare Workstation, Version 5.5.3 build-34685 &lt;/li&gt;&lt;/ol&gt; &lt;p&gt; &lt;/p&gt; &lt;h2&gt;Guest Machine&lt;/h2&gt; &lt;ol&gt;&lt;li&gt;Intel(R) Pentium(R) M processor 1.86GHz 1.86GHz  &lt;/li&gt;&lt;li&gt;1.00 GB of RAM  &lt;/li&gt;&lt;li&gt;Microsoft Windows Server 2003, Standard Edition, Service Pack 1  &lt;/li&gt;&lt;li&gt;Active Directory (Domain Controller)  &lt;/li&gt;&lt;li&gt;Microsoft SQL Server 2005, Service Pack 1  &lt;/li&gt;&lt;li&gt;Microsoft Visual Studio 2005  &lt;/li&gt;&lt;li&gt;Microsoft Office Server 2007, Version 12.0.0.4518&lt;/li&gt;&lt;/ol&gt; &lt;p&gt; &lt;/p&gt; &lt;h1&gt;FBA User &amp;amp; Role Store&lt;/h1&gt; &lt;h2&gt;Database Creation&lt;/h2&gt; &lt;p&gt;We need a place to put our users.  The Asp.Net 2.0 Membership and Role providers include a database.  The steps to install the database are as follows:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Open up a command prompt by clicking &lt;strong&gt;Start...Run&lt;/strong&gt;, then typing &lt;strong&gt;cmd&lt;/strong&gt; and pressing &lt;strong&gt;Enter&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;Switch to the Asp.Net 2.0 Framework directory by typing&lt;br /&gt; &lt;strong&gt;cd c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727&lt;/strong&gt;&lt;br /&gt;and pressing Enter.  &lt;/li&gt;&lt;li&gt;Type &lt;strong&gt;aspnet_regsql&lt;/strong&gt; to launch the ASP.NET SQL Server Setup Wizard.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/SharePoint2007FormsAuthenticationandMySi_10652/ASP.NETSQLServerSetupWizard10.png" target="_new"&gt;&lt;img style="border-width: 0px;" src="http://www.devcow.com/blogs/jdattis/images/SharePoint2007FormsAuthenticationandMySi_10652/ASP.NETSQLServerSetupWizard_thumb10.png" alt="" border="0" height="186" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click &lt;strong&gt;Next&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;Choose &lt;strong&gt;Configure SQL Server for application services&lt;/strong&gt; (the default choice) on the &lt;strong&gt;Select a Setup Option&lt;/strong&gt; screen and click &lt;strong&gt;Next&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/SharePoint2007FormsAuthenticationandMySi_10652/SelectaSetupOption1.png" target="_new"&gt;&lt;img style="border-width: 0px;" src="http://www.devcow.com/blogs/jdattis/images/SharePoint2007FormsAuthenticationandMySi_10652/SelectaSetupOption_thumb1.png" alt="" border="0" height="186" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Specify the SQL Server name (your machine name), database name to create (I used &lt;strong&gt;AspNetDb_FBADemo&lt;/strong&gt;), and the credentials to use for this process (database creation).  I generally prefix my Membership and Role provider databases with &lt;strong&gt;AspNetDb_&lt;/strong&gt; such that they appear together in Microsoft SQL Server Management Studio and are easily identifiable should I need to access them, such as to update Security (Step 10).  Click &lt;strong&gt;Next&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/SharePoint2007FormsAuthenticationandMySi_10652/SelecttheServerandDatabase1.png" target="_new"&gt;&lt;img style="border-width: 0px;" src="http://www.devcow.com/blogs/jdattis/images/SharePoint2007FormsAuthenticationandMySi_10652/SelecttheServerandDatabase_thumb1.png" alt="" border="0" height="186" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Confirm your settings on the &lt;strong&gt;Confirm Your Settings&lt;/strong&gt; screen and click &lt;strong&gt;Next&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/SharePoint2007FormsAuthenticationandMySi_10652/ConfirmYourSettings1.png" target="_new"&gt;&lt;img style="border-width: 0px;" src="http://www.devcow.com/blogs/jdattis/images/SharePoint2007FormsAuthenticationandMySi_10652/ConfirmYourSettings_thumb1.png" alt="" border="0" height="186" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The process takes a few seconds and then &lt;strong&gt;The database has been created or modified&lt;/strong&gt; screen appears.  Click &lt;strong&gt;Finish&lt;/strong&gt; to close the wizard.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/SharePoint2007FormsAuthenticationandMySi_10652/Thedatabasehasbeencreatedormodified1.png" target="_new"&gt;&lt;img style="border-width: 0px;" src="http://www.devcow.com/blogs/jdattis/images/SharePoint2007FormsAuthenticationandMySi_10652/Thedatabasehasbeencreatedormodified_.png" alt="" border="0" height="186" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open Microsoft SQL Server Management Studio and confirm that the database was successfully created.  &lt;/li&gt;&lt;li&gt;One step that I have not seen mentioned ANYWHERE is to make sure that the account that is running the application pool that will be used by the sites you create below have access to the database we just created.  This step is critical as SharePoint will NOT be able to find your users and roles if it does not have the permissions to look for them.  This step is what I like to refer to as the &lt;strong&gt;MAGIC&lt;/strong&gt; step that no one tells you about, so I am ruining the surprise and telling you the secret.  You will thank me later.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt; &lt;/p&gt; &lt;h2&gt;User and Role Creation&lt;/h2&gt; &lt;p&gt;Microsoft has given us a great database schema to use as a membership and role provider data store but has not really supplied a "good" tool to manage its contents.  When you think about it, this actually makes sense.  The providers are intended to be used by other applications so maybe one of the assumptions made was that the tools to maintain the users and roles will be provided by the applications that consume them.&lt;/p&gt; &lt;p&gt;Thankfully, the Microsoft Visual Studio 2005 team had the foresight to create a somewhat rudimentary web application to help us manage the membership and role provider data store.  The caveat is that the tool must be launched from Microsoft Visual Studio 2005.  You can immediately see that this is not a very good option for those that will be managing the users and roles, i.e.: real users of your application.&lt;/p&gt; &lt;p&gt;I will now walk you thru a set of steps to create a few users and roles that we will be using later.&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Create a folder on your desktop called &lt;strong&gt;FBA Management Site&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;Open &lt;strong&gt;Microsoft Visual Studio 2005&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;Select &lt;strong&gt;File...Open...Web Site&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;In the &lt;strong&gt;Open Web Site&lt;/strong&gt; dialog, choose the &lt;strong&gt;File System&lt;/strong&gt; icon on the left side of the dialog, then browse to and select the &lt;strong&gt;FBA Management Site&lt;/strong&gt; folder created in step 1.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devcow.com/blogs/jdattis/images/SharePoint2007FormsAuthenticationandMySi_10652/OpenWebSite1.png" target="_new"&gt;&lt;img style="border-width: 0px;" src="http://www.devcow.com/blogs/jdattis/images/SharePoint2007FormsAuthenticationandMySi_10652/OpenWebSite_thumb1.png" alt="" border="0" height="189" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click &lt;strong&gt;Open&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;In the &lt;strong&gt;Solution Explorer&lt;/strong&gt;, right-click on the web site and select &lt;strong&gt;Add New Item&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;Select &lt;strong&gt;Web Configuration File&lt;/strong&gt; and click &lt;strong&gt;Add&lt;/strong&gt;.  There is no need to rename the file, web.config is fine.  &lt;/li&gt;&lt;li&gt;Replace the empty &lt;strong&gt;&lt;connectionstrings&gt;&lt;/connectionstrings&gt;&lt;/strong&gt; element with the following snippet.  Be sure to replace both &lt;strong&gt;&lt;server&gt;&lt;/server&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128781602115848291-7559838005981976194?l=sharepoint-invention.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepoint-invention.blogspot.com/feeds/7559838005981976194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128781602115848291&amp;postID=7559838005981976194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/7559838005981976194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/7559838005981976194'/><link rel='alternate' type='text/html' href='http://sharepoint-invention.blogspot.com/2008/07/office-sharepoint-server-2007-forms.html' title='Office SharePoint Server 2007 - Forms Based Authentication (FBA) Walk-through - Part 1'/><author><name>Sankar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128781602115848291.post-6691136648573253601</id><published>2008-07-02T05:05:00.000-07:00</published><updated>2008-07-02T05:06:59.242-07:00</updated><title type='text'>Using the Active Directory Membership Provider with Forms Authentication in MOSS 2007</title><content type='html'>Because MOSS 2007 supports the ASP.NET membership provider model there are new worlds in which SharePoint can tread that it has not be able to in the past. Specifically, MOSS 2007 represents a fantastic platform for the presentation of a public internet web presence. In fact, there is a site template that allows for the establishment of a public web site. In order to successfully present a public site, there are several considerations that had to be added to MOSS to enable this. Foremost is the degree of integration with ASP.NET 2.0 features. Specifically, for a internet web site that presents secure content, MOSS will support Forms authentication with ASP.NET 2.0 Membership and Role providers. Whenever there is an established Active Directory in the DMZ (as is becoming really populare for auditability, group and user membership and provisioning and management, etc.) MOSS can use Active Directory as its ASP.NET Membership provider store thorugh the ActiveDirectoryMembershipProvider found in ASP.NET 2.0.&lt;br /&gt;&lt;br /&gt;Challenge: Allowing public internet users to connect to a public web site hosted in MOSS 2007 using Forms authentication and Active Directory as the information store&lt;br /&gt;&lt;br /&gt;Solution: Configure MOSS 2007 to support forms authentication with the Active Directory Membership provider&lt;br /&gt;&lt;br /&gt;Result: Users can now log into a public web site without NTLM prompts and using a custom login page and have their security credentials established using Active Directory&lt;br /&gt;&lt;br /&gt;TODO: Determine if the full MOSS user profile is available. It seems that some of it is, but further testing and customization testing is required.&lt;br /&gt;&lt;br /&gt;Implementation Details:&lt;br /&gt;&lt;br /&gt;    * Modify the web.config of the site collection&lt;br /&gt;          o For the specified site collection which should use Forms/Active Directory authentication (assuming you have already created a Web Application and an Site Collection), browse to and open the web.config (This file can be found by interrogating the IIS web site for the web application's virtual directory home directory)&lt;br /&gt;          o Insert the following sesctions into the web.config&lt;br /&gt;                + After the configSections section insert the following (be sure to replace the ldap string with a valid one for your domain)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;LDAP://win2003eebase.charrandev.com/CN=Users,DC=charrandev,DC=com&lt;br /&gt;name="ADServices"/&gt;&lt;br /&gt;&lt;br /&gt;                + In the system.web section insert the following (note the version of the ActiveDirectoryMemberShipProvider class found in the GAC by looking at c:\Windows\Assembly)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;          o Do this for the default SharePoint Administration Site as well. This will allow you to add the first site collection administrator.&lt;br /&gt;                + Note the attributeMapUserName attribute because it allows you to enter just the username and not the UPN (format of account@domain.com)&lt;br /&gt;    * Go To SharePoint Central Administration and change the Authentication Provider for the Web Application&lt;br /&gt;          o In SharePoint Central Administration, select Authentication Providers under Applation Management's Application Security section.&lt;br /&gt;          o Click the Defaul provider and modify the authentication Type to be Forms authenitcation (make sure you have the right web application selected)&lt;br /&gt;          o Enable anonymous access and specify the name of the provider we placed into the web.config file (in this case "ADProvider")&lt;br /&gt;          o For public sites, I usually disable client integration&lt;br /&gt;          o Go to to the site collection administrators on Aplication Management and select the first administrators for the site from the domain specified in the ldap connection string of the ADProvider&lt;br /&gt;&lt;br /&gt;You should now be able to visit the site and get prompted for forms authentication based on a standard login form that MOSS/WSS maintains for forms authentication. Ostensibly, you can modify this page, or supplant another page using SharePoint Designer 2007.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128781602115848291-6691136648573253601?l=sharepoint-invention.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepoint-invention.blogspot.com/feeds/6691136648573253601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128781602115848291&amp;postID=6691136648573253601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/6691136648573253601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/6691136648573253601'/><link rel='alternate' type='text/html' href='http://sharepoint-invention.blogspot.com/2008/07/using-active-directory-membership.html' title='Using the Active Directory Membership Provider with Forms Authentication in MOSS 2007'/><author><name>Sankar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128781602115848291.post-5081105582002666442</id><published>2008-07-02T04:59:00.000-07:00</published><updated>2008-07-02T05:00:47.809-07:00</updated><title type='text'>SharePoint and Microsoft Learning Gateway Links/Resources</title><content type='html'>-on (Free)  &lt;ul&gt;&lt;li&gt;SharePoint Learning Kit&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/slk"&gt;www.codeplex.com/slk&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Microsoft Learning Gateway Refresh&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/lg"&gt;www.codeplex.com/lg&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Advanced Wikis, Blogs,&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/cks"&gt;www.codeplex.com/cks&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Community Kit for SharePoint Education (Site Template)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/CKS/WorkItem/View.aspx?WorkItemId=1463"&gt;http://www.codeplex.com/CKS/WorkItem/View.aspx?WorkItemId=1463&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Moodle WebParts for SharePoint&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/Moodle2003WP"&gt;www.codeplex.com/Moodle2003WP&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;  &lt;p&gt;Education SharePoint add-ons (Purchase)&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;Course Builder VLE&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sharepointlms.com/"&gt;www.sharepointlms.com&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Scholaris VLE for SharePoint (available from Ergo&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ergo.co.uk/"&gt;www.ergo.co.uk&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Provisioning tool for SharePoint Learning Kit and other VLEs. Information pulled from MIS System&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.salamandersoft.co.uk/"&gt;www.salamandersoft.co.uk&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;  &lt;p&gt;SharePoint/Education Website&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;Microsoft UK Education Site&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/uk/education/"&gt;http://www.microsoft.com/uk/education/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Microsoft Schools Blog&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/ukschools/"&gt;http://blogs.msdn.com/ukschools/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Microsoft Education&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/education"&gt;http://www.microsoft.com/education&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Microsoft Education Test Drive Website&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/education/testdrive/"&gt;http://www.microsoft.com/education/testdrive/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Live@Edu&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://my.liveatedu.com/"&gt;http://my.liveatedu.com/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;  &lt;p&gt;Microsoft Learning Gateway&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;Introduction to Microsoft Learning Gateway&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sharepointblogs.com/ajp/archive/2007/12/19/introduction-to-the-microsoft-learning-gateway.aspx"&gt;http://www.sharepointblogs.com/ajp/archive/2007/12/19/introduction-to-the-microsoft-learning-gateway.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Microsoft Learning Gateway Website&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.learninggateway.net/"&gt;www.learninggateway.net&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Demo Sites&lt;/li&gt;&lt;li&gt;Community Kit for SharePoint: Education&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sharepoint.microsoft.com/sharepoint/cks/se-alpha"&gt;http://sharepoint.microsoft.com/sharepoint/cks/se-alpha&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Microsoft Demo Site for Education&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.runaware.com/microsoft/en-us/edu/td"&gt;http://www.runaware.com/microsoft/en-us/edu/td&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;  &lt;p&gt;Case Studies&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;Shirelands Collegiate Academy&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/casestudies/casestudy.aspx?casestudyid=201511"&gt;http://www.microsoft.com/casestudies/casestudy.aspx?casestudyid=201511&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Long Eaton School&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/casestudies/casestudy.aspx?casestudyid=4000000162"&gt;http://www.microsoft.com/casestudies/casestudy.aspx?casestudyid=4000000162&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Leeds Learning Gateway&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/casestudies/casestudy.aspx?casestudyid=4000001225"&gt;http://www.microsoft.com/casestudies/casestudy.aspx?casestudyid=4000001225&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Other Education Case Studies from Microsoft&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="http://www.microsoft.com/casestudies/search.aspx?IndTaxID=1570" href="http://www.microsoft.com/casestudies/search.aspx?IndTaxID=1570"&gt;http://www.microsoft.com/casestudies/search.aspx?IndTaxID=1570&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Twynham School&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sharepointblogs.com/files/folders/ajp/entry12906.aspx"&gt;http://www.sharepointblogs.com/files/folders/ajp/entry12906.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;  &lt;p&gt;Resources&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;Resources for Education: Microsoft SharePoint&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sharepointblogs.com/files/folders/ajp/entry14774.aspx"&gt;http://www.sharepointblogs.com/files/folders/ajp/entry14774.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Learning for the Future: A Vision of Connected Learning Communities. Microsoft document on BSF and the Microsoft Learning Gateway&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sharepointblogs.com/files/folders/ajp/entry15753.aspx"&gt;http://www.sharepointblogs.com/files/folders/ajp/entry15753.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Building Schools for the Future Showcase&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/uk/education/building.mspx"&gt;http://www.microsoft.com/uk/education/building.mspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Connected Learning Gateway: BETT Presentation&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://download.microsoft.com/documents/uk/publicsector/ppt/Connected%20Learning%20Gateway.ppsx"&gt;http://download.microsoft.com/documents/uk/publicsector/ppt/Connected%20Learning%20Gateway.ppsx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Industry Insiders Blog on SharePoint Learning Kit&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="http://blogs.technet.com/industry_insiders/pages/introduction-to-scorm-and-sharepoint-learning-kit-slk.aspx" href="http://blogs.technet.com/industry_insiders/pages/introduction-to-scorm-and-sharepoint-learning-kit-slk.aspx"&gt;http://blogs.technet.com/industry_insiders/pages/introduction-to-scorm-and-sharepoint-learning-kit-slk.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;  &lt;p&gt;Videos&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;Shirelands Learning Gateway&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/casestudies/resources/Files/201511/Shireland_Learning_Gateway_in_Action_1500k00.wvx"&gt;http://www.microsoft.com/casestudies/resources/Files/201511/Shireland_Learning_Gateway_in_Action_1500k00.wvx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Long Eaton&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/casestudies/resources/Files/4000000162/LongEatonOfficeandVistainAction384k.wvx"&gt;http://www.microsoft.com/casestudies/resources/Files/4000000162/LongEatonOfficeandVistainAction384k.wvx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;BSF Showcase&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://download.microsoft.com/documents/uk/education/bsf/BSFShowcaseTrailer.wmv"&gt;http://download.microsoft.com/documents/uk/education/bsf/BSFShowcaseTrailer.wmv&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;  &lt;p&gt;The Future&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;Silverlight Coding&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.silverlight.net/"&gt;www.silverlight.net&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.silverlighters.co.uk/"&gt;www.silverlighters.co.uk&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;New Line Learning Showcase at BETT&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sharepointblogs.com/ajp/archive/2008/01/17/silverlight-with-sharepoint-and-excel-for-education.aspx"&gt;http://www.sharepointblogs.com/ajp/archive/2008/01/17/silverlight-with-sharepoint-and-excel-for-education.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;The Revolution in Education: A personal statement on the future of IT in Education&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sharepointblogs.com/ajp/archive/2008/02/27/the-it-revolution.aspx"&gt;http://www.sharepointblogs.com/ajp/archive/2008/02/27/the-it-revolution.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128781602115848291-5081105582002666442?l=sharepoint-invention.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepoint-invention.blogspot.com/feeds/5081105582002666442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128781602115848291&amp;postID=5081105582002666442' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/5081105582002666442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/5081105582002666442'/><link rel='alternate' type='text/html' href='http://sharepoint-invention.blogspot.com/2008/07/sharepoint-and-microsoft-learning.html' title='SharePoint and Microsoft Learning Gateway Links/Resources'/><author><name>Sankar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128781602115848291.post-1571126214547772513</id><published>2008-07-02T04:58:00.000-07:00</published><updated>2008-07-02T04:59:14.311-07:00</updated><title type='text'>Interfarm Shared Services</title><content type='html'>&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;If Intra-farm shared services are  web apps consuming from SSPs within the same farm, then Inter-farm are web app(s) consuming from SSPs outside the farm. (MSDN:&lt;a href="http://msdn2.microsoft.com/en-gb/library/ms996099.aspx" gping="/GLinkPing.aspx?/_1_9SE/1?http://msdn2.microsoft.com/en-gb/library/ms996099.aspx&amp;amp;&amp;amp;DI=6244&amp;amp;IG=7f2fb6fa1b7e41a2be98ce2aa0b465dd&amp;amp;POS=1&amp;amp;CM=WPU&amp;amp;CE=1&amp;amp;CS=AWP&amp;amp;SR=1&amp;amp;sample=0"&gt;&lt;span&gt;Shared Services Overview&lt;/span&gt;&lt;/a&gt;) (TechNet:&lt;a href="http://technet2.microsoft.com/Office/en-us/library/cce2f987-3949-44be-8057-663b38fc949d1033.mspx" gping="/GLinkPing.aspx?/_1_9SE/1?http://technet2.microsoft.com/Office/en-us/library/cce2f987-3949-44be-8057-663b38fc949d1033.mspx&amp;amp;&amp;amp;DI=6244&amp;amp;IG=7f2fb6fa1b7e41a2be98ce2aa0b465dd&amp;amp;POS=2&amp;amp;CM=WPU&amp;amp;CE=2&amp;amp;CS=AWP&amp;amp;SR=2&amp;amp;sample=0"&gt;&lt;span&gt;Plan Shared Services Providers&lt;/span&gt;&lt;/a&gt;).  Because of the WAN limitation, (can't consume SSP across the WAN) many people discount a solution with more than 1 farm.  Before you dismiss this whole post, consider this...  It really isn't that strange to create 2 farms in the same region... Why you may ask...  You may decide that you want to do collaboration with Out of the box functionality maybe some custom master pages and layouts, but pretty much no custom assemblies or custom site defs or web parts.  On the other farm, you create your Intranet Portal with custom web apps for your business and it becomes much more application centric.  Sean Livingston has put together a service offering white paper focused on hosting customizations that we should be sharing as soon as we can get it published.&lt;/p&gt; &lt;p&gt;Let's say you have a few web apps, quite a bit of content.  (Don't waste your time with this if you have one web app.) &lt;/p&gt; &lt;p&gt;Why have the SSP in a separate farm? (Sam from MSW is a fan.)&lt;/p&gt; &lt;p&gt;1. If you have Multiple farms then it consolidates management for Search, Profiles, My sites, etc...&lt;/p&gt; &lt;p&gt;2. Can reduce number of servers and disk space for Query.  If high availablity of the site is important, but search isn't, you could save a bunch on disk space by having your Index/Query/WFE SSP farm all on one box thus reducing the storage needed on query since it would be on the same box.  You could even use the same SQL environment for the 2 farms.&lt;/p&gt; &lt;p&gt;3. Politics - The SSP is a very hot commodity, by putting it in it's own farm you can optimize the disks, SQL, the management from top to bottom could then be managed in a vacuum.  This doesn't have to make sense from a technical point of view to see how multiple groups could divide their farms then consume a common "enterprise search" experience.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;What to avoid...&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;You may think, why not run Search in a separate farm with the Search SKU (Microsoft Office SharePoint for Search Standard or Enterprise) and have it provide shared services.  Won't work.  Both parent and child farms need to be the same SKU (hence same features).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;What you may not know...&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Excel services although it shows up as a shared service, it's basically config for the safe locations.  The Excel services are still with the consuming farm for rendering and calc purposes.&lt;/p&gt; &lt;p&gt;Forms services are always on the front ends for rendering. There's actually no real way off offloading the forms rendering to an app server if you wanted to, but you can offload &lt;a class="" href="http://msdn2.microsoft.com/en-us/library/aa979484.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa979484.aspx"&gt;document conversions&lt;/a&gt; i.e. the document HTML transformation service.&lt;/p&gt; &lt;p&gt;Contrary to some rumors there is no magic latency calculation to consuming shared services over the WAN. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Some Additional Information&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;Some data from the multi farm Visio deployment docs.  I noticed this doesn't come up in search.  Guess our favorite Internet search engines like Live don't have Visio Ifilters.&lt;/p&gt; &lt;p&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=73155&amp;amp;clcid=0x409" target="_blank" logredir="CTT=ToExternal"&gt;Model: Office SharePoint Server Inter-Farm Shared Services&lt;/a&gt;&lt;span id="EKC"&gt;&lt;/span&gt; &lt;script language="Javascript"&gt;    if(typeof(IsPrinterFriendly) != "undefined")    {    var l = "http://go.microsoft.com/fwlink/?LinkID=73155&amp;clcid=0x409";    var nl;    var c = l.charAt(0);    var o = document.getElementById("EKC");    switch (c){    case "/":    nl=(" [http://" + document.domain + l + "]");    break    case "#":    nl=("");    break    default:    nl=" [" + l + "]"    }    if(o != null) o.innerHTML = nl;    }   &lt;/script&gt;  &lt;/p&gt; &lt;p&gt;Snippet from the Visio (good stuff):&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;Shared Services Providers can be configured to provide services to multiple Microsoft® Office SharePoint® Server 2007 farms. Utilizing Shared Services Providers across farms:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;Reduces the number of services that provide the same role.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;Dramatically reduces hardware, resource, and network bandwidth use.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;Centralize administration of Shared Services Providers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;Intra-farm shared services are offered by a parent farm to one or more child farms [Joel: One to one or one to many relationship]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;A parent farm is configured to provide shared services to other child farms. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;Child farms are configured to consume shared services from the parent farm.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 10pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;A farm cannot be both a parent farm and a child farm. (Joel: This is not saying the same as Intra-farm)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;Only one Shared Services Provider can participate in inter-farm shared services:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;Parent farms can only share one Shared Services Provider to child farms. However, a parent farm can include more than one Shared Services Provider for its own use (see Parent Farm left).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 10pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;Child farms can only consume services from one Shared Services Provider. However, a child farm can include more than one Shared Services Provider for its own use. (see diagram)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;Shared services consumption for child farms can be reconfigured at any time (not true in SPS2003):&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;A child farm can disassociate from a parent farm and be configured to either consume shared services from a different parent farm or use its own Shared Services Provider.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;Child farms can consume shared services from a parent farm when connected to the central network and then switch to consume services from its own Shared Services Provider when it is disconnected. Child Farm 3 (see diagram) illustrates a farm with a standby Shared Services Provider that is used when the farm is disconnected.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 10pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;Parent farms can be re-configured as stand-alone farms at any time. Parent farm administrators should alert administrators of affected child farms before reconfiguring the Shared Services Provider as a stand-alone Shared Services Provider.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;The following limitations apply to Inter-farm shared services:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;Parent and child farms must reside within the same Active Directory forest. If the farms reside in different domains, there must be a trust relationship configured between the domains.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;Inter-farm shared services is not supported across a WAN. A child farm cannot be associated with a Shared Services Provider at a parent farm if the two farms are separated by WAN links.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: 'Arial','sans-serif';"&gt;Parent farms must have all Office server products installed that are used by child farms. For example, if a child farm includes Microsoft Office Project Server, then Office Project Server must be installed on the parent farm for shared services to work correctly. If a child farm uses the [Enterprise] CAL of Office SharePoint Server, then the parent farm must also use the [Enterprise] CAL (as opposed to the [Standard] CAL).&lt;/span&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128781602115848291-1571126214547772513?l=sharepoint-invention.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepoint-invention.blogspot.com/feeds/1571126214547772513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128781602115848291&amp;postID=1571126214547772513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/1571126214547772513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/1571126214547772513'/><link rel='alternate' type='text/html' href='http://sharepoint-invention.blogspot.com/2008/07/interfarm-shared-services.html' title='Interfarm Shared Services'/><author><name>Sankar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128781602115848291.post-892381674523109736</id><published>2008-07-02T04:56:00.000-07:00</published><updated>2008-07-02T04:57:35.738-07:00</updated><title type='text'>Simulate Parent / Child relationship in SharePoint 2007 with Folders &amp; Content Types</title><content type='html'>&lt;div&gt;One can create Parent / Child (A.K.A. Master / Detail) relationships in SharePoint 2007 by using lookups to reference a parent list from a child list. I will discuss another way of creating a Parent / Child relationship by adding a content type inside a folder.&lt;/div&gt; &lt;div&gt;&lt;br /&gt;We will create a parent / child relationship between company and employees. Here are our sample entities:&lt;/div&gt; &lt;div&gt;&lt;br /&gt;Company Parent (CompanyId, CompanyName)&lt;br /&gt;Employee Child (Name, EmployeeId, Branch)&lt;/div&gt; &lt;div&gt;&lt;br /&gt;The strategy will be to make the "Company Parent" entity a folder which contains "Employee Child" items. To accomplish this we will create two new content types for each entity.&lt;/div&gt; &lt;div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;The "Company Parent" content type:&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;1) Site Actions ==&gt; Site Settings ==&gt; Site Content Types&lt;/div&gt; &lt;div&gt;&lt;br /&gt;2) Create&lt;/div&gt; &lt;div&gt;&lt;br /&gt;• Name: Company Parent&lt;br /&gt;• Select parent content type from: Folder Content Types&lt;br /&gt;• Parent Content Type: Folder&lt;br /&gt;• Existing group: Custom Content Types&lt;br /&gt;• Click OK&lt;/div&gt; &lt;div&gt;&lt;br /&gt;3) Click on "Add from new site column" on the "Site Content Type: …" page under column.&lt;/div&gt; &lt;div&gt;&lt;br /&gt;• Column name: CompanyId of type Number&lt;br /&gt;• Click OK&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;img alt="Parent Company Content Type" src="http://cisa.ca/blogs/medhat/AppDocs/ParentCompanyContentType.JPG" /&gt;&lt;br /&gt;&lt;/div&gt; &lt;div&gt;NOTE: We will reuse the "Title" field to be the CompanyName.&lt;/div&gt; &lt;div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;The "Employee Child" content type:&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;br /&gt;1) Site Actions ==&gt; Site Settings ==&gt; Site Content Types&lt;br /&gt;2) Create&lt;/div&gt; &lt;div&gt;&lt;br /&gt;• Name: Employee Child&lt;br /&gt;• Select parent content type from: List Content Types&lt;br /&gt;• Parent Content Type: Item&lt;br /&gt;• Existing group: Custom Content Types&lt;br /&gt;• Click OK&lt;/div&gt; &lt;div&gt;&lt;br /&gt;3) Click on "Add from new site column" on the "Site Content Type: …" page under column.&lt;/div&gt; &lt;div&gt;&lt;br /&gt;• Column name: EmployeeId of type Number&lt;br /&gt;• Click OK&lt;/div&gt; &lt;div&gt;&lt;br /&gt;4) Click on "Add from new site column" on the "Site Content Type: …" page under column.&lt;/div&gt; &lt;div&gt;&lt;br /&gt;• Column name: Branch of type "Single line of text"&lt;br /&gt;• Click OK&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;img alt="Employee Child Content Type" src="http://cisa.ca/blogs/medhat/AppDocs/EmployeeChildContentType.JPG" /&gt;&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;NOTE: We will reuse the "Title" field to be the EmployeeName.&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;Now we can go about our normal business of creating a custom list and using our two newly created content types "Company Parent" and "Employee Child".&lt;/div&gt; &lt;div&gt;&lt;br /&gt;1) Site Settings ==&gt; Create&lt;br /&gt;2) Click on "Custom List" under the "Custom Lists" column.&lt;/div&gt; &lt;div&gt;&lt;br /&gt;• Name: CompanyEmployees&lt;br /&gt;• Click OK&lt;/div&gt; &lt;div&gt;&lt;br /&gt;3) Settings ==-&gt; List Settings&lt;br /&gt;4) Click on "Advanced Settings" under the "General Settings" column&lt;br /&gt;5) At the very top, change Allow management of content types?" to Yes.&lt;br /&gt;6) Click on OK&lt;br /&gt;7) Under "Content Types" click on "Add from existing site content types".&lt;br /&gt;8) On the "Add Content Types:" page&lt;/div&gt; &lt;div&gt;&lt;br /&gt;• Select site content types from: Custom Content Types&lt;br /&gt;• Add "Company Parent" and "Employee Child" content types.&lt;br /&gt;• Click on OK &lt;/div&gt; &lt;div&gt;&lt;br /&gt;Let’s add some dummy data.&lt;br /&gt;1. Click on the "CompanyEmployees" list&lt;br /&gt;2. Click on the little arrow beside New. You should see this:&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;img alt="New Parent" src="http://cisa.ca/blogs/medhat/AppDocs/NewCompanyEmployees.JPG" /&gt;&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;3. Select "Company Parent"&lt;br /&gt;4. Add the following bogus company data:&lt;/div&gt; &lt;div&gt;&lt;br /&gt;• Name: ACME Corporation; CompanyId: 123&lt;br /&gt;• Name: Bogus Enterprises: CompanyId: 456&lt;/div&gt; &lt;div&gt;&lt;br /&gt;5. Add bogus company employees to "ACME Corporation"&lt;/div&gt; &lt;div&gt;&lt;br /&gt;• Click on "ACME Corporation". This causes the folder to open.&lt;br /&gt;• Add the following employees to the ACME Corporation by clicking on New ==-&gt; Employee Child:&lt;br /&gt;• Title: Jane Doe; EmployeeId: 111; Branch: Downtown&lt;br /&gt;• Title: James White; EmployeeId: 222; Branch: Airport&lt;br /&gt;• Click on "Bogus Enterprises". This causes the folder to open.&lt;br /&gt;• Add the following employees to Bogus Enterprises by clicking on New ==-&gt; Employee Child:&lt;br /&gt;• Title: Judy Black; EmployeeId: 333; Branch: Main Street&lt;br /&gt;• Title: Brandon Wiley; EmployeeId: 333; Branch: Riverside&lt;br /&gt;• Add another employee to ACME:&lt;br /&gt;&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;This concludes configuration and data entry. Let us now use the SharePoint 2007 Object Model to get at this data.&lt;br /&gt;&lt;/div&gt; &lt;div&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;public class CompanyEmployees {&lt;br /&gt;    static void Main(string[] args) {&lt;br /&gt;        SPSite site = new SPSite("&lt;a href="http://srvr/"&gt;http://srvr/&lt;/a&gt;");&lt;br /&gt;        SPWeb web = site.AllWebs["/"];&lt;br /&gt;        SPList list = web.Lists["CompanyEmployees"];&lt;/div&gt; &lt;div&gt;        foreach (SPListItem order in list.Folders) {&lt;br /&gt;            Console.WriteLine("Company ID   : {0}", order["CompanyId"]);&lt;br /&gt;            Console.WriteLine("Company Name : {0}", order["Title"]);&lt;/div&gt; &lt;div&gt;            SPQuery empItemsQuery = new SPQuery();&lt;br /&gt;            empItemsQuery.Folder = order.Folder;&lt;br /&gt;            SPListItemCollection empItems = list.GetItems(empItemsQuery);&lt;br /&gt;            foreach (SPListItem empItem in empItems) {&lt;br /&gt;                Console.WriteLine("\tEmployee ID {0}: {1} {2}",&lt;br /&gt;                    empItem["EmployeeId"],&lt;br /&gt;                    empItem["Title"],&lt;br /&gt;                    empItem["Branch"]);&lt;br /&gt;            }&lt;/div&gt; &lt;div&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The above application will produce the following result:&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;Company ID   : 123&lt;br /&gt;Company Name : ACME Corporation&lt;br /&gt;        Employee ID 111: Jane Doe Downtown&lt;br /&gt;        Employee ID 222: James White Airport&lt;br /&gt;Company ID   : 456&lt;br /&gt;Company Name : Bogus Enterprises&lt;br /&gt;        Employee ID 333: Judy Black Main Street&lt;br /&gt;        Employee ID 444: Brandon Wiley Riverside&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128781602115848291-892381674523109736?l=sharepoint-invention.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepoint-invention.blogspot.com/feeds/892381674523109736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128781602115848291&amp;postID=892381674523109736' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/892381674523109736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/892381674523109736'/><link rel='alternate' type='text/html' href='http://sharepoint-invention.blogspot.com/2008/07/simulate-parent-child-relationship-in.html' title='Simulate Parent / Child relationship in SharePoint 2007 with Folders &amp; Content Types'/><author><name>Sankar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8128781602115848291.post-546028740409255496</id><published>2008-06-26T21:16:00.000-07:00</published><updated>2008-06-26T21:19:01.012-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MOSS AND WSS'/><title type='text'>Microsoft Sharepoint and Widows Sharepoint Services</title><content type='html'>Microsoft Sharepoint and Windows Sharepoint Services&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8128781602115848291-546028740409255496?l=sharepoint-invention.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepoint-invention.blogspot.com/feeds/546028740409255496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8128781602115848291&amp;postID=546028740409255496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/546028740409255496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8128781602115848291/posts/default/546028740409255496'/><link rel='alternate' type='text/html' href='http://sharepoint-invention.blogspot.com/2008/06/microsoft-sharepoint-and-widows.html' title='Microsoft Sharepoint and Widows Sharepoint Services'/><author><name>Sankar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
