Setting up a development environment for Office 365 and SharePoint Online

As we more and more evolve from working exclusively with SharePoint on-premises with our complex local SharePoint farm rigged with several virtual machines eating up our highly spec’d laptop, the new way of working with SharePoint in-cloud offers a more attractive setup for us developers.

My background before starting with SharePoint, as for most others, was as a general programmer used to pretty simple and lightweight development environments. I must say I almost had forgotten what a lightweight and clean development environment feels like. It feel like coming home after a long and tough journey ūüėČ

Setting up a development environment for doing Office 365 and SharePoint Online development is really easy, I that’s the reason I chose to create this post it just to keep a note to myself what the essentials are.


Where to run it

I recommend to set up a dedicated virtual machine for this setup. I prefer using Hyper-V as it is included in Windows 8, and for many other reasons.


  • 4 cores (minimum 2)
  • 8 GB RAM or more (dynamic)
  • 80 GB disk (expanding)

Getting the necessary software

Operative system

  • Windows 8.1 x64 with Update


  • Visual Studio 2013 Update 3 x86
  • Office 2013 SP1 x86
  • SharePoint Designer 2013 x86
  • Google Chrome (set as default)


These SDKs are pre-requirements to getting started with development against Office 365. It is important to install them in the listed order to avoid errors.




Office Developer Tools for Visual Studio 2013 – July 2014 update

This can also be installed from Web Platfrom installer.

Microsoft Online Services Sign-In Assistant for IT Professionals BETA

The Microsoft Online Services Sign-In Assistant provides end user sign-in capabilities to Microsoft Online Services, such as Office 365.

Azure Active Directory Module for Windows PowerShell

Use Windows PowerShell cmdlets to manage your Windows Azure tenant.

SharePoint Online Management Shell

The SharePoint Online Management Shell is a tool that contains a Windows PowerShell Module to manage your SharePoint Online subscription in the Office 365.
Azure SDK for .NET (OPTIONAL) Install this if you plan to develop provider hosted ASP.NET apps in Azure. (VS 2013 install)

Development tools

 Going from on-premises development to cloud, first of all reduces the available tools. Luckily a few of those contributing with their excellent tools have also made them compatible with SharePoint Online. These tools I recommend to increase your productivity working with developing solutions for SharePoint Online. Spend some time to learn what you can gain from using them.




CAML Designer 2013


SharePoint Client Browser

SharePoint Search Query Tool


There as some basic utilities I always find handy to have available on every computer I work on. So this is only a recommendation, and not necessary to get the environment working.

Setting it up

This is pretty a straight forward top-down installation. Only be careful to click away some of the ad-ware stuff on the utilities to avoid getting crazy toolbars in your not-default browser IE.

One important factor is to install the SDKs in the right order as listed. I had some trouble getting this to work, and it turned out installing SharePoint Online Management shell too early gave some bad consequences.


When I tried to install Azure Active Directory Module for Windows PowerShell it got an error:

“In order to install Windows Azure Active Directory Module for PowerShell, you must have Microsoft Online Services Sign-In Assistant version 7.0 or greater installed on this computer.”.

For the time being I had version 7.250.4303.0 installed, I this error message made no sense. It turns out there is a newer BETA version (7.250.4551.0) that is required. I have linked to the correct version above, so just make sure you are using it.


Getting started with developing for SharePoint Online in Office 365 is a much more pleasant journey than the traditional on-premises story. We are now able to be productive using a very lightweight machine with a small set of tool available to do our work.

I wrote this guide primarily for my own use I as tend to forget all those small details between each time I set up a new environment, but I also hope it can help others getting started as quick and hassle-free as possible with developing for SharePoint Online.

NOTE: This topic is always subject to change as new versions roll out all the time.

Preparing a new server with Windows Server 2012 for development and testing

As a SharePoint developer, I am quite often required to set up new servers for development and testing. Every time I set up a new server, I do a basic configuration before I start installing the specific software I need (SQL Server, SharePoint, Visual Studio etc.). The purpose of doing these preparations is to enable a more desktop like user experience, and remove unnecessary interruptions in the day-to-day usage.

This guide is based on a Windows Server 2012 Standard GUI installation.

Basic settings in Server Manager

After the initial installation and first time password setup is complete, continue in the Server Manager by setting these basic settings to get started. Select Local Server in the left side menu.

  1. Change computer name (postpone reboot to later)
  2. Enable automatic windows update (and start first time check)
  3. Disable IE Enhanced Security (for all users)
  4. Change timezone


Add “Desktop Experience” role

This feature adds some settings and software to make the server feel more like a standard Windows 8 end-user computer.

In the Server Manager select Manage and Add Roles and Features.


In the wizard, select Next until you reach the Feature step. Locate User interfaces and infrastructure and expand it. Check the option for Desktop Experience.


Enable remote desktop connections

All my installation are mostly on virtual hosts, so getting Remote Desktop up and running is a much better experience than the build in console in for example Hyper-V.

Under Settings (search for the words), select Allow remote access to your computer.


Then select Allow remote connections to the computer.


Disable password expiry

Disabling these policies is not a good idea in general, but in a development environment, this is necessary to avoid hassle with Windows nagging about setting new passwords from time to time. I always use a general password for these environments, and want to avoid it being changed somewhere.

Open Group Policy Management (just search for it). Right click on Default Domain Policy and select Edit.


Open the path Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Account Policies -> Password Policy.


Set Enforce password history and Maximum password age to 0. Disable the Password must meet complexity requirements.

Disable shutdown event tracker

The shutdown event tracker is fine for a server, but is unnecessary on a development machine.


Open Group Policy Management (just search for it). Right click on Default Domain Policy and select Edit.


Open the path Computer Configuration -> Policies -> Administrative Templates -> System. Select Display Shutdown Event Tracker.

Select Disabled to avoid this dialogue to appear the next time you shut down the server.

Enable execution policy for PowerShell

By default PowerShell script are disabled from being executed, and a policy setting must be set.

Open a PowerShell Console (as Administrator) and type Set-ExecutionPolicy -ExecutionPolicy RemoteSigned


Also just as a remined make sure that script you try to execute aren’t blocked. Check this by right clicking the file, select Settings and check if the button Unblock appear in the bottom right of the dialoge.

Disable Loopback check with PowerShell

This is mainly for servers that will be used for hosting web applications with IIS. For more details see:

Open a PowerShell Console (as Administrator) and type New-ItemProperty HKLM:\System\CurrentControlSet\Control\Lsa -Name “DisableLoopbackCheck” -Value “1” -PropertyType dword


A reboot will be necessary for this setting to take effect.


In this article a step-by-step guidance for preparing a Windows Server 2012 for development and testing use were presented. This enables a better user experience when working in a server environment on the day to day basis.

Just as a disclaimer, these steps reduce the general security level normally required on a server, and should only be used for development and testing purposes.

Any tips that could be included in this preparation guide, are welcome!

Installing workflow service for SharePoint 2013 Preview

The workflow service in SharePoint 2013 Preview is no longer a part of the standard SharePoint server installation, and is provided by the Windows Workflow Manager (Azure). The service it self is a huge improvement to the product, but requires additional step as it has to be installed and configured post-installation of SharePoint Server 2013.

Getting the workflow service in SharePoint 2013 Preview up and running on my development environment gave me some challenges that wasn’t well documented at the time, so I decided to list some of the error messages and steps that helped me getting it up and running properly.

Installation and configuration

I started my installation by following this documentation on TechNet:

Installation guide for Workflow Manager 1.0 Beta:

Configuration guide for connecting SharePoint 2013 to Workflow Manager:

Error messages

  • Configuration wizard: Could not successfully create management Service Bus entity ‘WF_Management/WFTOPIC’ with multiple retries within timespan
  • Browsing the WF management site (http://localhost:12291/):”Object reference not set to an instance of an object”
  • Powershell: “The trusted provider certificate which is already in use.” or ¬†“Unable to properly communicate with the workflow endpoint”
  • Service App error (/_admin/WorkflowServiceStatus.aspx): “SharePoint was unable to communicate with the Workflow host”

Tips for troubleshooting

  • Check which regional settings are used on your setup and admin account. When I used something else than ‚ÄúEnglish (United States) I got an error when accessing the configuration database.
  • Remember to start SQL Server Browser, and keep it to start automatic.
  • Grant the workflow service account the server roles ‚Äúdbcreator‚ÄĚ and ‚Äúsecurityadmin‚ÄĚ in SQL Server.
  • Grant the workflow service account local administrator rights on the server.
  • Run the workflow configuration wizard logged in as the workflow service account.
  • Use a FQDN for the account in the configuration wizard (default suggestion is wrong).
  • To clean up a failed installation:
    • Run workflow configuration wizard, and remove the server from the workflow farm.
    • Manually delete the databases created (prefixed with Wf and Sb in default installation).
    • If registered with SharePoint, remove the service application ‚ÄúApp Fabric Application Proxy‚ÄĚ.
  • It is possible to run the registration with SharePoint, Register-SPWorkflowService, with a ‚Äú-Force‚ÄĚ switch to get pass a state where it tells you it already has been registered, but still fails.


This article gives some tips for resolving different errors occurring either when installing the workflow service, or when connecting it with SharePoint.

DISCLAIMER: SharePoint 2013 is in preview at the time this article was written. When the product reaches RTM the content of the article may not be relevant or wrong.

Setting up internet access for Hyper-V with NAT in Windows 8

In my work with development of SharePoint solutions, I heavily rely on virtualized environments on my own laptop computer. Working inside virtualized environments complicates the configuration of your own infrastructure, and to get and acceptable user experience inside the virtual machines a working internet connection is a requirement.

Earlier Hyper-V was only supported on the server OS, but from Windows 8 this has also been added to the client OS as well.¬† Since I run this on my laptop computer, connected to different networks from time to time, it gives me some other requirements for the internet access than traditional fixed location Hyper-V setups. Setting up an external virtual network switch could give me internet access, but also connects the virtual machine directly to the host network. Exposing the virtual machines on the host network has many disadvantages, so setting up a NAT‚Äôed solution where they are hidden behind the host computer’s network connection would be a better solution to me.

Creating a new virtual switch in Hyper-V

Start by opening the Hyper-V Manager, and locate the  Virtual Switch Manager in the Actions menu.

Create a new virtual network switch by selecting New virtual network switch, give it a name (in this example ‚ÄúShared‚ÄĚ) and select the connection type Internal.

Configure internet access for the new virtual switch

The next step is to share your current internet connection on the host with the newly created virtual network switch in Hyper-V.

Open Control Panel -> Network and Internet -> Network Connections.

Right click on your connection who has access to internet (in this example “Wi-Fi”), and select Properties.

Select Allow other network users‚Ķ and select the newly created virtual network switch (prefixed with “vEthernet”). The name in this case is the save as entered as name for the virtual network switch, in this example ‚ÄúShared‚ÄĚ.

After selecting OK the virtual network swich will get a static IP of, and serve as a DHCP server within that range for the virtual machines.

Enable internet access on virtual machines

In Hyper-V Manager, select a virtual machine and Settings from the menu. Make sure the virtual machine is powered off first.

Choose to add new hardware, network¬†adapter¬†and select the newly created virtual network switch. Power on the virtual machine, and a new network adapter with NAT’ed internet access should appear. The adapter should have been assigned a dynamic IP-address from the¬†192.168.137.x range.


In this walk¬†through¬†we have seen how to configuring NAT’ed internet access for virtual machine in Hyper-V. Even if this guide was created for Windows 8, most of the steps can be applied both on Windows Server 2008 R2 and 2012 with the same result.