Category Archives: SharePoint 2013

Deployment Error: Failed to extract the cab file in the solution.

Deployment woes? Par for the course.

I ran into an odd issue today while deploying a SharePoint solution via Visual Studio 2013 to a test SharePoint instance today:

Error occurred in deployment step 'Add Solution': Failed to extract the cab file in the solution.

The only change made prior to deployment was the addition of a new image file to the Style Library folder. Seems like a fairly simple, non-deployment-killing change, right?

It’s never that simple.

After some digging, I realized the image file name had an ‘@’ symbol in it:


Removing the symbol fixed the problem. Incidentally, Visual Studio will warn you when your files have invalid characters, but not when pasting a file into the folder. Only when creating a new file with the ‘@’ in the name will it warn you that it’s not allowed.

In doing some research, I also found parenthesis are not allowed. See this blog post.

Are there any other file name characters not allowed within the CAB file? Comment up!


Tagged ,

SharePoint 2013: Navigation Without all the Audience Trimmings

Most SharePoint devs out there know about trimming navigation items based on audience trimming settings. This has been around since I’ve been using SharePoint, back in the dark-dark times of SharePoint 2007.

Site_Navigation_SettingsIt usually just works. Add a link or folder to the site’s navigation, set which audience should see the link, and done. People in the “Analytics” group see the link or folder, lesser privileged individuals do not. It’s like magic, without all the magical mumbo-jumbo.

In fact, it’s so dead simple, it’s the last thing I expected to have a problem. So … what’s this crazy exception message I’m seeing when setting audience trimming??

This entry cannot be validated. Exception “Object reference not set to an instance of an object.” occurred.

Cannot be validated object reference what-what?

First of all, thank you for the amazingly useless exception message. It’s nothing new to developers in most any stack, but I thank you anyway.

So why is it not working? Who’s fault is it? Is SharePoint bugged? Is Mars in retrograde? Did I configure something wrong? If I did, can I blame my parents because they never gave me a RC car for Christmas? (Turns out I can, and have. Next stop: therapy.)

As it turns out, it was mostly my fault. In order for audience trimming to work the User Profile Service has to be activated and fully configured.

How do I activate and configure the User Profile Service?

This is the easy-peasy part. First of all:

  1. Go to Central Administration
  2. Go to System Settings
  3. Go to Services on Server
  4. Look for the following:BSD__TS13-APP1
  5. Start that turkey

Now that the service is started on the farm, provision the User Profile Service (seems backwards, but whatever). Rather than re-typing this next part all out, I direct you to this stellar post on configuring the service:

Unless you need it for other reasons, stop before provisioning the User Profile Synchronization Service. This is not needed to get audience trimming running.


If I could draw one conclusion for you, it would look like this:







Keep going …





Untitled drawing (1)

Happy SharePointing,



SharePoint 2013: Configuration Wizard Issues When Installing Local Development Instance


Issue #1:

Ever try to install a local development instance of SharePoint 2013, only to have the configuration wizard conk out around step #4 indicating a timeout error when starting services?

Me, too. I cried like an infant with a wet diaper in a childish attempt to project utter discomfort and anguish to anyone or anything within a 3 mile radius. I’m pretty sure not a single bit was shed by the VM. My co-workers, however, have scheduled an intervention.

You, being of sound mentality and professionalism, checked the installation log file for more information, and found something similar to the following:

06/03/2014 14:56:00 6 ERR Failed to register SharePoint services.
An exception of type System.ServiceProcess.TimeoutException was thrown. Additional exception information: Time out has expired and the operation has not been completed.
System.ServiceProcess.TimeoutException: Time out has expired and the operation has not been completed.
 at System.ServiceProcess.ServiceController.WaitForStatus(ServiceControllerStatus desiredStatus, TimeSpan timeout)
 at Microsoft.SharePoint.Win32.SPAdvApi32.StartService(String strServiceName)
 at Microsoft.SharePoint.Administration.SPWindowsServiceInstance.Start()
 at Microsoft.SharePoint.Administration.SPWindowsServiceInstance.Provision(Boolean start)
 at Microsoft.Office.Server.Conversions.LauncherServiceInstance.Provision()
 at Microsoft.SharePoint.PostSetupConfiguration.ServicesTask.InstallServiceInstanceInConfigDB(Boolean provisionTheServiceInstanceToo, String serviceInstanceRegistryKeyName, Object sharepointServiceObject)
 at Microsoft.SharePoint.PostSetupConfiguration.ServicesTask.InstallServiceInstances(Boolean provisionTheServiceInstancesToo, String serviceRegistryKeyName, Object sharepointServiceObject)
 at Microsoft.SharePoint.PostSetupConfiguration.ServicesTask.InstallServices(Boolean provisionTheServicesToo)
 at Microsoft.SharePoint.PostSetupConfiguration.ServicesTask.Run()
 at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()

The Fix:

To the registry! Follow this post, add the key and DWORDs as instructed, and re-run the SharePoint configuration wizard.


bit_noIssue #2. No No No No … !

Yes, BIT. Another issue has been detected.

We made it to step 8 in the SharePoint Configuration Wizard, at least! But it failed all over the place again. Go to your log file and you’ll likely find this:

06/03/2014 15:05:19 16 ERR An exception of type System.ArgumentException was thrown. Additional exception information: The SDDL string contains an invalid sid or a sid that cannot be translated.
Parameter name: sddlForm
System.ArgumentException: The SDDL string contains an invalid sid or a sid that cannot be translated.
Parameter name: sddlForm
 at System.Security.AccessControl.RawSecurityDescriptor.BinaryFormFromSddlForm(String sddlForm)
 at System.Security.AccessControl.RawSecurityDescriptor..ctor(String sddlForm)
 at Microsoft.SharePoint.Win32.SPNetApi32.CreateShareSecurityDescriptor(String[] readNames, String[] changeNames, String[] fullControlNames, String& sddl)
 at Microsoft.SharePoint.Win32.SPNetApi32.CreateFileShare(String name, String description, String path)
 at Microsoft.SharePoint.Administration.SPServer.CreateFileShare(String name, String description, String path)
 at Microsoft.Office.Server.Search.Administration.AnalyticsAdministration.CreateAnalyticsUNCShare(String dirParentLocation, String shareName)
 at Microsoft.Office.Server.Search.Administration.AnalyticsAdministration.ProvisionAnalyticsShare(SearchServiceApplication serviceApplication)
 at Microsoft.Office.Server.Search.Administration.AnalyticsAdministration.CreateDefaultStoreLocation(SearchServiceApplication serviceApplication)
 at Microsoft.Office.Server.Search.Administration.AnalyticsAdministration.ProvisionRawEventStore(SearchServiceApplication serviceApplication)
 at Microsoft.Office.Server.Search.Administration.AnalyticsServiceAdministration.Provision()
 at Microsoft.Office.Server.Search.Administration.SearchServiceApplication.Provision()
 at Microsoft.SharePoint.PostSetupConfiguration.EvalModeProvisionTask.ProvisionServiceApplicationsAndProxies()
 at Microsoft.SharePoint.PostSetupConfiguration.EvalModeProvisionTask.Run()
 at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()

Isn’t this magical?

And the fix is … ?

Share your Analytics, my friend. Your Analytics_{GUID} folder, that is.

  1. Open explorer and go to: C:\Program Files\Microsoft Office Servers\15.0\Data\Office Server.
  2. Right click the Analytics_{GUID} folder -> Sharing -> Advanced Sharing.
  3. Click “Share This Folder”, leave the Share name defaulted, then click Permissions.
  4. Because this is a dev instance, just give Everyone Full Control access (and feel OK about it).
  5. Re-run the wizard.

NOTE: For full disclosure, I found this here. I did not need to check for DB security permissions, nor did I have to add the WSS_ADMIN_WPG account specifically.

Is that the end?

Yes. Enjoy your development instance of SharePoint 2013. Preferably with a decent pint of ale.