SharePoint 2010... Multi-tenancy Support for Hosters - It is there if you want it.
To avoid overdose of Exchange, this weekend, I took some time to look at SharePoint 2010 and just to see how much has changed since the SharePoint version we used in HMC 4.5.
In HMC 4.5, we used Windows SharePoint Services 3.0 SP1. I blogged about this back in January 2009. It is here if you are interested, HMC 4.5 and Windows SharePoint Services 3.0 SP1 (https://blogs.technet.com/b/provtest/archive/2009/01/14/hmc-4-5-and-windows-sharepoint-services-3-0-sp1.aspx). In that article, I spoke about 3 main things that HMC did to introduce multi-tenancy support in WSS 3.0. The 3 main things are,
- Site Isolation - Each company should only be allowed to see and access their own site. It must able to cater for different domain-named sites, such as https://sharepoint.alpineskihouse.com, https://teamsite.contoso.com instead of everyone having a common site name like https://www.serviceprovider.com/sites/<sitename
- Site Administration Isolation - Each company should only be allowed to manage their own site
- User Isolation - Each company should only see their own users.
At the end of the article, as you could see, unlike Hosted Exchange, there were really very little HMC needs to do to change WSS to provide multi-tenancy support in SharePoint. Of course, there were many things could have been done much better but in a nutshell, WSS 3.0 itself is capable of multi-tenant support already without much customization.
In my earlier post, I recommended those who are interested in to take a look at the diagram as posted by Microsoft. It is here in case you missed it, Hosting Environment for SharePoint 2010 Products? (https://blogs.technet.com/b/provtest/archive/2010/06/24/hosting-environment-for-sharepoint-2010-products.aspx). Now, there are also another set of documents that you should look at, they are the Dynamic Data Center Toolkit for Hosters. The link is here,
Dynamic Data Center Toolkit for Hosters (https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ddc&ReleaseId=4297)
The above, you will find the document very similar to those in the HMC walk through but for SharePoint 2010 and it will have steps and scripts (primarily Powershell) on how you create site isolation, site administration isolation and user isolation.
Of course, it does more than that. It provides better explanation also described various way you can deploy customer sites to a SharePoint farm. Such as you can do the following,
- Dedicated application pool and Web application
- Shared application pool and dedicated Web application
- Shared Web application
- Authenticated sites
- Unauthenticated sites
It also provided better guideline such as,
- Use a dedicated Application Pool per customer only if needed to satisfy requirements for isolation.
- Use dedicated Web applications for tenants that require customizations that affect resources that are shared across a Web application, such as the Web.config file.
- When combining multiple tenants in a single Web application, use a dedicated Web application for all authenticated content and a separate dedicated Web application for all anonymous published-content. This will require two separate subscriptions IDs for tenants with both types of content. This will also simplify licensing.
- Do not allow full-trust code to be deployed to sites. Do not allow customizations that affect shared resources, such as the Web.config file.
- Use host-named site collections to create multiple root-level site collections (domain-named sites) within a Web application.
- If any tenant must span to more than 1 database, they must be the ONLY tenant in all those databases (so dedicated databases.
- If any tenant must span to more than 1 database, they must be the ONLY tenant in all those databases (so dedicated databases)
It provides architecture option you can choose for your hosting environment. It also provides architecture guideline on how to scale out a hosted environment for your Services farm, Search farm and Tenant content farms. It provides information how one should design their Active Directory and SharePoint 2010 also introduces some new concept like managed accounts, proxy groups, business data catalog and etc. The underlining tenant provisioning hasn't changed much though. It still uses host header concept and for people picker, it still uses user account directory path concept. The Powershell script works pretty well for me for most parts, it even included some stuff that you don't really need in production environment such as putting some entries in the HOST file.
Here is the summary of multi-tenant setup steps (which I am not going to go into each of them in detail because the document has all the needed explanations). It is assumed that the server has been installed and setup,
- Setting up the multi-tenant environment
- Step 1: Create Managed Account
- Step 2: Create Proxy Group
- Step 3: Create Site Subscription
- Step 4: Create Site Subscription Feature Packs
- Step 5: Create Managed Metadata
- Step 6: Create User Profile
- Step 7: Create Business Data Catalog
- Step 8: Create Secure Store
- Step 9: Create Search Application
- Tenant Provisioning
- Step A: Create New Site Subscription
- Step B: Assign Feature Pack to Site Subscription
- Step C: Create Site Collection
- Step D: Set Site User Account Directory Path
Follow the above through, you should be able to create a SharePoint Site for your tenant organization like me like the following,
And the Admin site for your tenant organization,
The above are pretty straightforward. There is really one thing I like to highlight here which is Step D: Set Site User Account Directory Path. In this step, you are supposed to set the path to the Tenant organization OU. In the SharePoint document, you will find they recommended the AD to be designed in the following,
Doesn't the above look familiar? Now, the question comes in is that what happen when I introduce Exchange Server 2010 SP1 into the mix? Exchange itself provision the organization OU into a specific OU, which is, OU=Microsoft Exchange Hosted Organizations like the following,
Well, it means, if you are providing both Hosted Exchange and Hosted SharePoint, you may want to first create the OU using the Exchange cmdlet first and then when you perform Step D, just set it to the appropriate path like the following,
stsadm -o setsiteuseraccountdirectorypath -path "OU=ProvTest, OU=Microsoft Exchange Hosted Organizations,DC=FABRIKAM,DC=com" -url http://intranet.
I strongly recommend you to download the documents, go through the steps, the Powershell and get yourself familiarized with it. The concept hasn't changed tremendously from WSS 3.0 but obviously, the product has grown much more matured and it is being developed, like Exchange Server 2010 SP1, with hosters in mind.
Comments
Anonymous
January 01, 2003
The comment has been removedAnonymous
January 01, 2003
The comment has been removedAnonymous
September 03, 2010
Hello, This command : "stsadm -o setsiteuseraccountdirectorypath -path "OU=ProvTest, OU=Microsoft Exchange Hosted Organizations,DC=FABRIKAM,DC=com" -url http://intranet." works with SharePoint Foundation ? SharePoint foundation support multi-tenant organization like SharePoint server 2010 ?Anonymous
November 04, 2010
The comment has been removedAnonymous
April 05, 2011
The comment has been removedAnonymous
September 12, 2011
Hi, Jason: I think it wont hurt your Sharepoint users when you move them in AD. I tested it few months ago, and it worked without any problem. In my view, Sharepoint doesn't care where the user is, it stores user's DomainsamAccountName in Sharepoint Database. Regards,Anonymous
December 12, 2011
The comment has been removedAnonymous
July 15, 2012
The comment has been removedAnonymous
September 12, 2012
Everything is extremely open and quite clear explanation of concerns. that is truly data for the my ideas.... Your site is really useful. Many thanks for sharing.Anonymous
April 23, 2013
oes a multi tenant SharePoint web application stores user accounts on "child" websites or in the root web? I need to provide forms authentication at this multi tenant web application but the users can't be shared between "child" websites and if the user types the root web url, he must be redirected to the "child" website he has permissions (when logging in). Is it possible?Anonymous
December 05, 2015
I have been trying SharePoint server with http://cheaperasp.net from quite some time. So far everything is running smooth. I must say SharePoint server 2010 is better than foundation.Anonymous
January 22, 2016
We hosted our company intranet using https://www.seekdotnet.com/moss-hosting/">https://www.seekdotnet.com/moss-hosting/ sharepoint 2010 hostingAnonymous
February 14, 2016
hai, I just want to tell you that I am just very new to blogs and seriously loved this website. More than likely I’m planning to bookmark your blog post .
You amazingly come with really good posts. Thanks a lot for sharing your blog Microsoft.
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20Jatim
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20BJB
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20BNI%2046
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20BTPN%20Syariah
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20DKI
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20Panin
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20PT%20Mandiri%20Tunas%20Finance
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20BRI%20Agro
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20Muamalat
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20BItung
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20BursaKerja
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20CIKUPA
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20CPNS
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20D1
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20D2
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20D3
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20D4
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Depnaker
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Dokter
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Dosen
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Ekonomi
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Elektro
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Farmasi
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Garuda%20Indonesia
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Geologi
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Grafika
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Guru
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Hari%20Ini
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Hotel
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Hukum
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Indomart
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20IT
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Jobsdb
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Jobstreet
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20K3
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Kehutanan
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Kernet
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Kesehatan
http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Komputer