When Creating an Office 365 SharePoint site, you might want to turn on custom Scripting.

Steps here: https://support.office.microsoft.com/en-us/article/Turn-scripting-capabilities-on-or-off-1f2c515f-5d7e-448a-9fd7-835da935584f?CorrelationId=365c212d-8b7e-45b9-b285-84416dd95952&ui=en-US&rs=en-US&ad=US


With Custom Scripts turned off you might experience some weird behavior like:

  • Content Types and Site Columns Galleries are not showing up in the Site Actions menu.
  • When Mapping a SharePoint Library to a local drive, you might get Access denied errors when trying to upload files.
  • CEWP and Script editor web part might be missing from the Web parts list when editing a page.



Here is a simple script to create the site structure for SharePoint Online based on a csv file.

The script is using the Client-side SharePoint PowerShell project from Codeplex (https://sharepointpowershell.codeplex.com/ ).


In order to create the site structure just fill the csv file of the following format

Subsite1, SubSite1, STS#0, Name1, 1033
SubSite1/Subsite11, Name11, STS#0, Description, 1033
SubSite1/Subsite11/Subsite1111, Name3, STS#0, Description, 1033


And then use the following script


Import-Module "$PSScriptRoot\spps.psm1"
Import-Module "$PSScriptRoot\spps.subsites.psm1"
Import-Module "$PSScriptRoot\ConfigCredentials.ps1"

Initialize-SPPS -siteURL $O365SiteUrl -isOnline $true -onlineusername $username -onlinepassword $password

Import-Csv $PSScriptRoot\SiteStructure.csv  | ForEach-Object{

    $name = $_.Name
    $template = $_.Template
    $description = $_.Description
    $lang = $_.Language
    Write-Host "Processing " $name " "  $_.Url
    $relUrl = ""   
    foreach($subsite in $_.Url -split "/")
        $relUrl += "/"+ $subsite
            Open-Subsite -relativeUrl $relUrl
            Write-Host "Site" [$relUrl] "Already exists"
            Write-Host "Trying to create" $subsite
            Add-Subsite -title $name -url $subsite -webTemplate $template -language $lang -description $description
    Write-Host " ———————– "


Note, the Script ConfigCredentials.ps1 is used to store the Site Url and the credentials as follows

$O365SiteUrl = “https://url_here
$username = username@domain.com
$password = "password"


Note: to make sure the script behaves as expected, make sure that the hierarchy in the csv file is in order. i.e.


in other words do no list the sub site before its parent site.

https://oauth.io/ offers a Client Side OAuth solution that can be used with JavaScript.

It can be used for the new Twitter API with no server code.

$webAppName = “Contoso Internet Site XYZ”
$webAppUrl = “http://www.contoso.com”
$webAppPort = 80
$webAppHostHeader = “sharepoint.contoso.com”
$membershipProviderName = “OAMMembershipProvider”
$roleProviderName = “OAMRoleProvider”
$appPoolName = “ContosoAppPool”
$contentDBName = “Contoso”
$appPoolUser =  “DE\sp_AppPool”

Write-Host “Deleting Web application $webApp if it exists…”
Remove-SPWebApplication -Identity $webAppUrl -Confirm:$false -Verbose -DeleteIISSite:$true -RemoveContentDatabases:$true -ErrorAction SilentlyContinue

$formsAuthProvider = New-SPAuthenticationProvider -ASPNETMembershipProvider $membershipProviderName -ASPNETRoleProviderName $roleProviderName
$windowsAuthProvider = New-SPAuthenticationProvider
$AuthProvidersArray = $formsAuthProvider, $windowsAuthProvider

New-SPWebApplication -Name $webAppName -Port $webAppPort -HostHeader $webAppHostHeader -URL $webAppUrl -ApplicationPool $appPoolName -ApplicationPoolAccount (Get-SPManagedAccount $appPoolUser) -AllowAnonymousAccess -AuthenticationProvider $AuthProvidersArray -AuthenticationMethod NTLM -Verbose -DatabaseName $contentDBName  -ErrorVariable $ev
if($ev -ne $null)
    Write-Host “Web Application $webApp created successfully”

$webApp = get-SPWebApplication $webAppUrl
$webApp.UseClaimsAuthentication = $true
Write-Host “Updated Web application to use claims based authentication for $webApp..”

For some reason if you set the Properties Hashtable of the File added as (“Title”, “TitleValue”), sharePoint just ignores it.


The Trick is to set the Title using (“vti_title”, “TitleValue”)

when developing a custom SPD 2010 workflow activity using Visual Studio , sometimes you can get an error saying “"Cannot find property named PROPERTYNAME on activity type ACTIVITYNAME" when trying to assign a parameter to a workflow activity. This can especially occur if the parameter is newly added to the activity (I.e. your previous version of the activity did not have this parameter or  it had it with a different name.

a solution might be to close the SPD and clear the cache at:

Windows 7:
Delete all the files and folders in this folder

C:\Users\<username>\AppData\Roaming\Microsoft\SharePoint Designer
Delete all the files and folders in this folder


Reference: http://social.technet.microsoft.com/Forums/el-GR/sharepoint2010customization/thread/df776261-17d3-4771-88bb-572cf7b1df5d

For some reason when creating a custom ribbon action with Visual studio it seems that no matter what you do, the ribbon button or action are never updated.

The Solution that worked for me is

1) retract the solution

2) delete the feature from the Visual studio project

3) Create a new feature in the visual studio project and add the custom ribbon action

4) deploy the new feature.