Eliminate The Paperwork Bottleneck With Custom SharePoint Intranet

Frustrated by the constant feeling of drowning in paperwork?


If you’re annoyed by the slow response times or lack of accountability in your organization, your organization should seriously consider adopting a digital collaboration intranet solution.

As one of our clients learned, moving some of your workflows from a paper-based system to an electronic platform can fundamentally change how you do business for the better. Read on and see what a custom SharePoint intranet can do to reduce your business’ paper problem.

The Problem

Our client, one of the biggest nonprofit organizations in Washington, D.C., had a lot of paper-based processes in place. So whenever they wanted to implement or enact anything, physical sheets of paper had to make their way from one desk to another.

For example, to submit a payment request, people had to fill out a paper form and hand it to their supervisor, who would then pass it along to the accounting department, and so on. There was a lot of trekking through the hallways, and it was hard for the original requester to determine the progress of their application at any given time. In addition, because everything was done manually, most of the relevant information remained locked inside people’s heads.

Our Process

First, we had to get the essential elements of the system out of the heads of our client and into our own. We started by organizing a lot of discovery and requirements gathering sessions to pinpoint the sources of our client’s issues and find out what they needed from a solution. Based on these sessions, we created diagrams using Microsoft Visio that modeled their ideal workflow.

The second part of the process was building out the solution in a custom intranet portal in phases. Every time we implemented a few more requirements, we showed the results to the client to get their valuable feedback and modify our Microsoft Visio diagram. By the end, our diagram exactly matched the workflow of the custom SharePoint system we created.

The Result

The solution we created lets users keep track of the progress of their request at every step of the way. Whenever someone’s input is needed, the system automatically notifies that person with the relevant information. Everything is stored inside this custom intranet solution, so there’s no need to send or search for files yourself. Plus, because it’s done inside SharePoint, all the proper security measures are in place. Rather than being able to see sensitive information left on someone’s desk, employees can only see a particular electronic request if their input is required.

Obviously, there are a lot of benefits. It improves efficiency because you don’t have to print documents out or physically move things around. The progress of the request is transparent to anyone involved, and there’s no risk of losing documentation. And because it’s a custom SharePoint platform, people working remotely can still access it. In addition, if your business is audited, you have a clear “paper trail” of electronic log entries showing who approved the request and when.

Final Thoughts

With a manual, paper-based business process, technically the only restrictions are the limits of the human body. When you convert this to a custom SharePoint intranet, however, you must simplify and streamline the process so that it fits the technical limitations of the platform you’re using, while still ensuring the workflow runs as smoothly as it did before. It’s crucial to meet with management and other key stakeholder’s to identify the essential steps in the workflow that will be brought over to your new intranet solution.

Disclaimer : This article originally appeared on Portal Solutions’ Digital Workplace Today Blog

Posted in Office 365, SharePoint 2013, SharePoint 2013 Administration, SharePoint 2013 Development | Tagged , , , , , , , , , | Leave a comment

How to setup Gmail as SMTP Relay Server in SharePoint?

Emails are one of the important functionalities of SharePoint. Often when we create our own development environment we have to create our own SMTP server or rely on our company’s SMTP server (which may not be accessible outside company’s firewall).

My preferred route is to use Gmail as SMTP relay server because it is easy to setup up, free and my development environment can be completely isolated from my company’s infrastructure. We just need a valid Gmail account and our development environment should be connected to Internet. J

Here are the steps.

  1. Sign up for Gmail account if you don’t have one.
  2. Change the settings of the Gmail account and turn on the access to the less secure apps.
  3. Login to the SharePoint server (Windows 2008/2008 R2/2012/2012 R2) using admin account. The screen shots in this blog post are taken from Windows Server 2012 R2. If have already installed the SMTP server then skip the steps till 15.
  4. Install feature “SMTP Server” using server manager. Open the server manager.

  5. Click on “Add roles and features”.

  6. Click Next.

  7. Select the “Role-based or feature-based installation” and click next.

  8. Select the “Select a server from the server pool” and click next.

  9. Click Next in the “Server Roles”.

  10. Scroll down and select “SMTP Server”.

  11. A pop will show up to install the pre requisites. Click on “Add Features”.

  12. Click Next.

  13. Confirm the installation by click “Install”. The installation will take 2-5 minutes depending the server resources.

  14. We will see following message after successful installation. Click “Close” to exit the wizard.

  15. Now search for IIS 6.0 in the Search bar.

  16. Expand the “Local Computer” and Right click on the “SMTP Virtual Server” and then click Properties.

  17. Click on the “Access” Tab.

  18. Under “Relay Restrictions” click on “Relay”.

  19. Select the Check Box “All except the list below” and then click “OK”.

  20. Then click on the “Messages” tab and make sure following settings are there.
    1. Limit messages size to (KB) = 2048
    2. Limit session size to (KB) = 10240
    3. Limit number of messages per connection to : 20
    4. Limit number of recipients per message to: 100
    5. Badmail directory : C:\inetpub\mailroot\BadmailA

  21. Click on the “Delivery” tab and then click on “Outbound Connections”.

  22. Select 587 as TCP port instead of default 25 and then click “OK”.

  23. Click on “Outbound Security”.

  24. Select “Basic authentication”. In the user name enter valid Gmail address and the corresponding password of the Gmail account. Select the check box of “TLS encryption” and then click OK.

  25. Click on “Advance”.

  26. Enter the following information and then click OK.
    1. Maximum hop count: 15
    2. Fully-qualified domain name: FQDN of the server. If
    3. Smart host : smtp.gmail.com

  27. Click “OK” and Apply and then OK.

  28. Now open the Central Administration ->System Settings->Configure outgoing e-mail settings. The following screen shots are from SharePoint 2013. The same steps can be used in SharePoint 2010.

  29. Enter the fully qualified domain name of the server in the “Outbound STMP server” and then click “OK”.

  30. To test the outgoing emails are working, setup “Out Of The Box” alert on any SharePoint list or library.

Happy Learning. J

Posted in SharePoint 2013, SharePoint 2013 Administration | Tagged , , | 1 Comment

How An Unengaged Key Stakeholder Threw A Wrench In Our Custom Intranet Project


Remember the last time you worked hard on something, only to find out in horror that you missed a major requirement for success? Did you feel annoyed and frustrated, or were you kicking yourself for not paying more attention to what needed to be done?

When building a custom intranet solution, it’s vital to make sure you have all the requirements ironed out before you begin development. Keep reading to hear what happened to us and learn how to avoid such a pitfall on your next project.

Our Story

Recently, we were working with a client to convert a paper-based process into an electronic one by building a custom SharePoint/Office 365 sites solution. We held discovery and requirement gathering sessions, created diagrams for the electronic workflow using Microsoft Visio and went through several iterations of constructing the system and getting feedback from our client.

At the last minute, a key stakeholder who had been missing from the project up to this point jumped in. And it was at that point we realized that the rest of our client’s team forgot to bring up some major issues that this key stakeholder was now mentioning. Because this feedback was completely valid and coming from an important contact in the organization, we had to put the rest of the project on hold while we worked to accommodate these requirements within the tight schedule.

What We Learned

When you start developing your custom intranet solution, you should never assume that the list of what you absolutely need is set in stone. Always keep in mind that there could be some changes down the line, and build your system in a way that can accommodate these changes.

With this mindset, you’ll minimize the extra work you may have to do in the future, and you’ll perform your due diligence to create a system that can be flexible and open to new requirements. Also, leave a reasonable amount of free time in your project’s schedule for any unexpected issues that pop up during development.

What You Should Do

To prevent a repeat of this unfortunate experience, involve your company’s key stakeholders in the research and development processes as much (and as early) as possible. Before the implementation phase begins, you should hold a non-optional meeting with all the important figures in the company. They should hear a demo or presentation from the team you’ve chosen that describes what will be implemented. Once they understand the roadmap, they should provide the initial go-ahead.

Still, it can be very difficult for key stakeholders to have the time to spend in meetings, as they’re often higher-ups within an organization who are very short on time. Instead, at the end of an important meeting, summarize what’s been discussed and share it with them when they have time in their schedule. Try to involve most of the stakeholders from the beginning of the process. Even if they play a relatively minor role, you might be surprised by the good ideas or key information they can provide.

Creating and strictly adhering to a series of scheduled meetings can get more key stakeholders involved. When meetings are planned at the last minute or moved around, it can be difficult to keep the level of attendance up. Try to make the meetings as consistent as possible in terms of who’s present, when they’re held and what’s discussed.

Final Thoughts

As with any project, building a custom SharePoint/Office 365 sites solution rarely goes exactly as planned, with new and unanticipated issues likely to arise. By planning ahead and involving your company’s key figures in the process as much as possible, you can minimize the stress and surprises for both yourself and the development team.

Disclaimer : This article originally appeared on Portal Solutions’ Digital Workplace Today Blog

Posted in Office 365, SharePoint 2013 | Tagged , , , , , , , , , , , | Leave a comment

How to disable/turn off sound notification in Office 365 OWA (Outlook Web App)

I like Office 365 except few things and email notification sound is one of them. In Office 365 we receive email notification sound even if we are not using OWA but logged on to other Office 365 products like Office 365 Sites/Yammer etc.

I prefer less distractions and have turned off the notifications in my desktop Outlook client. I am currently working on multiple Office 365 sites (SharePoint online) projects and every time I log in to a client’s site, the email notification sound really annoys me.

If you are like me and would like to turn off the sound notifications, you can use the following steps as of August 2015. The reason, I mentioned “as of August 2015” because as the Product evolves, the option/settings page may change in near future.

  1. Go to Office 365 OWA https://outlook.office365.com/owa/ and sign in with your account and password.
  2. In the top right corner click on “Gear Icon” and then “Office 365 settings”.

  3. Click on “Notifications”.
  4. Uncheck “New mail” and “New mail sound” and click “Save”. “New mail” option shows the email notification in the top right-hand corner of the screen. I prefer to uncheck that box as well. J

  5. You are all set.
Posted in Office 365, Office 365 OWA, Uncategorized | Tagged , , , , , , , , , | 2 Comments

How to ReOrder SharePoint List Items using Custom Code/PowerShell and SharePoint Designer in SharePoint 2010 and SharePoint 2013

The functionality to “Reorder list items” is inbuilt for “Links” lists both in SharePoint 2010 and SharePoint 2013.


   “Change Item Order” option in SharePoint 2013 Links List.


 “Change Item Order” option in SharePoint 2010 Links List.

 How does this “Change Item Order” button work?

SharePoint uses hidden column “order” to set the order. When we select the “Change Item Order” option, SharePoint uses “/_Layouts/Reorder.aspx?List=ListGUID” page to reorder the list items.

But this wonderful feature is hidden for other list templates and only available with OOTB Links Lists. I wonder why?

 In this blog post I have listed different methods we can use to enable this feature for other lists.

 Method 1: Use Console Application/PowerShell script. This method is preferable because we can reuse it for different lists with ease. We just need to provide the site url and the list name.

 C# Console Application You can download this file from here.

using Microsoft.SharePoint;
namespace ReOrderSharePointListItems
  class ReOrderSharePointListItems
    static void Main(string[] args)
      using (var site = new SPSite("yourSiteCollectionUrl"))
        using (var web = site.OpenWeb())
          var list = web.Lists["yourListTitle"];
          SetButton(list, web);
          SetOrder(list, web);

   /// <summary>
   /// Set Button "Change Item Order" in
   /// Top Ribbon of List
   /// </summary>
   /// <param name="list"></param>
   /// <param name="web"></param>
  static void SetButton(SPList list, SPWeb web)
    SPUserCustomAction action = list.UserCustomActions.Add();
    action.Location = "CommandUI.Ribbon";
    action.Sequence = 85;
    action.Title = "PS.OrderItems";
    action.Rights |= SPBasePermissions.EditListItems;
            action.CommandUIExtension =
    <Button Id=""ReOrderAction.Button""
            TemplateAlias=""o1"" Command=""ReOrderCommand""
            CommandType=""General"" LabelText=""Change Item Order""
            Image16by16Top=""-192"" Image16by16Left=""-144""
            Image32by32Top=""-192"" Image32by32Left=""-288""/>
    <CommandUIHandler Command =""ReOrderCommand""
            CommandAction=""{0}/_layouts/reorder.aspx?List={1}"" />
    web.ServerRelativeUrl.TrimEnd('/'), list.ID);

  /// <summary>
  /// Order Default view by field "order"
  /// </summary>
  /// <param name="list"></param>
  /// <param name="web"></param>
  static void SetOrder(SPList list, SPWeb web)
    SPView view = list.DefaultView;
    view.Query = @"<OrderBy><FieldRef Name=""Order""

PowerShell Script: You can download this script from here.

[void] [System.reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") | out-null
# Add "Change item Order" button at target List
$siteUrl = "yourSiteCollectionUrl";
$listTitle = "yourListTitle";
$site = Get-SPSite -Identity $siteUrl;
$web = $site.OpenWeb();
$list = $web.Lists[$listTitle];
$action = $list.UserCustomActions.Add();
$action.Location = "CommandUI.Ribbon";
$action.Sequence = 85;
$action.Title = "PS.OrderItems";
$action.CommandUIExtension =
<Button Id=""ReOrderAction.Button"" TemplateAlias=""o1""
  Command=""ReOrderCommand"" CommandType=""General""
  LabelText=""Change Item Order""
  Image16by16Top=""-192"" Image16by16Left=""-144""
  Image32by32Top=""-192"" Image32by32Left=""-288""/>
<CommandUIHandler Command =""ReOrderCommand""
  CommandAction=""{0}/_layouts/reorder.aspx?List={1}"" />
$web.ServerRelativeUrl.TrimEnd('/'), $list.ID);
$view = $list.DefaultView;
$view.Query = [string]::Format("<OrderBy><FieldRef Name=""Order""
Write-Host "-------------------------------------"
Write-Host "Change item order button added successfully for
the list :  " $list.Title -foregroundcolor Green -nonewline
Write-Host " in the site  : " $site.Url -foregroundcolor Green
Write-Host "-------------------------------------"

Method 2: Use SharePoint designer and PowerShell.

1. Since “order” column is hidden, we need to use following PowerShell script to make this field visible. Once this field is visible, we can use it in List Views. You can download this script from here.

# Change List Schema to unhide order field.
$siteUrl = "yourSiteUrl;
$listTitle = "yourListTitle";
$site = Get-SPSite -Identity $siteUrl;
$web = $site.OpenWeb();
$list = $web.Lists[$listTitle];
Write-Host "-------------------------------------"
Write-Host "Order field is set to visible in
list :  " $list.Title -foregroundcolor Green -nonewline
Write-Host " in the site  : " $site.Url -foregroundcolor Green
Write-Host "-------------------------------------"

2. Open the list in SharePoint Designer

3. Click on “Custom Actions” and then select “View Ribbon”


4. Enter following information.

  • Name : “Change Item Order”
  • Navigate to URL:  {SiteUrl}/_layouts/Reorder.aspx?List={ListGUID}
  • Button Image URL (16×16): {SiteUrl}/_layouts/1033/images/formatmap16x16.png
  • Button Image URL (32×32): {SiteUrl}/_layouts/1033/images/formatmap32x32.png


5. Click OK. This will add the custom action in the list ribbon as shown below.



6. Next step is to modify the default view of the list and sort the items by field “Order”.


7. All set.

Note : “Change Item Order” option does not modify the version history of list items. So if you are using Content Deployment, reordering the list items will not move changes to target environment.

Posted in SharePoint 2013, SharePoint 2013 Development | Tagged , , , , , , , , | 5 Comments

SharePoint 2013 Installation Guide – Development Environment

SharePoint 2013 Installation Guide – Development Environment

In this blog post I have document the steps for creating your own SharePoint 2013 development environment.

Unlike SharePoint 2010, you can’t install domain controller and SharePoint 2013 in same server if you would like to use workflow manager and office Web Apps. If you would like to install Workflow manager and Office WebApps then we need at least two virtual machines, one with domain controller and another with SharePoint 2013 and SQL Server.

Note: If you don’t have MSDN licenses then you can sign up for preview licenses and in most cases those will be good for 3 to 6 months.

Domain Controller Virtual Machine:

First step is to create a domain controller virtual machine (VM1).  Operating system for Domain Controller VM can be Windows Server 2003, Windows Server 2008 or Windows Server 2012. Once you install the operating system, configure Active Directory Domain Services. You can find the steps here. http://technet.microsoft.com/en-us/library/cc755059(v=ws.10).aspx

You can give nice domain name for your test setup. For example: sharepointlab.com

Note: We don’t need lot of RAM for Domain controller. 512MB or 1GB is more than enough.

SharePoint 2013 Virtual Machine:

Once the domain server (VM1) is up and running, create virtual machine for SharePoint 2013 server (VM2).

Hardware and Software Requirements:

Following is the summary of the hardware and software requirements for SharePoint 2013 server.  For detailed hardware and software requirements please check this out. http://technet.microsoft.com/en-us/library/cc262485.aspx

  • RAM: 8 GB (Minimum)
  • Hard disk Space: 80GB
  • Processor: 64bit and 4 core
  • Operating System: 64-bit edition of Windows Server 2008 R2 Service Pack 1 (SP1) Standard, Enterprise, or Datacenter or the 64-bit edition of Windows Server 2012 Standard or Datacenter
  • SQL: 64-bit edition of Microsoft SQL Server 2012 or 64-bit edition of SQL Server 2008 R2 Service Pack 1

Note: If your domain controller VM has required operating system for SharePoint 2013, you can make copy of that VM to install SharePoint 2013. You have to run sysprep on the copied VM. Sysprep can be run from “C:\windows\System32\sysprep”. Sysprep will wipe out SID, machine name and custom network settings. Also you have to re-activate the windows.

Setup up internal network between Domain Controller and SharePoint 2013 Server:

After operating system is installed on the VM2, setup the internal network between VM1 and VM2.You can assign the static IP addresses for VM1 and VM2 as follows.

VM1: Use the Following IP Address Internet Protocol Version 4 (TCP/IPv4) settings
(feel free to use the ip addresses of your choices):

  • IP Address:
  • Subnet mast:
  • Default Gateway:
  • Use the Following DNS Server Addresses:
    • Preferred DNS Server:

VM2: Use the Following IP Address Internet Protocol Version 4 (TCP/IPv4) settings:

  • IP Address:
  • Subnet mast:
  • Default Gateway:
  • Use the Following DNS Server Addresses:
    • Preferred DNS Server:

Check if you can ping VM1 from VM2 to verify both the VMs are on internal network.

Join VM2 to Domain:

Follow steps mentioned here to attach VM2 to the domain (sharepointlab.com). http://technet.microsoft.com/en-us/library/cc770919(v=ws.10).aspx . You can give the name SharePointLab01 to this VM.

Create Service Accounts:

All the service accounts are required to be domain accounts. Todd O. Klindt has nice blog post on service accounts. http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=237. The steps to create new domain users are here. http://technet.microsoft.com/en-us/library/cc732336.aspx . When choosing service accounts, consider the principle of least privilege. The service account should have exactly the privileges that it needs to do its job and no more privileges. Create the following service accounts in VM1.

  • sharepointab\sp_sql_server
  • sharepointlab\sp_sql_agent
  • sharepointab\sp_admin
  • sharepointab\sp_farm

The following service accounts can be created in VM1 as and when needed.

  • sharepointab\sp_content
  • sharepointab\sp_serviceapps
  • sharepointlab\sp_app_pool
  • sharepointlab\sp_web_app
  • sharepointlab\sp_service
  • sharepointlab\sp_crawl
  • sharepointlab\sp_ups
  • sharepointlab\sp_bi

Make “sharepointab\sp_admin” local admin on VM2.

Install SQL 2012 Server on VM2:

Login to the VM2 using “sharepointab\sp_admin” account and run the setup.exe located inside SQL Server 2012 installation files.

Click Installation on the left-hand side of the SQL Server Installation Center.


Select “New SQL Server stand-alone installation or add features to an existing installation”.

Installer will check for issues before installation. If there are no errors, then you will get following page.


On the Setup Support Rules page, click OK.

You can skip product update.

Next page will prompt to enter the license key. Enter evaluation and click Next.


Accept the license terms and click Next.

The setup will then start installing files as shown below.


After that “Setup Support Rules” will check and identify if there is any problem that can occur during the installation. Click Next if there are no failures.


On the Setup Role page, select SQL Server Feature Installation and click Next.


On the Feature Selection page, check the following options and click Next.

  • Database Engine Services
    • Full-Text and Semantic Extractions for Search
    • Reporting Services – SharePoint
    • Reporting Services Add-in for SharePoint Products
    • Client Tools Connectivity
    • Client tools backward compatibility
    • Management Tools Basics
      • Management Tools Complete


If the installation fails because of .NET Framework 3.5 service pack 1 then Use the Server Manager to add the feature “.NET Framework 3.5.1. Features”. The steps to add the feature are found here http://technet.microsoft.com/en-us/library/cc732263.aspx#BKMK_add


If there are no problems, Click Next on the following page.


In the Instance Configuration, select the default instance and click Next.


Click Next on the Disk Space Requirements page.

On the Server Configuration page, use the SQL service accounts “sharepointlab\sp_sql_agent” for services SQL Server Agent and “sharepointlab\sp_sql_server” for SQL Server Database Engine. Enter their respective passwords and click Collation. Select collation “Latin1_General_CI_AS_KS_WS” (Latin1-General, case-insensitive, accent-sensitive, kanatype-sensitive, width-sensitive) and then click next.



On the Database Engine Configuration page, add the SQL server Admins. To do that, on the Server Configuration tab, click Add. After adding SQL server admins click Next.


Click Next on the Reporting Services Configuration Page.

Click Next on the Error Reporting Page.

Click Next on the Installation Configuration Rules Page.

Click Next on the Ready to Install Page.

Installation will take some time depending on the speed/performance of the VM2.


After completion, setup will prompt to restart the machine as shown below. Click OK and then Close.


Restart VM2 to complete the installation.

Open SQL Server 2012 Management studio and grant “sharepointlab\sp_admin” SQL Server Roles “dbcreator”, “securityadmin” roles. The steps to add server roles are here. http://technet.microsoft.com/en-us/magazine/hh528496.aspx

Install SharePoint 2012 Server on VM2:

Login to VM2 using “sharepointlab\sp_admin” account and run the splash.hta located inside SharePoint Server 2013 installation files.

First install all prerequisites. During this process the VM2 will need access to internet. The VM2 will restart several times. When all the prerequisites are installed you will see following page.


Click “Install SharePoint Server”.


Enter License Keys.

Select Complete Installation.


During installation, you will get the following page.


When the installation is complete, select “Run the SharePoint Products Configuration Wizard now” checkbox and click Close.


Run the SharePoint Configuration Wizard (Gray Wizard).


Select “Create a new server farm”.


Specify the Configuration Database settings and Database access account.


Specify Farm passphrase. Note down the password at secure location which we will need in future. It is impossible to retrieve the farm passphrase. You can just reset it. The instructions are given here. http://sharepointadam.com/2010/01/21/reset-the-farm-passphrase-in-sharepoint-2010/.

Specify the port number for central administration web application. Avoid using port 8888, because by default fiddler uses the same port and you will need to change that if you need to use fiddler to troubleshoot any issues. http://www.fiddler2.com/fiddler2/

Click next and you will see the configuration settings that will get applied.


Click next and the configuration wizard will run for 2-5 mins.


Known Issue:

If the configuration fails at step 3 with below error message


We need to change the “max degree of parrallelism” of the SQL 2012 Server. The steps are mentioned here. http://msdn.microsoft.com/en-us/library/ms181007(v=sql.105).aspx

Login to the SQL server with SQL service account (sharepointlab\sp_sql_server) and change the “max degree of parallelism” to 1 using following SQL script.

sp_configure ‘show advanced options’, 1;
sp_configure ‘max degree of parallelism’, 1;

Open the SQL 2012 Management Studio. Open a new SQL query and type/paste above commands.


Execute the query.

Till this point, config wizard has already created “SharePoint_Config” database. We need to delete that and re-run the configuration wizard.

If there are no errors during configuration, you will get the Configuration Successful page.


Clicking finish will launch the Farm Configuration Wizard (White Wizard). Using Farm Configuration Wizard, we can create the service applications. It is recommended to create service applications as and when needed and not to create them using Farm Configuration Wizard.

By default, SharePoint 2013 Configuration wizard (Gray Wizard) creates following Service Applications.

  • Application Discovery and Load Balancer Service Application
  • Security Token Service Application


Following are the screen shots of databases before and after SharePoint 2013 Configuration Wizard.

Databases before SharePoint 2013 Configuration Wizard:


Databases after SharePoint 2013 Configuration Wizard:


At this point you have successfully created the SharePoint 2013 development environment. You can now create the Web Application, create site collections and different service applications. If you are a developer then you can install the Visual Studio 2012.

Posted in SharePoint 2013, SharePoint 2013 Administration | Tagged , , , , | 5 Comments