My Latest Findings

I am down in Chicago for the Microsoft Ignite Conference which is turning out to be the largest Microsoft Conference ever, 23,000 attendees. The McCormick Place is on a scale that makes the Vegas Conference centers look tiny in comparison.

Being here has rekindled the desire to share more knowledge with the community, so after almost a year since the last posts, it is finally time to start blogging again.

I have been involved in the TAP Program for SharePoint 2016 On-Prem and can now talk about the things I’ve been learning there. I have decided to expand the scope of the writing to include some PowerShell, Azure and Office 365 content as well as other technologies. The new content is not up yet as it will start trickling in in the next few months.

For now here is one of the best new tidbit of information about SharePoint 2016 I learned at the Ignite conference, and that had not even been announced to the TAP Program yet was Zero-Downtime Updates. The promise here is that the monthly CUs will become smaller – sometimes these have been larger than the initial RTM SharePoint ISOs – and the installation will cause zero downtime to the users. They say the user will not even notice the upgrade is happening. I assume this is stemming from Office 365 and the need to deploy new features without affecting the customer experience. In practice this has not been something available in the TAP Program but this is definitely something I am anxiously waiting to test.

Stay tuned for more during the conference (WiFi permitting) and the following months.

In the meantime here are a few panoramic pictures I grabbed in the last few days:


The dining area

Chicago from 95th floor


Keynote session



Smtp4Dev – As a windows service

On September 3, 2014, in Apps, C#, Environment Setup, SharePoint, by matdesmarais

I have been using the Codeplex solution Smtp4Dev for many years and have always wished there was a windows service version of this application available instead of having the application running in the background.

I rebuilt the application as a windows service and I am releasing it here for anyone to use.

Run the setup.exe to install the application and register the service.

Once installed the following steps need to be performed:

  • navigate to c:\Program Files (x86)\smtp4devsvc\smtp4devsvc\
  • open for editing the file named : Smtp4DevSvc.exe.config (Notepad needs to be run as administrator)
    • this xml file contains the settings for the service’s behavior
  • the DefaultStorePath setting is the path on your local drive (or UNC path) where the email messages will be stored as they come in. As a windows service, there is no interface to display the messages in.
  • The other values should be left as default.
  • Save the configuration xml file
  • go to the services management console and start the Smtp4DevSvc service.

It is set to start automatically on future starts.

Source Code

Installation File


The language pack download tool at has been updated to support SharePoint Foundation 2013.

Get it from the Codeplex page or directly using this link:


The language pack download tool at has been updated to support the Service Pack 2 of SharePoint 2010 and SharePoint 2010 Foundation. lpdownloader2013

Get it from the Codeplex page or directly using this link:




Microsoft has finally released the SharePoint 2013 Language Packs as a public download. These are the same downloads that have been available to MSDN subscribers since RTM release. The link to the language packs at Microsoft is:

I have of course updated my SharePoint Language Pack Downloader to handle these new downloads. It is available at: Please get this latest version and let me know what you think. this new version still handles SharePoint 2010 and SharePoint 2010 Foundation.



I was presented with a head scratcher issue yesterday. This customer has a custom ribbon button for Outlook 2010 that takes the currently selected email and submits it to their SharePoint 2010 document management system. This button accomplishes this simple task using the MailItem.SaveAs() functionality available in the Microsoft.Office.Interop.Outlook Namespace.

This ribbon button has been functioning great for the past 5 months and without any apparent change, it stopped working by throwing an error that “The Operation Failed“.

I found one workstation that was still able to submit using the same custom button. This workstation sees very little use and had not been rebooted in months. I rebooted this computer and as soon as it came back, the ribbon button was now returning the same error as the other computers.

This raised a flag for me that there might have been a change in the computers themselves and it was not a change in SharePoint that was breaking the functionality. I started to look through the recent Windows Updates that had been applied and noticed many updates, but one in particular was specific to Outlook 2010: KB2687623 Outlook 2010 update: November 13, 2012. I retracted this update and just like that the functionality was restored.

Now this update documents the following changes: (Link to KB article)

Issues that this update fixes

  • When you connect to the Microsoft Office 365 Exchange Online service by using an expired password, Outlook 2010 enters a disconnected state. However, you do not receive a notification that states that the password expired.
    Note After you install this hotfix, a dialog box appears before the password expires. The dialog box lets you open a URL to change your password. For more information about Outlook password expiration, click the following article number to view the article in the Microsoft Knowledge Base:

          ( )

    Outlook password expiration notification in Office 365

  • Assume that Outlook 2010 is displayed in a right-to-left language such as Arabic or Hebrew. Additionally, assume that you press Ctrl, you right-click the Outlook icon in the notification area, and then you click Connection Status. In this situation, the content in the Microsoft Exchange Connection Status dialog box is not displayed correctly.
  • When you accept a meeting request in certain time zones, Outlook 2010 crashes. 
  • Note This issue occurs in the Jerusalem time zone.


Obviously this update fixes issues that are unrelated to our problem at hand. For future reference, it is always a good idea to verify each update prior to pushing it enterprise-wide. It might cause less head-aches down the road.

UPDATE: A comment left by SWRadio indicated that the update to Outlook 2010 KB2597090 (2/2013) also breaks the VSTO remote SaveAs() functionality. This one can also be removed from your system. Thanks SWRadio.


UPDATE!: Please see this post. Microsoft has released the language packs and I have updated my Language Pack Downloader tool on Codeplex.

They are not publicly available yet. Only through MSDN Subscriptions so I cannot update my Language Pack downloader just yet. Expect an update when Microsoft releases these downloads off to the public.

In the mean time, if you need them and have access to MSDN, click here to get directed automatically:

Make your language selection on the quick-launch menu on the left.


SharePoint 2013 : 2010 Backwards Compatibility

On October 15, 2012, in SharePoint 2013, by matdesmarais

SharePoint 2013 finally introduces backwards compatibility in SharePoint 2013 allowing you to use your SharePoint 2013 farm as a 2010 farm. This will also make life easier for developers as they will not need to setup multiple environments for development. Nik Patel has prepared a rundown of the SharePoint 2010 experience in SharePoint 2013. His article can be found here:

Visual Studio 2012 also offers the dual development tracks.

This, combined with the SharePoint 2010 Experience in SharePoint 2013 will make for a pleasant development experience.


SharePoint 2013 introduces the new SharePoint App model that essentially replaces the sandbox model of solution development. Apps are self contained and easily deployable even more so than sandbox solutions ever were in SharePoint 2010. Microsoft recommends to use apps rather than farm solutions whenever you can. Apps have the following advantages over farm solutions:

  • They provide users with the easiest discovery, purchase, and installation process.
  • They provide administrators with the safest SharePoint extensions.
  • They provide you with the simplest marketing and sales system based on a Microsoft-provided online app store.
  • They maximize your flexibility in developing future upgrades.
  • They maximize your ability to leverage your existing non-SharePoint programming skills.
  • They integrate cloud-based resources in smoother and more flexible ways.
  • They enable your extension to have permissions that are distinct from the permissions of the user who is running the app.
  • They enable you to use cross-platform standards, including HTML, REST, OData, JavaScript, and OAuth.
  • They enable you to leverage the SharePoint cross-domain JavaScript library to access SharePoint data. Alternatively, you can use a Microsoft-provided secure token service that is OAuth-compliant.
  • They can extend SharePoint Online websites as well as on-premises SharePoint websites.

Of course, farm solutions are still required in some instances where you need to run code on the server directly. The app model does not allow running code on the Server object model but uses the following APIs to access SharePoint:

  • SharePoint REST/OData service to access SharePoint sites, lists, and other data.
  • SharePoint JavaScript, Silverlight, or .NET Framework client object models.
  • On Windows Phones, you can use the SharePoint Windows Phone object model. 

The general guide is that farm solutions are still used for administrative type solutions that would deploy timer jobs, central administration features, PowerShell commands, etc. anything that would be of WebApplication, Farm, or Site Collection scoped. A guiding principle being that apps are for end-users and farm solutions for administrators.




SharePoint 2013 finally released yesterday as a technical preview. This article is based on the July 2012 technical preview release and this functionality could change before final release.

SharePoint 2013 now blends the old search components with the FAST search components into one standard product. About 80% of FAST Search was embedded in the SharePoint Search platform, representing the most used features of FAST Search. *Update* The Standard CAL of SharePoint only integrates a subset of the FAST search features (Thanks to Niraj for pointing this out)*

The following diagram illustrates the new search server logical architecture:

The architecture of the search service breaks down in the following components:

Crawl Component:

The crawl role is responsible for crawling content sources but not to parse the actual documents. It delivers crawled content and its associated metadata to the content processing component

Content Processing Component:

Processes the crawled items and feeds these items to the index component. The processing happens through Format Handlers, it transforms the crawled items into artifacts that can be included in the search index after parsing the content and mapping the properties. This component also performs linguistic processing at index time to detect language and extract entities. It writes information about links and URLs to the Link Database directly and also generates phonetic name variations to help with people search result efficiency. iFilters are sill useful in content processing and is the method to extend parsing capabilities.
Analytics Component:

 Tracks crawled content and how users interact with the search results. It replaces the Web Analytics service form SharePoint 2010 to track usage of site content, passing this information back to the Content Processing Component to add to the search index, improving search relevance.

Index Component:

Accepts operations from both the content processing component by storing results of the item parsing in the index files, and from the query processing component by providing result sets. It is in charge of managing the indexed content when the architecture is changed by the search administration component.

Query Processing Component:

The query processing component receives a query from the end user, performs analysis,  linguistic processing like word breaking, stemming, query spellchecking, thesaurus, attempts to optimize precision, recall and relevancy. This optimized query is sent to the index component, and the returned result set is again processed further before being sent back to the search front-end.

Search Administration Component:

Runs a number of system processes required for search and is responsible for search provisioning and topology changes. The Search Administration component coordinates each of the listed search components on this page.
The following diagrams illustrate the Small, Medium and Large server examples presented by Microsoft, offering a capacity of 10 million items, 40 million items and 100 million items respectively.


Reference material: