The default termstore for this site cannot be identified

I got this error when I was trying to create a Site Column using the SharePoint user interface. Instead of leaving the default value for Term Set Settings at Use a managed term set I selected the option Customize your term set. Immediately I got a pop-up stating “The default term store for this site cannot be identified”. Here is a screenshot of the message:

image

The reason behind the pop-up is that when the option Customize your term set is selected a so called local term set or also called site collection term set is created. However if there isn’t a Managed Metadata Service Application designated as the default storage location for column specific term sets SharePoint simply doesn’t know where to create the term set and returns the above showed pop-up. Here is how you can set default storage location for column specific term sets:

  1. Open Central Administration
  2. Under Application Management click on Manage service applications
  3. Select the (don’t click it) Managed Metadata Service Connection
  4. Select Properties from the top ribbon, a dialogue will appear: image[4]
  5. Check the radio button for This service application is the default storage location for column specific term sets
  6. Click OK and now you can customize a term set for a new column, just make sure re-open the Create column page first.

Invalid partition table! message on startup using Dell Precision M4800

I ran into this issue when my laptop had a broken internal monitor cable and a dell mechanic came by to replace it. I am still unsure how the cable had anything to do with this error since the mechanic did not change any BIOS settings. But after the repair I got Invalid partition table! every time I booted up my laptop. There was nothing wrong with the laptop or the system configuration since pressing enter (no option to press enter was stated on the screen but the laptop still responded to it) would resume booting and the machine continued to work as intended. After a while I got fed up with pressing an additional key to boot the machine. So some digging on the internet and voila the issue is gone, here are the steps:

  1. Go to the BIOS settings (press del or F2 key on boot)
  2. Under General click on Boot Sequence
  3. On the right side in the boot order, make sure that Internal HDD is above MiniCard SSD
  4. Click Apply to save the changes and you are done!
It turns out that this issue is caused by windows, it installs the boot manager to Disk 0 Active Partition even if you don’t boot from it.

.NET Framework 3.5 installation error: 0x800F0906, 0x800F081F, 0x800F0907

A while ago I got a new laptop, since I like to start clean I decided to start from a fresh installation. After installing a clean Windows 10 image I started installing my usual software, one of which requires .NET Framework 3.5. So I downloaded the installer, during the first step I ran into the following error:

Quick Google reveals that Microsoft has this KB article to fix this. This article provides three methods for solving this is (there is also a method 4 but its aimed at windows server):

  • Method 1: Check your internet connection
  • Method 2: Configure the Group Policy setting
  • Method 3: Use Windows installation media

I tried all above mentioned methods but none yielded any results. Eventually I have found a solutions which is a alteration of the third method described in the concerning KB article. Since it took me a lot of forum dumpster diving and there are lots of other solutions that worked for others I wanted to share the method that worked for me to save some people some trouble.

  1. First make sure you have an installation media of a Windows 10 ready.
  2. Open it and navigate to the \sources\sxs folder on the Windows 10 installation media. It should contain a cab file named microsoft-windows-netfx3-ondemand-package.cab
  3. Open a command promt window in Administrator mode and type the following command: dism /online /add-package /packagepath:[YOUR CAB FILE LOCATION]\microsoft-windows-netfx3-ondemand-package.cab
  4. Make sure to replace the [YOUR CAB FILE LOCATION] with your own location, in my case the full command is as follows: dism /online /add-package /packagepath:E:\sources\sxs\microsoft-windows-netfx3-ondemand-package.cab

SOURCE

Modifying NewForm.aspx, EditForm.aspx and DispForm.aspx for lists and libraries

In case you need to add additional webparts to the NewForm,aspx, EditForm.aspx or DispForm.aspx, this is how its done for SharePoint 2007, 2010 and 2013.

In SharePoint 2010 and 2013 its easily achieved from the ribbon. Just click on the Form Web Parts button and select the form you need to modify as show in the next screenshots:

SharePoint 2010:

image

SharePoint 2013:

image

SharePoint 2007:

Unfortunately SharePoint 2007 does not have the ribbon functionality and thus the the buttons. But this isn't an issue, since these forms are not opened as pop-ups we can modify the URL to enable the edit mode. This can be done adding “toolpaneview=2” after the URL like this:

  • /Lists/DevList/AllItems.aspx?toolpaneview=2
  • /Lists/DevList/EditForm.aspx?ID=1&toolpaneview=2
  • /Lists/DevList/NewForm.aspx?&toolpaneview=2

In practice the URL’s might look a bit different due to other query string components, this is how it looks when I do this for the EditForm.aspx of a document library. If you add toolpaneview=2 at the end of a a URL already containing some query string componenents make sure to add the & so it will look like this:

image

If your URL is clean and does not contain any query string components make sure you add a question mark ? in between (if its not already present). For example you need to modify the Allitems.aspx:

image

Stopping and starting the SharePoint Timer Service remotely for the whole farm

Recently I needed to support some maintenance tasks at one of our clients. The required for the SharePoint timer service to be stopped and started multiple times on all SharePoint servers within the farm. Instead of logging on to each server and doing this manually I decided to write a PowerShell script to do so, here is the result.

# Load SharePoint Snapin
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) 
{
    Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}

# Get all valid servers in farm
$AppServers = Get-SPServer | where {$_.Role -ne "Invalid"}

# Name of service to stop
$ServiceName = "SPTimerV4"

# Iterate all servers
foreach($Server in $AppServers) 
{

    # Get the service object
    $service = Get-Service -Computer $Server.Name -Name $ServiceName
    switch($service.Status)
    {
        "Running"{
	    # Service is Runnig, stop it!		 
            Write-Host -ForegroundColor "Yellow" "Stopping" $service.Name "on server" $Server.Name	
            Stop-Service -InputObject $service
            
            if($service.Status -eq "Stopped"){
                Write-Host -ForegroundColor "Green" "Service stopped!"
            }
        }
        
        "Stopped"{
	    # Service is Stopped, start it!	
            Write-Host -ForegroundColor "Yellow" "Starting " $service.Name "on server " $Server.Name	
            Start-Service -InputObject $service
            
            if($service.Status -eq "Running"){
                Write-Host -ForegroundColor "Green" "Service started!"
            }
        }
        
        default{
	    # Catch unknown service state, like Stoppig or starting
            Write-Host -ForegroundColor "Red" "On server " $Server.Name "Unable to start or stop service please check the service manually!!" 
        
        }
    }
}
Write-Host -ForegroundColor "Green" "All Done!"

Stop_Start_SPTimerService_In_Farm.ps1 (2.04 kb)

Send To connection fails to send files larger then 50 MB

I ran into this issue at one of our clients where a document management is in place using SharePoint 2010. As an extension to document management solution they use a record center as their archive. Documents are send to the record center using a Send To connection. In this case all the files where being sent also arrived, well almost all. I turned out that we had 3 files “stuck”. So I dove into the ULS log and with some digging the following 2 errors came up:

09/4/2014 12:26:59.85 w3wp.exe (0x4700) 0x2408 SharePoint Foundation General f855 Monitorable OfficialFile::SubmitFile: Encountered error when sending file http://server/sites/sitename/Library/FileName.pdf to http://server/sites/sitename/_vti_bin/OfficialFile.asmx: There was an exception running the extensions specified in the config file. —> Maximum request length exceeded

09/4/2012 12:26:59.85 w3wp.exe (0x4700) 0x2408 SharePoint Foundation General 7022 Critical The http://server/sites/sitename/_vti_bin/OfficialFile.asmx site is not properly configured for this request.

After digging on the interwebz in became clear that by default the OfficialFile.asmx websevice (http://<server>/<site>/_vti_bin/OfficialFile.asmx) has a maximum upload size limit of 50mb and it is not adjusted when changing the the limit on the web application. In the case I was researching the files where around 100mb and the web application limit was set to 200mb for both the document center and the record center. Reason for not updating the webservice is that it is a farm wide webservice and thus not specific to a web application. It has it own web.config and resides in the 14 root (C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\OfficialFile.asmx), not the web application virtual directory.

To fix the issue you need to do the following steps on each server in the farm that is acting as a front-end:

  1. Navigate to C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI
  2. Locate the web.config
  3. Add the following section, then save the file.

<location path=″OfficialFile.asmx″>
    <system.web>
        <httpRuntime maxRequestLength=″2097151″ executionTimeout=″240″ />
    </system.web>
</location>

 

NOTE: The webservice is Base64 encoded meaning that when a file is uploaded it will increase in size  by approximately 30% so if your web application maximum upload size is 200 MB you will need to set the maximum upload size of the webservice to 260 MB which is 266240 in kilobytes.

image

Perflib errors for WmiApRpl and BITS after SharePoint 2013 installation

After a clean installation of SharePoint 2013 SP1 on a Windows server 2012 the following 2 errors (both Event ID 1008) started to appear quite regularly, I have been searching for quite some time how what was causing these.

BITS

  • The Open Procedure for service "BITS" in DLL "C:\Windows\System32\bitsperf.dll" failed. Performance data for this service will not be available. The first four bytes (DWORD) of the Data section contains the error code.

BITS

WmiApRpl

  • The Open Procedure for service "WmiApRpl" in DLL "C:\Windows\system32\wbem\wmiaprpl.dll" failed. Performance data for this service will not be available. The first four bytes (DWORD) of the Data section contains the error code.

WmiApRpl

So after an intensive internet search it turns out that as described in THIS post it’s a registry permission issue. The WSS_WPG group is missing permissions on the two Current Control Set Services keys. Here is how to fix this:

Navigate to the following two registry locations:

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BITS\Performance
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WmiApRpl\Performance

Now grant Read permissions to WSS_WPG group on each of the above keys and you should be done with big thanks to Wesley Bakker!

Flush Web Application BLOB cache

Simple script to do so:

$webApp = Get-SPWebApplication "WebApplicationURL"
[Microsoft.SharePoint.Publishing.PublishingCache]::FlushBlobCache($webApp) 
Write-Host "Flushed the BLOB cache for:" $webApp

This helped us with flushing corrupted images from the cash, since they showed up as big red X on the webpage.

Disable the “Do you want to open or save this file?” notification

Recently we have configured SharePoint 2010 to automatically open pdf files directly without saving and since this happens for word document out of the box we assumed that we finalized the request from one of our clients.

Well it turns out that this was not the case for .msg files, even if you have set your web application settings to permissive the users will always be prompted with the following question:

save_email

To hide it you will need to tweak the registry setting as follows:

The following steps are for Outlook 2013, if you want to use them for a different application you will need to find its registry value, how to do so is explained further on.

Disabling the message for Outlook 2013:

  1. Launch Registry Editor (regedit.exe)
  2. Expand HKEY_CURRENT_USER
  3. Navigate to HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell
  4. If it doesn’t exist, create the AttachmentExecute key
  5. Create the {0002DF01-0000-0000-C000-000000000046} key
  6. Create a new Binary Value with the Name Outlook.File.msg.15
  7. Close IE and reopen it, the .msg file should now open directly.

How to find the right registry value for your extension:

  1. Launch Registry Editor (regedit.exe).
  2. Expand HKEY_CLASSES_ROOT.
  3. Inside it find the extension of the file you want to automatically open.
  4. Click the extension folder (e.g. .msg).
  5. The value you need is in the Data column of the (Default) row.
  6. Follow step 1-7 as mentioned above.

Source

Add a custom permission level to all site collections within a web application using PowerShell

This script iterates all the site collections present under $url and adds the permission specified.

$url = "http://lol"
   $permissionName = "My Permission Name"
   $permissionDescription = "My Permission description"


   Get-SPWebApplication $url | Get-SPSite | ForEach-Object{
   $spRoleDefinition = New-Object Microsoft.SharePoint.SPRoleDefinition
   $spRoleDefinition.Name = $permissionName
   $spRoleDefinition.Description = $permissionDescription

   $spRoleDefinition.BasePermissions = "ViewListItems, ViewFormPages"
   $_.RootWeb.RoleDefinitions.Add($spRoleDefinition)
   Write-Host -foregroundcolor green $_.RootWeb.Title - Permission added!
} 

You can get all of the values for BasePermissions by running the script below, the description of each of the permissions can be found HERE

[System.Enum]::GetNames("Microsoft.SharePoint.SPBasePermissions")