Selective folder sync for SPSync

I’m happy to announce that the top requested feature on UserVoice is now available for testing.

Now you can select which folders in your document library you want to sync. Just click “Edit” on your configuration and then “Save & Select Folders”:

image image

Download version 0.9.6 here: http://spsync.net

SPSync - The OneDrive for Business alternative

I know, the last update is almost a year old... But yes, I’m trying to work on it when I find some free time. So this update brings some important changes.

What's new?

First of all, to add a new sync configuration, the dialog has only a few fields left. SPSync will try to find every other setting automatically for you. Here is the new dialog:

image

As you can see, the advanced configuration dialog can be opened via the link. The automatic detection will only work if you are using NTLM/Basic (On-Premises) authentication or Office 365. For ADFS you need to enter some more info on the advanced dialog.

Another new feature is that you can now configure, whether you want to sync in both directions or only one of them (Local->Remote or Remote->Local) which was a suggestion on UserVoice with a high vote. Also deleted files (local or remote) are now always send to the recycle bin and never get automatically deleted for ever.

With this new version I’ve decided to drop the support for SharePoint 2010 (and before), because of some missing features for the upload/download handling. This is to make the development much easier and better to maintain. That’s also why SPSync requires now .NET 4.5.1.

Last but not least, a lot of bugs are now hopefully fixed. If you find something, please send me an error report and attach the DebugLog.txt from C:\Users\%username%\AppData\Local\SPSync

Download the new version 0.9.5 here: http://spsync.net and leave a comment or drop me a line at: support (at) spsync(dot) net

PS: The next new feature will be to be able to sync sub-folders within a document library as it has already 20 votes on UserVoice.

New Microsoft certifications

As I’ve mentioned here, Microsoft recently had a promotion to get up to 5 free vouchers for some specific exams for Prometric because after 31th of December, Pearson Vue will be the only exam provider.
I decided to try three of them:

I’ve passed all of them, which is especially great for the Azure exam, because that one was really hard.
With the two Office 365 exams I’m now a ”Microsoft Certified Solutions Associate for Office 365” (MCSA: Office 365).

You can find the details how to access my transcript here.

SharePoint 2013: Timeout on ClientContext.ExecuteQuery

Ok, this one is a strange issue.

I have created a console app with Visual Studio 2013. Added the "App for SharePoint Web Toolkit" NuGet package to get the SharePoint.Client.dll
Then wrote just a few lines to test if it works:

        static void Main(string[] args)
        {
            ClientContext context = new ClientContext("https://sharepoint/sites/test1");
            var web = context.Web;
            context.Load(web);
            context.ExecuteQuery();
            Console.WriteLine("Title: " + web.Title);
        }

This is against an on premises installation with Kerberos authentication (NTLM and Basic are also enabled). On the line context.ExeucteQuery(); it just waits a long time and then gives me a timeout and 400 error.

The weird thing: If Fiddler is open during the execution, everything works as expected. No timeout, no error.

Solution

The solution is fairly simple:

Just attach a handler to the ExecutingWebRequest event and set the WebRequest.PreAuthenticate to true:

        static void Main(string[] args)
        {
            ClientContext context = new ClientContext("https://sharepoint/sites/test1");
            context.ExecutingWebRequest += context_ExecutingWebRequest;
            var web = context.Web;
            context.Load(web);
            context.ExecuteQuery();
            Console.WriteLine("Title: " + web.Title);
        }

        static void context_ExecutingWebRequest(object sender, WebRequestEventArgs e)
        {
            e.WebRequestExecutor.WebRequest.PreAuthenticate = true;
        }

BlogEngine.NET update

Mein Blog ist nun ein wenig renoviert und auf dem aktuellen Stand (BlogEngine.NET 3.0).

Dabei habe ich auch Kategorien zusammengefasst, gelöscht und vieles andere gerade gezogen. Außerdem verwende ich nun ein neues Theme. Wenn euch was auffällt, einfach einen Kommentar hinterlassen.

Visual Studio Extension: SPDeployer

With SharePoint 2013 you can create great solutions not only with a "SharePoint Hosted-App", but with a plain JavaScript file within a Content Editor Web Part. Vesa Juvonen named it app script part pattern.

So development today is like:

  • Open the style library in Explorer and open the javascript file with your favorite editor. Not ideal, because you are not working within a solution in Visual Studio, so no source control integration, etc.
  • Use SharePoint Designer to work with the files –> Not a development environment you want to work with

Solution

Here comes my Visual Studio extension to the rescue. Install it directly from within Visual Studio->Tools->Extensions and Update. Search for SPDeployer or download directly from the Visual Studio gallery.

Open a solution with your web project, then click Tools->"Add SPDeployer to project". This will add a new spdeployer.config file to the currently selected project.

image

Just enter the details to you SharePoint dev site and add a line for each file you want to have SPDeployer automatically upload on save.

Now whenever you make changes in one of the monitored files, it will automatically upload to your SharePoint library.

You can find the sources on GitHub. Feel free to add issues or pull requests.

Simple SharePoint Forms Solution

You knew InfoPath? It's dead. So what is your current solution to just create a small/simple form in SharePoint to let users enter some information into a SharePoint list?

The default list forms are not a very good answer if it should be end user friendly or you want to style it.

So I've created a super simple solution and it is open source.

Just create an HTML form with your favorite editor and attach some special "data-" attributes, add a line of JavaScript and put everything into a Content Editor Web Part on your page.

You can find a complete guide at the GitHub project site.

SPSync v0.9 is now available

Ok, the last version is almost 9 month old, but now I finally had some time to look through all comments on uservoice and now proudly present the new version.

What's new?

The major change is: SPSync now supports Office 365 authentication which means, you can finally use SPSync with SharePoint Online and SkyDrive Pro. Just select "Office365" from the authentication list and enter your username (user@customdomain.com or user@customdomainpart.onmicrosoft.com) and your password. Domain is not required.

image

Also an issue with creating folders is now fixed and it doesn't matter anymore whether the title of a document library is not the same as the URL of the document library.

A reminder: The "Conflict Handling" is a setting just for conflicts. If you select "Overwrite local changes" it does not mean that a full sync is done. A conflict is if a file is modified locally and remotely. All other files are sync'ing independently from this setting.

Download the new version here: http://spsync.net and leave a comment or drop me a line at
support (at) spsync(dot) net

Load Testing SharePoint with Visual Studio Online

I recently discovered that Visual Studio Online includes 15000 "Virtual User Minutes" for load testing each month for free. I've never used the load test feature of Visual Studio before, so I decided to try it to simulate high user loads on our SharePoint farm. Here is a step-by-step guide.

Requirements

  • A Visual Studio Online account
  • Visual Studio 2013 Ultimate (Performance and Load Testing is not included in any other edition)
  • SharePoint Site which is accessible via Internet

Setup

In Visual Studio 2013 go to File->New->Project and select "Web Performance and Load Test Project" in category "Test":

image

This will create an empty "Web Performance Test". To start recording what the test should do, click "Record" and an IE Browser window will open.

image image

Now open your SharePoint site and click around to simulate some browsing. After that click "Stop" to come back to Visual Studio where you will see all requests in your Web Performance Test.

You might not want to record some "SharePoint" noise, so there is a settings page to exclude some stuff. Go to Visual Studio Tools->Options->Web Performance Test Tools->SharePoint:

image

To execute this Web Performance Test as a load test with simulated users, you have to add a "Load Test" to your project:

image

The wizard will guide you through some configuration options. Set the load to 250 users as shown below for a test running one minute will cost you 2500 virtual user minutes. So keep in mind that the free plan of Visual Studio Online gives you 15000 virtual user minutes per month. Be careful with the constant loads settings, because all virtual users will submit the first request as fast as possible, so the result may not reflect real usage scenarios. For more users use the "Step" pattern to start with a few users. They will automatically increase over time.

image

I set the test mix model to "Based on sequential test order" because there is only one test in my project which every virtual user should run. In the next step add the existing test to the load test.

I leave Network Mix, Browser Mix and Counter Sets untouched. In Run Settings I set the "Load test duration" to 10 which means, every virtual user will execute the test in a loop for 10 minutes.

image

With these settings, your "Virtual User Minute" budget of 15000 in Visual Studio Online will decrease by 2500 (250 user * 10 minutes).

Run in the Cloud

Now add a .testsettings file (Local.testsettings already exists) via Add->New Item and search for test:

image

Give it a name like "CloudTestSettings". A wizard will open where you can select "Run tests using Visual Studio Team Foundation Service" (what is now "Visual Studio Online" as of November '13).

image

Make sure, your newly created .testsettings file is the active one by right click on it and select "Active Load and Web Test Settings":

image

Ok, that's basically all you have to do. If you already know some values and want to visualize threshold violations, you can open the load test and add threshold rules to one ore more counters. For example to the average page load time.

image

To run the load test, just click "Run Load Test":

image

After the test is completed the result panel show all the details about the test. You can add counters to graphs and see a summary and details. I'm interested in the page response times, so I switch to only one graph layout. Here you can see all the different pages and there response times.

image

You can download the report to Excel to analyze it even further.