How complicated was to land the Curiosity rover on Mars?

I prefer simple solutions, but I also like complex setups.
In a complex setup I think the key is to tie carefully all the sub-components and make sure you cover all the scenarios (especially the exception scenarios).


Recently NASA announced they will improve the decelerating and landing system. Curious if they will simplify the process, or improve the existing one.

SharePoint 2013 PowerPivot Gallery – “Sorry, something went wrong” “File Not Found.”

If you have a SharePoint 2013 farm configured to support Business Intelligence and you get the following error message when you try to access a PowerPivot Gallery, most likely is because you recovered / rebuild your farm, or you have added an additional front-end server.


Sorry, something went wrong File Not FoundSystem.IO.FileNotFoundException: The file /_controltemplates/15/PowerPivot/ReportGalleryView.ascx does not exist.

“System.IO.FileNotFoundException: The file /_controltemplates/15/PowerPivot/ReportGalleryView.ascx does not exist.
at Microsoft.SharePoint.ApplicationRuntime.SPRequestModuleData.GetWebPartPageData(HttpContext context, String path, Boolean throwIfFileNotFound)
at Microsoft.SharePoint.ApplicationRuntime.SPVirtualFile.CalculateFileDependencies(HttpContext context, SPRequestModuleData basicRequestData, ICollection& directDependencies, ICollection& childDependencies)
at Microsoft.SharePoint.ApplicationRuntime.SPDatabaseFile.EnsureDependencies(HttpContext context, SPRequestModuleData requestData)
at Microsoft.SharePoint.ApplicationRuntime.SPDatabaseFile.EnsureCacheKeyAndViewStateHash(HttpContext context, SPRequestModuleData requestData)
at Microsoft.SharePoint.ApplicationRuntime.SPDatabaseFile.GetVirtualPathProviderCacheKey(HttpContext context, SPRequestModuleData requestData)
at Microsoft.SharePoint.ApplicationRuntime.SPVirtualPathProvider.GetCacheKey(String virtualPath)
at System.Web.Compilation.BuildManager.GetVPathBuildResultFromCacheInternal(VirtualPath virtualPath, Boolean ensureIsUpToDate)
at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound)
at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp)
at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()”

The fix is to deploy again powerpivotfarm14solution.wsppowerpivotfarmsolution.wsppowerpivotwebapplicationsolution.wsp. Installing PowerPivot for SharePoint is not enough. You must redeploy these WSPs anytime you add a new front-end server to your farm.

In my case it was about adding a new front-end server to the farm and the solution was simple:

Add-PSSnapin Microsoft.SharePoint.PowerShell
cd "C:\Program Files\Microsoft SQL Server\110\Tools\PowerPivotTools\SPAddinConfiguration\Resources\"
. .\ConfigurePowerPivot.ps1
Add-SPSolution -LiteralPath 'C:\Program Files\Microsoft SQL Server\110\Tools\PowerPivotTools\SPAddinConfiguration\Resources\powerpivotfarmsolution.wsp'
Add-SPSolution -LiteralPath 'C:\Program Files\Microsoft SQL Server\110\Tools\PowerPivotTools\SPAddinConfiguration\Resources\PowerPivotFarm14Solution.wsp'
Add-SPSolution -LiteralPath 'C:\Program Files\Microsoft SQL Server\110\Tools\PowerPivotTools\SPAddinConfiguration\Resources\powerpivotwebapplicationsolution.wsp'
DeployFarmSolution $false
DeployWebAppSolutionToCentralAdmin $false
Install-SPFeature -path PowerPivotFarm -Force
Install-SPFeature -path PowerPivotFarm -Force -CompatibilityLevel 14
Install-SPFeature -path PowerPivotCA -Force

Don’t worry if the lines 4, 5, 6 are throwing exceptions during execution – most likely is because you already have the PowerPivot WSPs added to your farm. The other commands will take care of your problem.
Please adjust the paths according with your installation (in the above section code I use the default installation path). 

Windows System Resource Manager and Windows Server 2012 R2

Features Removed or Deprecated in Windows Server 2012
Windows System Resource Manager (WSRM) is deprecated. Similar functionality is provided by Hyper-V.
Features Removed or Deprecated in Windows Server 2012 R2
Windows Server Resource Manager * – marked as removed.
* mistake on the Microsoft site. There is no such feature (Windows Server Resource Manager), but they refer to Windows System Resource Manager.

So, no more Windows System Resource Manager on Windows Server 2012 R2, but as you will see later in this post there is still something we can do. It is ridiculous to see Microsoft finds Hyper-V as replacement of WSRM (providing similar functionality). How does Microsoft thinks I can prioritize, or keep the Windows process usage under control with Hyper-V? By making a VM per application and use the Hyper-V resource allocations? That means we have to pay more!
I understand Hyper-V & VDI can replace the clasical Terminal Server & WSRM setup, but WSRM is not only used by the Remote Desktop Session Hosts (formerly TS).

Anyway, we cannot install WSRM on Windows Server 2012 R2 using the “Add Roles and Features”, but this doesn’t stop us to manually deploy WSRM and still use it.
What I will explain next is step by step how to deploy WSRM and still use it with Windows Server 2012 R2. This configuration is NOT supported by Microsoft, but if you are smart enough and know how WSRM works you will understand this setup is harmless. This setup has also some limitations, but those limitations are minor inconveniences compared with not having WSRM at all.

1. You will need a Windows 2012 server (let’s name it sever A). On the Windows 2012 server (A) you will install and configure WSRM exactly how you would like to have it on the Windows 2012 R2 server (server B) where you would like to run it. At this step please define also the Process Matching Criteria, Resource Allocation Policies, Calendar Events, WSRM Properties.

2. On the sever B you will have to add the Windows Internal Database feature. This feature is not required all the time. Some simple configurations of WSRM doesn’t even require it, but I am mentioning this step because I never know how complex your configuration is. For example the WSRM configuration I use for my SharePoint test environment doesn’t require the Windows Internal Database.

3. On the server B you will need to copy the C:\Windows\System32\Windows System Resource Manager folder from server A.

4. On the server B you will need to copy C:\Windows\System32\wsrm.exe and C:\Windows\System32\WSRM.msc from server A.

5. Import on the server B the [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\WSRM] registry exported from server A.

6. Import on the server B the [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WSRM] registry exported from server A.

7. Import on the server B the [HKEY_CLASSES_ROOT\AppID\{0643C58D-5861-4F0C-AE82-FC867CCEDD7A}] registry exported from server A.

8. Import on the server B the [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\SnapIns\FX:{585cee48-ce61-4a2c-a3b1-2ab794b6e311}] registry exported from server A.

9. Import on the server B the [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\SnapIns\FX:{723e46e7-fd90-43bb-a909-64ef13d744e0}] registry exported from server A.

10. Import on the server B the [HKEY_CLASSES_ROOT\CLSID\{E8BCFFAC-B864-4574-B2E8-F1FB21DFDC18}] registry exported from server A.

11. Create  a new String Value registry in [HKEY_CLASSES_ROOT\Local Settings\MuiCache\XXXX\52C64B7E]
Value name: @%SystemRoot%\system32\wsrm.exe,-110
Value data: Assigns computer resources to multiple applications running on Windows Server. If this service is stopped or disabled, no management will occur, no accounting data will be collected, and the administrator will not be able to use command-line controls to administer Windows System Resource Manager.

12. Restart your server.

At this point we finished to manually deploy the WSRM on Windows Server 2012 R2.WSRM_W2012_R2_SETUP_11

Please keep in mind the existing WSRM.EXE denies all the MMC connections. Despite this limitation the WSRM process is running well – is applying the resource allocation policy as it was defined on the Server A.
Connecting to WSRM on the selected computer is not supported because its version is not compatible with your installation.

Yes, I know is frustrating to not be able to use the MMC console to control the WSRM directly on Windows Server 2012 R2, but keep in mind this is a minor inconvenience for a heavy WSRM user. The solution is simple – always have a Windows Server 2012 machine where WSRM is installed. On that machine define the Resource Allocation Policies as you need, export the configuration settings (please make sure you export everything – select all the check boxes), on the R2 server stop the WSRM windows service, copy the WSRM export configuration files to C:\Windows\System32\Windows System Resource Manager\data and after that restart the WSRM service.