SharePoint 2010 for Hosting Service Providers – Multi Tenant Configuration and Management Made Easy


We all know that SharePoint 2010 has native support for multi tenancy. However the functionalities related to multi tenancy were not exposed via Central Administration or Designer. These functionality are exposed via PowerShell scripts. Now this was kind of setback for Hosting Providers as now they have to write application on top of existing infrastructure for managing multi tenancy.

Sometime back I got information from some blog (didn’t remembered the name) that there is team named SharePoint 2010 Go Live who are working on a collateral which will help hosting service providers configure and manage their environments. This includes custom Windows PowerShell Scripts and WCF Services which can be consumed easily. Not only this, they it will also include a Control Panel (ASP.NET Application) which will further help service providers to jumpstart their offerings.

Below are some of the key information from the document ‘SharePoint 2010 for Hosters Whitepaper’:

Administration level support in SharePoint 2010 for multi tenant environment:

Role

Description

Hosting company

Manages the farm-level settings and hardware

Controls database configurations

Installs all new approved features and solutions

Can brand the Tenant Administrator pages

Hosted company administrator

Purchases space, features, and bandwidth from hosting company

Controls the architecture of customer sites but not the content

Reviews usage statistics

Hosted company

Owns site collection

Installs or removes features and solutions

Configures features and services

Reviews usage statistics

Multi-Tenant Farm Hosting Configuration:

image

Active Directory Design for hosting the Organizational Unit:

Organizational units are used to organize users and computers objects in the Active Directory environment.

image

WCF Services:

As multi tenancy features are only exposed via PowerShell cmdlets, these services use PowerShell cmdlets on the back end to provide the functionality. Till the time the inputs and outputs of the services are same these cmdlets can be customized without the recompiling the service code.

image

 

Control Panel:

image

Sample Tenant Administration Plug-Ins:

However there are still few questions remains to be answered from multi tenant environment perspective.

First one is how the user management can be delegated to individual companies. For that the requirement is the ability to manage users from central administration which will intern reflect the changes in Active Directory.

Second one is how the resource (disk quota) will be managed within site collections by appropriate tenants.

For this we see that there are two sample tenant administration plug-ins released which deals with these situations.

User Account Management:

This plug-in deals with Active Directory user account creation and management from within the Tenant Administration site. Using a modified version of the Hosting Core Services’ User Account service, Tenant Admins can now create users, reset passwords, and delete users from within Tenant Administration.

image

 

Tenant Quota:

It uses a custom property set on the tenant to control the overall quota for the tenant. The sample overwrites the built-in disk quota functionality on the Manage Site Collections page and allows the tenant administrator to set the individual site collection quotas against the master quota limit. Please note this sample is only recommended for tenants with just a few site collections and will not scale for tenants with many site collections (> 10).

image

Source code  can be downloaded from:

http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ddc&ReleaseId=4297

image

SharePoint 2010 – PowerShell Cmdlets


PowerShell provides very effective way to work with SharePoint 2010. In-fact there are some tasks for which there are no GUI and needs to be done only by using PowerShell. Not only this, tasks which requires multiple steps from GUI can be easily done with single command.

Because of all these reasons its very important to get a good hands on PowerShell cmdlets for SharePoint 2010. Also all the Microsoft 2010 products provides / going to provide wealth of PowerShell cmdlets to interact with the product so any learning here is effectively going to help while working with other Microsoft products like Exchange Server, Windows Server etc…

There are around 531 PowerShell commands available for SharePoint 2010 (Final Release).

To begin with we need to start the PowerShell in the Administrator mode. Once it is started we can add the SharePoint Snapin to the PowerShell using the below mentioned command.

Add-PsSnapin Microsoft.SharePoint.PowerShell

Now we can export all the SharePoint 2010 cmdlets to a text file using the command:

Get-Command -module Microsoft.SharePoint.PowerShell | format-table Name > C:\SharePoint2010\SP2010PowerShellCmdlets.txt

Basically this gives all the commands in a alphabetically sorted list. Also these commands are nicely grouped using appropriate naming conventions (e.g. Add-SP*, Backup-SP*, Clear-SP*, Disable-SP*, Get-SP*, New-SP* etc.). My recommendation would be to first understand the operation that needs to be performed and then identify the type of the action required. All the PowerShell commands for SharePoint 2010 starts with below listed actions:

Add
Add
Backup
Clear
Connect
Copy
Disable
Disconnect
Dismount
Enable
Export
Get
Grant
Import
Initialize
Install
Merge
Mount
Move
New
Ping
Publish
Receive
Remove
Rename
Repair
Restart
Restore
Resume
Revoke
Set
Start
Stop
Suspend
Test
Uninstall
Unpublish
Update
Upgrade

Once we identify the action type search for the corresponding cmdlet in the below list and then use the Get-Help Command in the PowerShell to get the syntax and all the options for that command.

image

Below is the list of all the commands:

Add-SPClaimTypeMapping
Add-SPDiagnosticsPerformanceCounter
Add-SPInfoPathUserAgent
Add-SPPluggableSecurityTrimmer
Add-SPServiceApplicationProxyGroupMember
Add-SPShellAdmin
Add-SPSiteSubscriptionFeaturePackMember
Add-SPSiteSubscriptionProfileConfig
Add-SPSolution
Add-SPUserSolution
Backup-SPConfigurationDatabase
Backup-SPFarm
Backup-SPSite
Clear-SPLogLevel
Clear-SPMetadataWebServicePartitionData
Clear-SPPerformancePointServiceApplicationTrustedLocation
Clear-SPSecureStoreCredentialMapping
Clear-SPSecureStoreDefaultProvider
Clear-SPSiteSubscriptionBusinessDataCatalogConfig
Connect-SPConfigurationDatabase
Copy-SPBusinessDataCatalogAclToChildren
Disable-SPBusinessDataCatalogEntity
Disable-SPFeature
Disable-SPInfoPathFormTemplate
Disable-SPSessionStateService
Disable-SPSingleSignOn
Disable-SPTimerJob
Disable-SPWebApplicationHttpThrottling
Disconnect-SPConfigurationDatabase
Dismount-SPContentDatabase
Dismount-SPStateServiceDatabase
Enable-SPBusinessDataCatalogEntity
Enable-SPFeature
Enable-SPInfoPathFormTemplate
Enable-SPSessionStateService
Enable-SPTimerJob
Enable-SPWebApplicationHttpThrottling
Export-SPBusinessDataCatalogModel
Export-SPEnterpriseSearchTopology
Export-SPInfoPathAdministrationFiles
Export-SPMetadataWebServicePartitionData
Export-SPSiteSubscriptionBusinessDataCatalogConfig
Export-SPSiteSubscriptionSettings
Export-SPWeb
Get-SPAccessServiceApplication
Get-SPAlternateURL
Get-SPAuthenticationProvider
Get-SPBackupHistory
Get-SPBrowserCustomerExperienceImprovementProgram
Get-SPBusinessDataCatalogMetadataObject
Get-SPBusinessDataCatalogThrottleConfig
Get-SPCertificateAuthority
Get-SPClaimProvider
Get-SPClaimProviderManager
Get-SPContentDatabase
Get-SPContentDeploymentJob
Get-SPContentDeploymentPath
Get-SPCustomLayoutsPage
Get-SPDatabase
Get-SPDataConnectionFile
Get-SPDataConnectionFileDependent
Get-SPDesignerSettings
Get-SPDiagnosticConfig
Get-SPDiagnosticsPerformanceCounter
Get-SPDiagnosticsProvider
Get-SPEnterpriseSearchAdministrationComponent
Get-SPEnterpriseSearchCrawlComponent
Get-SPEnterpriseSearchCrawlContentSource
Get-SPEnterpriseSearchCrawlCustomConnector
Get-SPEnterpriseSearchCrawlDatabase
Get-SPEnterpriseSearchCrawlExtension
Get-SPEnterpriseSearchCrawlMapping
Get-SPEnterpriseSearchCrawlRule
Get-SPEnterpriseSearchCrawlTopology
Get-SPEnterpriseSearchExtendedClickThroughExtractorJobDefinition
Get-SPEnterpriseSearchExtendedConnectorProperty
Get-SPEnterpriseSearchExtendedQueryProperty
Get-SPEnterpriseSearchIndexPartition
Get-SPEnterpriseSearchLanguageResourcePhrase
Get-SPEnterpriseSearchMetadataCategory
Get-SPEnterpriseSearchMetadataCrawledProperty
Get-SPEnterpriseSearchMetadataManagedProperty
Get-SPEnterpriseSearchMetadataMapping
Get-SPEnterpriseSearchPropertyDatabase
Get-SPEnterpriseSearchQueryAndSiteSettingsService
Get-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance
Get-SPEnterpriseSearchQueryAndSiteSettingsServiceProxy
Get-SPEnterpriseSearchQueryAuthority
Get-SPEnterpriseSearchQueryComponent
Get-SPEnterpriseSearchQueryDemoted
Get-SPEnterpriseSearchQueryKeyword
Get-SPEnterpriseSearchQueryScope
Get-SPEnterpriseSearchQueryScopeRule
Get-SPEnterpriseSearchQuerySuggestionCandidates
Get-SPEnterpriseSearchQueryTopology
Get-SPEnterpriseSearchRankingModel
Get-SPEnterpriseSearchSecurityTrimmer
Get-SPEnterpriseSearchService
Get-SPEnterpriseSearchServiceApplication
Get-SPEnterpriseSearchServiceApplicationProxy
Get-SPEnterpriseSearchServiceInstance
Get-SPEnterpriseSearchSiteHitRule
Get-SPExcelBlockedFileType
Get-SPExcelDataConnectionLibrary
Get-SPExcelDataProvider
Get-SPExcelFileLocation
Get-SPExcelServiceApplication
Get-SPExcelUserDefinedFunction
Get-SPFarm
Get-SPFarmConfig
Get-SPFeature
Get-SPHelpCollection
Get-SPInfoPathFormsService
Get-SPInfoPathFormTemplate
Get-SPInfoPathUserAgent
Get-SPInfoPathWebServiceProxy
Get-SPLogEvent
Get-SPLogLevel
Get-SPManagedAccount
Get-SPManagedPath
Get-SPMetadataServiceApplication
Get-SPMetadataServiceApplicationProxy
Get-SPMobileMessagingAccount
Get-SPPerformancePointSecureDataValues
Get-SPPerformancePointServiceApplication
Get-SPPerformancePointServiceApplicationTrustedLocation
Get-SPPluggableSecurityTrimmer
Get-SPProcessAccount
Get-SPProduct
Get-SPProfileServiceApplicationSecurity
Get-SPSearchService
Get-SPSearchServiceInstance
Get-SPSecureStoreApplication
Get-SPSecurityTokenServiceConfig
Get-SPServer
Get-SPServiceApplication
Get-SPServiceApplicationEndpoint
Get-SPServiceApplicationPool
Get-SPServiceApplicationProxy
Get-SPServiceApplicationProxyGroup
Get-SPServiceApplicationSecurity
Get-SPServiceContext
Get-SPServiceHostConfig
Get-SPServiceInstance
Get-SPSessionStateService
Get-SPShellAdmin
Get-SPSite
Get-SPSiteAdministration
Get-SPSiteSubscription
Get-SPSiteSubscriptionConfig
Get-SPSiteSubscriptionEdiscoveryHub
Get-SPSiteSubscriptionEdiscoverySearchScope
Get-SPSiteSubscriptionFeaturePack
Get-SPSiteSubscriptionMetadataConfig
Get-SPSolution
Get-SPStateServiceApplication
Get-SPStateServiceApplicationProxy
Get-SPStateServiceDatabase
Get-SPTaxonomySession
Get-SPTimerJob
Get-SPTopologyServiceApplication
Get-SPTopologyServiceApplicationProxy
Get-SPTrustedIdentityTokenIssuer
Get-SPTrustedRootAuthority
Get-SPTrustedServiceTokenIssuer
Get-SPUsageApplication
Get-SPUsageDefinition
Get-SPUsageService
Get-SPUser
Get-SPUserSolution
Get-SPVisioExternalData
Get-SPVisioPerformance
Get-SPVisioSafeDataProvider
Get-SPVisioServiceApplication
Get-SPVisioServiceApplicationProxy
Get-SPWeb
Get-SPWebAnalyticsServiceApplication
Get-SPWebAnalyticsServiceApplicationProxy
Get-SPWebApplication
Get-SPWebApplicationHttpThrottlingMonitor
Get-SPWebPartPack
Get-SPWebTemplate
Get-SPWorkflowConfig
Grant-SPBusinessDataCatalogMetadataObject
Grant-SPObjectSecurity
Import-SPBusinessDataCatalogDotNetAssembly
Import-SPBusinessDataCatalogModel
Import-SPEnterpriseSearchTopology
Import-SPInfoPathAdministrationFiles
Import-SPMetadataWebServicePartitionData
Import-SPSiteSubscriptionBusinessDataCatalogConfig
Import-SPSiteSubscriptionSettings
Import-SPWeb
Initialize-SPResourceSecurity
Initialize-SPStateServiceDatabase
Install-SPApplicationContent
Install-SPDataConnectionFile
Install-SPFeature
Install-SPHelpCollection
Install-SPInfoPathFormTemplate
Install-SPService
Install-SPSolution
Install-SPUserSolution
Install-SPWebPartPack
Install-SPWebTemplate
Merge-SPLogFile
Mount-SPContentDatabase
Mount-SPStateServiceDatabase
Move-SPBlobStorageLocation
Move-SPProfileManagedMetadataProperty
Move-SPSite
Move-SPUser
New-SPAccessServiceApplication
New-SPAlternateURL
New-SPAuthenticationProvider
New-SPBusinessDataCatalogServiceApplication
New-SPBusinessDataCatalogServiceApplicationProxy
New-SPCentralAdministration
New-SPClaimProvider
New-SPClaimsPrincipal
New-SPClaimTypeMapping
New-SPConfigurationDatabase
New-SPContentDatabase
New-SPContentDeploymentJob
New-SPContentDeploymentPath
New-SPEnterpriseSearchCrawlComponent
New-SPEnterpriseSearchCrawlContentSource
New-SPEnterpriseSearchCrawlCustomConnector
New-SPEnterpriseSearchCrawlDatabase
New-SPEnterpriseSearchCrawlExtension
New-SPEnterpriseSearchCrawlMapping
New-SPEnterpriseSearchCrawlRule
New-SPEnterpriseSearchCrawlTopology
New-SPEnterpriseSearchExtendedConnectorProperty
New-SPEnterpriseSearchLanguageResourcePhrase
New-SPEnterpriseSearchMetadataCategory
New-SPEnterpriseSearchMetadataCrawledProperty
New-SPEnterpriseSearchMetadataManagedProperty
New-SPEnterpriseSearchMetadataMapping
New-SPEnterpriseSearchPropertyDatabase
New-SPEnterpriseSearchQueryAuthority
New-SPEnterpriseSearchQueryComponent
New-SPEnterpriseSearchQueryDemoted
New-SPEnterpriseSearchQueryKeyword
New-SPEnterpriseSearchQueryScope
New-SPEnterpriseSearchQueryScopeRule
New-SPEnterpriseSearchQueryTopology
New-SPEnterpriseSearchRankingModel
New-SPEnterpriseSearchSecurityTrimmer
New-SPEnterpriseSearchServiceApplication
New-SPEnterpriseSearchServiceApplicationProxy
New-SPEnterpriseSearchSiteHitRule
New-SPExcelBlockedFileType
New-SPExcelDataConnectionLibrary
New-SPExcelDataProvider
New-SPExcelFileLocation
New-SPExcelServiceApplication
New-SPExcelUserDefinedFunction
New-SPLogFile
New-SPManagedAccount
New-SPManagedPath
New-SPMetadataServiceApplication
New-SPMetadataServiceApplicationProxy
New-SPPerformancePointServiceApplication
New-SPPerformancePointServiceApplicationProxy
New-SPPerformancePointServiceApplicationTrustedLocation
New-SPProfileServiceApplication
New-SPProfileServiceApplicationProxy
New-SPSecureStoreApplication
New-SPSecureStoreApplicationField
New-SPSecureStoreServiceApplication
New-SPSecureStoreServiceApplicationProxy
New-SPSecureStoreTargetApplication
New-SPServiceApplicationPool
New-SPServiceApplicationProxyGroup
New-SPSite
New-SPSiteSubscription
New-SPSiteSubscriptionFeaturePack
New-SPStateServiceApplication
New-SPStateServiceApplicationProxy
New-SPStateServiceDatabase
New-SPSubscriptionSettingsServiceApplication
New-SPSubscriptionSettingsServiceApplicationProxy
New-SPTrustedIdentityTokenIssuer
New-SPTrustedRootAuthority
New-SPTrustedServiceTokenIssuer
New-SPUsageApplication
New-SPUsageLogFile
New-SPUser
New-SPVisioSafeDataProvider
New-SPVisioServiceApplication
New-SPVisioServiceApplicationProxy
New-SPWeb
New-SPWebAnalyticsServiceApplication
New-SPWebAnalyticsServiceApplicationProxy
New-SPWebApplication
New-SPWebApplicationExtension
New-SPWordConversionServiceApplication
Ping-SPEnterpriseSearchContentService
Publish-SPServiceApplication
Receive-SPServiceApplicationConnectionInfo
Remove-SPAlternateURL
Remove-SPBusinessDataCatalogModel
Remove-SPClaimProvider
Remove-SPClaimTypeMapping
Remove-SPConfigurationDatabase
Remove-SPContentDatabase
Remove-SPContentDeploymentJob
Remove-SPContentDeploymentPath
Remove-SPDiagnosticsPerformanceCounter
Remove-SPEnterpriseSearchCrawlComponent
Remove-SPEnterpriseSearchCrawlContentSource
Remove-SPEnterpriseSearchCrawlCustomConnector
Remove-SPEnterpriseSearchCrawlDatabase
Remove-SPEnterpriseSearchCrawlExtension
Remove-SPEnterpriseSearchCrawlMapping
Remove-SPEnterpriseSearchCrawlRule
Remove-SPEnterpriseSearchCrawlTopology
Remove-SPEnterpriseSearchExtendedConnectorProperty
Remove-SPEnterpriseSearchLanguageResourcePhrase
Remove-SPEnterpriseSearchMetadataCategory
Remove-SPEnterpriseSearchMetadataManagedProperty
Remove-SPEnterpriseSearchMetadataMapping
Remove-SPEnterpriseSearchPropertyDatabase
Remove-SPEnterpriseSearchQueryAuthority
Remove-SPEnterpriseSearchQueryComponent
Remove-SPEnterpriseSearchQueryDemoted
Remove-SPEnterpriseSearchQueryKeyword
Remove-SPEnterpriseSearchQueryScope
Remove-SPEnterpriseSearchQueryScopeRule
Remove-SPEnterpriseSearchQueryTopology
Remove-SPEnterpriseSearchRankingModel
Remove-SPEnterpriseSearchSecurityTrimmer
Remove-SPEnterpriseSearchServiceApplication
Remove-SPEnterpriseSearchServiceApplicationProxy
Remove-SPEnterpriseSearchSiteHitRule
Remove-SPExcelBlockedFileType
Remove-SPExcelDataConnectionLibrary
Remove-SPExcelDataProvider
Remove-SPExcelFileLocation
Remove-SPExcelUserDefinedFunction
Remove-SPInfoPathUserAgent
Remove-SPManagedAccount
Remove-SPManagedPath
Remove-SPPerformancePointServiceApplication
Remove-SPPerformancePointServiceApplicationProxy
Remove-SPPerformancePointServiceApplicationTrustedLocation
Remove-SPPluggableSecurityTrimmer
Remove-SPSecureStoreApplication
Remove-SPServiceApplication
Remove-SPServiceApplicationPool
Remove-SPServiceApplicationProxy
Remove-SPServiceApplicationProxyGroup
Remove-SPServiceApplicationProxyGroupMember
Remove-SPShellAdmin
Remove-SPSite
Remove-SPSiteSubscription
Remove-SPSiteSubscriptionBusinessDataCatalogConfig
Remove-SPSiteSubscriptionFeaturePack
Remove-SPSiteSubscriptionFeaturePackMember
Remove-SPSiteSubscriptionMetadataConfig
Remove-SPSiteSubscriptionProfileConfig
Remove-SPSiteSubscriptionSettings
Remove-SPSocialItemByDate
Remove-SPSolution
Remove-SPSolutionDeploymentLock
Remove-SPStateServiceDatabase
Remove-SPTrustedIdentityTokenIssuer
Remove-SPTrustedRootAuthority
Remove-SPTrustedServiceTokenIssuer
Remove-SPUsageApplication
Remove-SPUser
Remove-SPUserSolution
Remove-SPVisioSafeDataProvider
Remove-SPWeb
Remove-SPWebApplication
Remove-SPWordConversionServiceJobHistory
Rename-SPServer
Repair-SPManagedAccountDeployment
Restart-SPEnterpriseSearchQueryComponent
Restore-SPEnterpriseSearchServiceApplication
Restore-SPFarm
Restore-SPSite
Resume-SPEnterpriseSearchServiceApplication
Resume-SPStateServiceDatabase
Revoke-SPBusinessDataCatalogMetadataObject
Revoke-SPObjectSecurity
Set-SPAccessServiceApplication
Set-SPAlternateURL
Set-SPBrowserCustomerExperienceImprovementProgram
Set-SPBusinessDataCatalogMetadataObject
Set-SPBusinessDataCatalogServiceApplication
Set-SPBusinessDataCatalogThrottleConfig
Set-SPCentralAdministration
Set-SPClaimProvider
Set-SPContentDatabase
Set-SPContentDeploymentJob
Set-SPContentDeploymentPath
Set-SPCustomLayoutsPage
Set-SPDataConnectionFile
Set-SPDesignerSettings
Set-SPDiagnosticConfig
Set-SPDiagnosticsProvider
Set-SPEnterpriseSearchAdministrationComponent
Set-SPEnterpriseSearchCrawlContentSource
Set-SPEnterpriseSearchCrawlDatabase
Set-SPEnterpriseSearchCrawlRule
Set-SPEnterpriseSearchCrawlTopology
Set-SPEnterpriseSearchExtendedConnectorProperty
Set-SPEnterpriseSearchExtendedQueryProperty
Set-SPEnterpriseSearchIndexPartition
Set-SPEnterpriseSearchMetadataCategory
Set-SPEnterpriseSearchMetadataCrawledProperty
Set-SPEnterpriseSearchMetadataManagedProperty
Set-SPEnterpriseSearchMetadataMapping
Set-SPEnterpriseSearchPropertyDatabase
Set-SPEnterpriseSearchQueryAuthority
Set-SPEnterpriseSearchQueryComponent
Set-SPEnterpriseSearchQueryKeyword
Set-SPEnterpriseSearchQueryScope
Set-SPEnterpriseSearchQueryScopeRule
Set-SPEnterpriseSearchQueryTopology
Set-SPEnterpriseSearchRankingModel
Set-SPEnterpriseSearchService
Set-SPEnterpriseSearchServiceApplication
Set-SPEnterpriseSearchServiceApplicationProxy
Set-SPEnterpriseSearchServiceInstance
Set-SPExcelDataConnectionLibrary
Set-SPExcelDataProvider
Set-SPExcelFileLocation
Set-SPExcelServiceApplication
Set-SPExcelUserDefinedFunction
Set-SPFarmConfig
Set-SPInfoPathFormsService
Set-SPInfoPathFormTemplate
Set-SPInfoPathWebServiceProxy
Set-SPLogLevel
Set-SPManagedAccount
Set-SPMetadataServiceApplication
Set-SPMetadataServiceApplicationProxy
Set-SPMobileMessagingAccount
Set-SPPassPhrase
Set-SPPerformancePointSecureDataValues
Set-SPPerformancePointServiceApplication
Set-SPProfileServiceApplication
Set-SPProfileServiceApplicationProxy
Set-SPProfileServiceApplicationSecurity
Set-SPSearchService
Set-SPSearchServiceInstance
Set-SPSecureStoreApplication
Set-SPSecureStoreDefaultProvider
Set-SPSecureStoreServiceApplication
Set-SPSecurityTokenServiceConfig
Set-SPServiceApplication
Set-SPServiceApplicationEndpoint
Set-SPServiceApplicationPool
Set-SPServiceApplicationSecurity
Set-SPServiceHostConfig
Set-SPSessionStateService
Set-SPSite
Set-SPSiteAdministration
Set-SPSiteSubscriptionConfig
Set-SPSiteSubscriptionEdiscoveryHub
Set-SPSiteSubscriptionMetadataConfig
Set-SPSiteSubscriptionProfileConfig
Set-SPStateServiceApplication
Set-SPStateServiceApplicationProxy
Set-SPStateServiceDatabase
Set-SPSubscriptionSettingsServiceApplication
Set-SPTimerJob
Set-SPTopologyServiceApplication
Set-SPTopologyServiceApplicationProxy
Set-SPTrustedIdentityTokenIssuer
Set-SPTrustedRootAuthority
Set-SPTrustedServiceTokenIssuer
Set-SPUsageApplication
Set-SPUsageDefinition
Set-SPUsageService
Set-SPUser
Set-SPVisioExternalData
Set-SPVisioPerformance
Set-SPVisioSafeDataProvider
Set-SPVisioServiceApplication
Set-SPWeb
Set-SPWebAnalyticsServiceApplication
Set-SPWebAnalyticsServiceApplicationProxy
Set-SPWebApplication
Set-SPWebApplicationHttpThrottlingMonitor
Set-SPWebTemplate
Set-SPWordConversionServiceApplication
Set-SPWorkflowConfig
Start-SPAdminJob
Start-SPAssignment
Start-SPContentDeploymentJob
Start-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance
Start-SPEnterpriseSearchServiceInstance
Start-SPInfoPathFormTemplate
Start-SPServiceInstance
Start-SPTimerJob
Stop-SPAssignment
Stop-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance
Stop-SPEnterpriseSearchServiceInstance
Stop-SPInfoPathFormTemplate
Stop-SPServiceInstance
Suspend-SPEnterpriseSearchServiceApplication
Suspend-SPStateServiceDatabase
Test-SPContentDatabase
Test-SPInfoPathFormTemplate
Uninstall-SPDataConnectionFile
Uninstall-SPFeature
Uninstall-SPHelpCollection
Uninstall-SPInfoPathFormTemplate
Uninstall-SPSolution
Uninstall-SPUserSolution
Uninstall-SPWebPartPack
Uninstall-SPWebTemplate
Unpublish-SPServiceApplication
Update-SPFarmEncryptionKey
Update-SPInfoPathAdminFileUrl
Update-SPInfoPathFormTemplate
Update-SPInfoPathUserFileUrl
Update-SPProfilePhotoStore
Update-SPSecureStoreApplicationServerKey
Update-SPSecureStoreCredentialMapping
Update-SPSecureStoreGroupCredentialMapping
Update-SPSecureStoreMasterKey
Update-SPSolution
Update-SPUserSolution
Upgrade-SPContentDatabase
Upgrade-SPEnterpriseSearchServiceApplication
Upgrade-SPSingleSignOnDatabase

SharePoint 2010 – Multi Tenancy Support – Part 1


SharePoint 2010 has a built-in support for multi tenancy. At the core multi tenancy requires isolation of data, operational services and management. All these are handled by Subscription Id. Each Subscription Id can refer to a tenant. Also these ids are used for partitioning of the content data used by each tenant. The same id is used by service applications to track usage which internally helps on Reporting, Auditing and Chargeback.

Below is a sample diagram I tried to create to provide high level overview of the components in SharePoint 2010.

 

image

Subscription Ids are GUID to which multiple site collections can be assigned. Once a site collection is assigned to a subscription id, it can not be removed. It is recommended that all the site collections belonging to a single tenant is maintained in a single WFE (web front end) and content database. This will ensure the easier maintenance of the service application usage by an individual tenant.

Using Subscription Id requires ‘Microsoft SharePoint Foundation Subscription Settings Service Application’ to be enabled. I couldn’t see this service in my service application listing under Central Administration.

Below are the steps to enable this service:

#1: Add a managed account for ‘Microsoft SharePoint Foundation Subscription Settings Service Application’. Create a windows account called ‘SPMTServices’. Go to Central Administration –> Security –> General Security –> Configure managed accounts.

image

image

Now we need to run the PowerShell command to enable the ‘Microsoft SharePoint Foundation Subscription Settings Service Application’.

image

And run the below command.

**************************************************************************************************

Get-SPServiceInstance | where{$_.GetType().Name -eq "SPSubscriptionSettingsServiceInstance"} | Start-SPServiceInstance

$acc = Get-SPManagedAccount  "<<DomainOrCompName>>\SPMTServices"
$appPool = New-SPServiceApplicationPool -Name SPMTSettingsServiceAppPool -Account $acc

$app = New-SPSubscriptionSettingsServiceApplication –ApplicationPool $appPool –Name SPMTSettingsServiceApp –DatabaseName SPMTSettingsServiceDB
$proxy = New-SPSubscriptionSettingsServiceApplicationProxy –ServiceApplication $app

**************************************************************************************************

*Note: We need to run the powershell as ‘Run As Administrator’.

Now we can see the service application available in the listing screen.

image

Next we will see how to create subscription ids, how to assign site collection to subscription ids and how to create tenant admin for each subscription ids.

jQuery UI: Clear option for Date Control


It was really strange to see that the Date Control in jQuery doesn’t support Clear Date option. There are a lot of business case where this functionality is needed and the same is happened with me too.

After looking at internet I found many people having the same problem and trying different ways to handle it. However I couldn’t found a neat and clean way of doing it so thought of coming out with my own option.

So, here we go about it. jQuery UI Date Control allows to enable the Button Panel which has Today and Done button by default and we can override the text for each of these buttons. After reviewing my requirement I decided that Done button is of no use to us so we decided to use this button for our purpose.

Step 1: Enable the button panel for the date control which can be done by ‘showButtonPanel: true’.

Step 2: Change the label of the Done button which can be done by closeText: ‘Clear’.

Now we needed to select the event where we can clear the date in the text box and the only even available was ‘onClose’. However we need to very careful as this event will get called in multiple ways (along with clicking of Done button) where Date Picker window gets closed.

After doing further research we found that the jQuery UI assigns the class ‘ui-datepicker-close’ to this button. So the trick is to find the source object which resulted into this event and check if that object has the class ‘ui-datepicker-close’ then simply clear the content of the text box.

Sample Code:

   1:  $("#datePickerId").datepicker({
   2:      showButtonPanel: true,
   3:      closeText: 'Clear',
   4:      onClose: function (dateText, inst) {
   5:          if ($(window.event.srcElement).hasClass('ui-datepicker-close'))
   6:              $("#datePickerId").val('');
   7:          }
   8:  });

Hope people will find it useful. Also please let me know if this will fail in any case or if anything important is missed out.

Happy Coding and Enjoy!!!

Posted in jQuery. 2 Comments »
Follow

Get every new post delivered to your Inbox.

Join 55 other followers