Load Testing SharePoint with Visual Studio Online

19. January 2014 20:03 by marco in Azure, Microsoft, SharePoint, SharePoint 2013, Visual Studio  //  Tags:   //   Comments (2)

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.

Can't connect to SharePoint on Windows Phone 8

2. December 2013 14:34 by marco in Microsoft, SharePoint, SharePoint 2013, Windows Phone  //  Tags:   //   Comments (0)

I have just installed a new SharePoint 2013 machine and restored an existing (2013) ContentDb to this machine. Everything works fine except: I cannot connect to it on my Windows Phone 8 anymore.

image

However, this worked perfectly well before the move. I tried a lot to figure out, what the problem was. Result: The Certificate Authority (or better the issued certificate) is the reason.

 

 

 

 

The new CA I've also created is on Windows Server 2012 R2. The old CA was on Windows Server 2012. And R2 adds automatically a "CRL Distribution Point" extension to all issued certificates. My CA is private so Windows Phone had no chance to connect to any URL specified within the extension.

Solution

Disabling the CRL Distribution Point extension for all issued certificates (or make the URLs available for your phone). Here are the steps:

Open your CA, edit the properties of the root node, go to the "Extensions" tab and uncheck "Include in the CDP extension of issued certificates:

image

How to fix scrolling (and other) issues in Chrome on SharePoint 2010

31. July 2013 22:05 by marco in Javascript, Microsoft, SharePoint  //  Tags:   //   Comments (1)

Today I looked deeper into the issues our users have with SharePoint 2010 in Chrome. It seems that Chrome does not always (strange…) executes "onload" within the body tag. However, SharePoint needs to execute one important javascript function there to enable scrolling, the ribbon and some other stuff (also the "ExecuteOrDelayUntilScriptLoaded" function)

Solution

We are already using jquery so this one is the best solution:

   1:  jQuery(document).ready(function () {
   2:      if (window.chrome) {
   3:      	jQuery("body").removeAttr("onload");
   4:      	if (typeof (_spBodyOnLoadWrapper) !== 'undefined') {
   5:  		        _spBodyOnLoadWrapper();
   6:      	}
   7:      }
   8:  });

 

Special hint: Do not use "$" in "global" javascript files for jQuery, but instead the explicit "jQuery" object, because in some library types (e.g. Picture Library) the $ has a different meaning in SharePoint.

UPDATE:
Added "if (window.chrome)" to check for Chrome, because InfoPath Workflow Init Forms are not working as expected if the _spBodyOnLoadWrapper is not executed within the real body onload. So they are not working in Chrome.

Delete project from tfs.visualstudio.com

15. June 2013 13:43 by marco in .NET, Microsoft, Visual Studio 2012  //  Tags:   //   Comments (0)

Just a short reminder for me, how to delete a project from tfs.visualstudio.com, because there is no UI to do that:

Open a Developer Command Prompt and type:

tfsdeleteproject /force /collection:https://xxx.visualstudio.com/DefaultCollection "YourProjectName"

Access Services 2010: There was an error modifying list schemas

3. May 2013 17:23 by marco in SharePoint, Office 2010, Microsoft  //  Tags:   //   Comments (0)

I have an Access 2010 database published to SharePoint 2010. It is a large database, but it is working fine... as far as Access can be fine. I made a lot of changes and added some more columns to one of the tables. I published the database again and everything worked ok.

To make a backup, I saved the database as a local database. Now if I try to publish the same local database to another site in SharePoint I get the following error message:

There was an error modifying list schemas. Failed to rename the field 'ID' on the SharePoint list 'xxx'

Even though the compatibility checker said everything is ok.

Bing doesn't seem to find a solution, so I tried Fiddler (by the way: great new website) to test what exactly is going on during the publishing process.
And here we have the detailed error message (click to enlarge):

AccessBlog

So what exactly is "_OldID2" and why is there a column I cannot see within the Access Client? And why are there too many columns of some type?

I tried to hide all columns, but modifying the view on the list does not seem to have something to do with it. Then I switched the columns back on and see one column which is not my column and I've never seen it before: "_OldID" Wow, why is Access/SharePoint complaining about _OldID2, but all I can see is "_OldID"?

The Solution


Well, it's really simple: Unhide and then delete the "_OldID" column. That fixed it and it can now be published again. Thank you Access for being such a great tool… not.

SharePoint 2013: SkyDrive Pro couldn't sync this library

25. March 2013 12:56 by marco in SharePoint 2013, Microsoft, SharePoint, Software  //  Tags:   //   Comments (0)

On SharePoint 2013 I have a basic document library with enterprise keywords enabled and one additional "People or Group" column set to "People only" (not as a multi value field).

Now I try to sync the library with SkyDrive Pro. It fails with the following error message:

image

The message details:

The query cannot be completed because the number of lookup columns it contains exceeds the lookup column threshold enforced by the administrator. Error code=0x80070093; Error source=Groove

Ok, if you count the enterprise keywords and the people field as lookup fields I have 2. The default "List View Lookup Threshold" (Central Admin –> Web Application –> Resource Throttling) is 8.

Then I tried to set the value to 16. Bam! Now everything is working again. I have no idea why and how 8 shouldn't be enough with my 2 additional columns (which are of course not even lookup columns).

Bestanden: Core Solutions of Microsoft SharePoint Server 2013

9. February 2013 10:26 by marco in SharePoint 2013, SharePoint, SPC12, Microsoft Zertifizierungen, Microsoft  //  Tags:   //   Comments (0)

Gerade erfahren, dass ich die Beta Prüfung 70-331 (Core Solutions of Microsoft SharePoint Server 2013) die ich auf der SharePoint Conference in Las Vegas gemacht habe, bestanden habe!

Hätte ich nicht gedacht, da doch einigermaßen schwierige Case Studies dabei waren, aber scheint gereicht zu haben.

SPC12: Tag 1

13. November 2012 06:35 by marco in SPC12, SharePoint 2013, Search, Microsoft, Visual Studio 2012, Azure  //  Tags:   //   Comments (0)

Heute morgen ging es ab 7:30(!) mit dem Frühstück in einer Halle los, in der sonst wahrscheinlich Flugzeuge oder Raketen gebaut werden.

CIMG0079

CIMG0091

 

 

 

 

 

CIMG0088

CIMG0086

 

 

 

 

 

Dann anschließend in einer ähnlich großen Halle gab es die Keynote mit u.a. Jared Spataro, Jeff Teper und Scott Guthrie. Neben den bereits bekannten Dingen wurden auch die Windows 8 Apps für SharePoint und Yammer gezeigt. Insgesamt ist die Yammer Integration aber noch nicht wirklich eine Integration. Man springt klar von einer Anwendung zur nächsten, was das ganze in meinen Augen ziemlich User-Unfreundlich macht. Was aber klar wird: Microsoft setzt ganz extrem auf die Cloud. Dazu wurde z.b. gesagt, dass sie sich von dem 3-Jahres Releasezyklus verabschieden und in Office365 alle 90 Tage Updates einspielen.

Anschließend war ich dann in der Session "What's new for Developers in Office 2013 and SharePoint 2013". Dort gab es leider nicht viel Neues, sondern nur noch mal einen Überblick über die Möglichkeiten der Apps, die dann in Office, SharePoint und Outlook laufen.

Nach dem Mittag ging es weiter mit "What's new in Search for SharePoint 2013". Sehr interessant und insgesamt super mächtig was die Suche nun für Möglichkeiten bietet. Sei es beim Ranking, bei der Präsentation oder den Query Rules. Vor allem wichtig: Um die Suchergebnis-Seite und das Hover-Panel zu bearbeiten ist kein XSLT mehr notwendig sonder nur noch HTML/Javascript.

Danach war ich noch bei der Session "Building end-to-end apps for SharePoint with Windows Azure and Windows 8". Dort wurde eine Lösung gezeigt die fast alle neuen Technologien vereint und von Public Sites bis Windows 8 Toast/Tile Notifications alles hatte. Sehr cool. Allerdings fehlte leider die Zeit wirklich in alle Details zu schauen.

CIMG0099Heute abend dann noch bei der ClubSPC Party gewesen. Und Mr. Gangnam Style persönlich war da (oder zumindest einer der genauso aussah ;-)

Und zum Schluß noch ein Lacher: Woran merkt man, dass man auf einer SharePoint- (oder Allgemein einer IT-) Konferenz ist? An diesen Schildern.

SharePoint Conference 2012 - Ich bin dabei!

28. September 2012 09:56 by marco in Microsoft, SharePoint, SharePoint 2013, SPC12  //  Tags:   //   Comments (1)

Soeben genehmigt und gebucht! Ich bin also im November bei der #SPC12 in Las Vegas!

Weitere Informationen dann an dieser Stelle.

Install SharePoint 2013 Preview on Windows Server 2012 RTM

13. September 2012 21:24 by marco in SharePoint, Microsoft, Windows Server 2012, SharePoint 2013  //  Tags:   //   Comments (0)

I’ve just tried to install SharePoint 2013 Preview on a blank Windows Server 2012. The problem: The prerequisite installer had a lot of problems.

First of all, ASP.NET 4 could not be installed. After some digging around in the log file I found that the setup failed on this line:

"C:\Windows\system32\cscript.exe" "C:\Windows\system32\iisext.vbs" /enext "ASP.NET v4.0.30319"

I had to install "IIS6 Scripting Tools" manually. Additionally I had to install "Windows Identity Foundation 3.5" manually via "Add Roles and Features" within the "Server Manager".

Now SharePoint 2013 is up and running on a dev VM.

A new version of SPSync is available

3. June 2012 15:12 by marco in SPSync, Software, SharePoint, Microsoft  //  Tags:   //   Comments (2)

SPSync gets one step closer to a final version.

The most important thing: It can now connect to SharePoint sites by using NTLM or ADFS claims based authentication. Also SPSync now uses ClickOnce so it can start without the need for administrator permissions and updates automatically. Furthermore a lot of minor fixes are included to improve the sync capabilities.

Regarding the setup process, I will include a “standard” MSI install package for the final version to be ready for enterprise automatic software deployments.

One known issue: Only HTTPS servers are supported right now. The next version should include HTTP support also.

Please update to the latest version now. DOWNLOAD HERE

To provide feedback use support (at) spsync(dot)net or the FEEDBACK button on http://spsync.net

SPSync Beta

24. May 2012 20:35 by marco in SPSync, SharePoint, Microsoft, Software  //  Tags:   //   Comments (0)

SPSync is now available as a public beta. You can download it here. It works now with large files. I’m currently working on integrating ADFS/Claims authentication. Currently only Windows authentication (NTLM) is supported.

I would like to know, what else you would expect from such an application. Please provide feedback via the feedback button on http://spsync.net or directly via uservoice here.

NuGet Package Manager or How to make “source code sharing” across projects much better

9. May 2011 16:43 by marco in .NET, Avanade, C# Code, Microsoft, NuGet, Visual Studio 2010  //  Tags:   //   Comments (2)

Introduction

In a company with more than one development project sometime it happens that someone says: Hey, we need a common logging component shared across all projects.
Now the solution could be to develop such a logging component and share the assembly with all projects. However, if there is some code that should/must be unique to each project it is a bit more complicated. If you want to do that with SharePoint 2010 and build a logging component on top of the ULS log and want each project to be configurable in the Central Administration you need to know all future projects and categories or you need some unique code.

Note: The logging component is only a very easy example and might not be the best one.

NuGet

Microsoft created NuGet. A package manager for Visual Studio. Quote of the official site:

NuGet is a Visual Studio extension that makes it easy to install and update open source libraries and tools in Visual Studio.

You can add it easily to Visual Studio 2010 by Tools->Extension Manager. Search for “NuGet”. After it is installed, you can add packages to a project by right clicking on a project in the Solution Explorer and click “Add Library Package Reference…”

image

Now as a company you don’t want your super-fancy code to show up for everyone as open-source. Therefore, NuGet can have more than one package source. You can even use a file share. Open Tools->Library Package Manager->Package Manager Settings:

image image

Bring it together

To get rid of “each project copy the source from the source of the other project from the source of the source of the source from another project” you can now use NuGet.

The idea is:
- Create the Logger.cs file
- Add TODOs to the code where the developer need to change something
- Make a NuGet package from it
- Let the project teams use the NuGet package (and distribute updates to the source automatically as well!)

Advantage: There is only one source! And if the owner of the NuGet package updates it, all project teams will be automatically notified about an update!

Create the NuGet package

In my example I talk about the comon logger component. A single Logger.cs file. However, NuGet can handle even more complex packages with PowerShell code, etc.

So download the NuGet command-line tool and create a new folder where all the stuff for the package will go to.

Open a command prompt and enter:

nuget spec

This will automatically create an empty package specification file called Package.nuspec. Open this file in notepad and modify the required values. Also rename the file to match the id property.

image

Now create a folder called “content”. Everything in this folder will be merged into the solution on installation of the package. So I put the file Logger.cs in this folder.
However, I don’t want that all users are required to use the same namespace, so you can change the file extension to “.cs.pp” to let NuGet “pre-process” the file.

Within the file you can then set some tokens to be replaced on installation. You can find a list of available properties here on MSDN.

The folder structure looks like this:

image

And the Logger.cs.pp in the content folder:

image

As you can see, I used the token $rootnamespace$. That one will be replaced by the root namespace of the target project.

Ok, lets make a package:

nuget pack

The output is a file called SPLogger.1.0.nupkg. You can publish it to the official NuGet package server or use it only internally by copying it to a file share.
Now open Visual Studio add the file share as a package source and search for it in the “Add Library Package Reference” window or open the NuGet console in Visual Studio (View->Other Windows->Package Manager Console) and type:

Install-Package SPLogger

image

That’s it. If you change the version number in your .nuspec file, create a new package and copy it also to your file share, the project team can decide to update to the latest version in the “Library Package Reference” dialog. You can even uninstall the package and everything will be removed from the project without leaving anything behind.

Windows 7 Location API – A new feature for Proxy Switcher

28. April 2010 10:53 by marco in .NET, C# Code, Microsoft, ProxySwitcher, Software, Windows 7  //  Tags:   //   Comments (2)

Overview

Currently, I’m investigating what can be improved in the new release of Proxy Switcher.

For those of you, who don’t know what Proxy Switcher is a few facts:

  • Proxy Switcher automatically set the proxy depending on your current network connection
  • Beside of that, it can set other things too. E.g.: Execute scripts, change default printer, etc.
  • Click here to go to the project site for more info

Windows 7 Sensor and Location Platform

With Windows 7 Microsoft created a new “Sensor and Location Platform”. Until now, there is not much hardware compatible with it, but this hopefully will change in the near future.
With this API, applications can easily access the available sensors. Here you can find some examples and also a “manual” location provider by clicking on a map.

For the location API, there is a cool free “software” device called Geosense. From their website:

Geosense is designed to use a hybrid mix of geolocation service providers and geolocation methods to pinpoint the most accurate location information possible - including but not limited to WiFi triangulation, cell tower triangulation and IP lookup. Source: http://www.geosenseforwindows.com/

While your laptop vendor has not yet integrated a Windows 7 compatible hardware GPS sensor, Geosense is a good compromise.

Proxy Switcher Integration

For Proxy Switcher this will become a new option for switching proxy configurations, or doing some other stuff as you can see here:

image  (click to open in a new window)

 

Code

To access the Windows 7 location API all you need is the .NET Framework 4. There is a new System.Device.dll (contained in the Client Profile of the .NET Framework). Adding a reference allows you to access the current location.

First, add the following using statement:

using System.Device.Location;

Use the following code  to get the address:

GeoCoordinateWatcher watcher = new GeoCoordinateWatcher();
watcher.TryStart(false, TimeSpan.FromMilliseconds(1000));
// Get the location, including lat, long, speed, altitude, etc.
GeoCoordinate location = watcher.Position.Location;
// Try to get the current address, including street, city, etc.
CivicAddressResolver resolver = new CivicAddressResolver();
CivicAddress address = resolver.ResolveAddress(location);

Summary

With this new functionality, Proxy Switcher is not a pure “Proxy Switcher” anymore, but a multi-functional network/location based “generic” extensible execution tool. New actions can be easily created by developers through the MEF AddIn Framework. More on this in a later post.

 

If you want to become a beta tester, feel free to contact me at “mail” at thisdomain.

Windows Phone 7 Series

15. February 2010 15:29 by marco in Hardware, Microsoft  //  Tags:   //   Comments (0)

Das sieht doch mal sehr vielversprechend aus:

image

Mit einer Oberfläche, die der des Zune ähnelt und mir auch dort schon sehr gut gefallen hat.
Developer Infos gibts erst zu MIX, vielleicht gibts bis dahin dann auch das SDK.

Ich jedenfalls will so ein Windows Phone! Gibts dann hoffentlich zu Weihnachten nicht nur in den USA, sondern auch hier.