About Patterns and Practices

The Office 365 Dev Patterns & Practices (PnP) initiative was originally formed in 2013 by a group of Microsoft consultants who were working on the transformation effort of the Office 365 Dedicated customers to Multi-Tenant. This involved taking the SharePoint full Trust Code Solutions and transforming the customizations to the add-in model, but PnP guidance has started evolving to other areas as well, including Office 365 APIs, Office Add-ins and unified APIs. PnP program has now evolved as open source community effort with both internal and external contributors. Notice that Office 365 Dev PnP is not directly linked with the official Patterns and Practices team at Microsoft, which concentrates more on the general development topics.


You are more than welcome to join the team on helping to provide samples which shows different patterns and practices towards add-in model development with SharePoint, Office 365 APIs and Office client. Currently this project is still more focused on the SharePoint scenarios, but we are keeping a keen eye towards including the all-up Office Developer story as we move forward. Your submissions on this area are more than welcome.

The Patterns and Practices team collaborate in the yammer group within the office 365 technical network. "Sharing is caring!"

How to get started or contribute?

We would recommend you to have a look on specific web cast as "How to get started with Office Dev PnP?" from our Channel 9 video blog. If you are looking to contribute back for the PnP initiative, would recommend to have a look on another web cast called "How to contribute to Office Dev PnP initiative?" or check details on how to get started from our PnP GitHub Wiki, which also contains step-by-step instructions on setting up your environment for GitHub usage. GitHub is slightly different tool than classic TFS, if you have used that in the past, but this guidance will provide you all you need to setup your environment with GitHub and how you can always pull down the latest code to your personal GitHub fork.


Monthly releases and community calls

Office 365 Dev PnP releases are done typically first Friday of each month when we perform master merge in GitHub and update Nuget packages among the other key actions. You can always access the latest development time version from the dev branch. We cover details on monthly releases in our monthly community calls. Download calendar invite (ics) to save the call details to your calendar.

Latest News

Please check the dev.office.com blog section for always up to date news also around the Office Dev PnP program.

Monthly Updates

PnP has two main branches. Master merge happens once a month with more comprehensive testing and release notes with detailed credits for the contirbutors. Dev branch has all the latest contributions and development.


We have a bunch of on-demand videos, presentations, demos and hands on labs around transforming your farm solutions to the Sharepoint add-in model and PnP guidance. All of this material is for you to use anyway you want. You can create new training packages and deliver this for your customers as well. All videos are in Channel 9 and each of them contains links to module specific resources.

Guidance documentation

We have guidance documentation for this initiative that is being built and collaborated on by both the community AND Microsoft in GitHub.com. This documentation is also then monthly published on MSDN too. You can check them out here:

  • Using correct Client Side Object Model (CSOM) version for SharePoint customizations dev.office.com blog
  • Introducing Bulk UPA Custom Profile Properties Update API for SharePoint Online dev.office.com blog
  • PnP remote provisioning MSDN
  • Transform farm solutions to the SharePoint app model MSDN
  • CSOM releases and new capabilities - latest API changes GitHub
  • Upload large files sample app for SharePoint (Updated) MSDN Github
  • Branding and site provisioning solutions for SharePoint 2013 and SharePoint Online MSDN MSDN
  • Customize your SharePoint site UI by using JavaScript MSDN Github
  • Using Microsoft Azure WebJobs with Office 365 MSDN GitHub
  • Autotagging sample app for SharePoint MSDN GitHub

Transformation Process

Our internal Microsoft services teams have shared the project plans, kick off presentation decks, solution assessment report templates, solution design templates and much more. This is a great kit to get you started as a Service Integrator in helping your customers.

Community Calls

2nd Tuesday of each month at 5 PM CET / 8 AM PST. Lync link - ics download. Next call on 9th of August 2016 (July 2016 call is skipped due vacation times).

Recent Samples

  • Governance.ExternalSharing

    Chandrasekar Natarajan (Microsoft). This solution can be used embower site owner and site collection administrators to change external sharing settings. Display's banner in the site, if it's externally shared.

  • Governance.ChangeOwnership

    Chandrasekar Natarajan (Microsoft). This solution can be used for changing the Site Owner of a site collection in SharePoint Online by the current site owner or any site collection administrator.

  • MicrosoftGraph.Cordova.Mobile

    Bill Ayers (spdoctor.com). This sample illustrates how to use the Microsoft Graph API to retrieve data from Office 365 using the REST API and OData with Cordova based implementation.

  • MicrosoftGraph.Office.QuickContacts

    Waldek Mastykarz (Rencore), Stefan Bauer (n8d)  This sample llustrates how you could use the Microsoft Graph to quickly find contacts on mobile devices.

  • Governance.AddInSecurity

    Chandrasekar Natarajan (Microsoft). This solution can be can be used to encrypt client id and secrets for the add-ins in secure ways.

  • MicrosoftGraph.iOS.Objective-C.SendMail

    Simon Jäger (Microsoft). This sample showcases the Microsoft Graph SDK for iOS in a simple iOS application using the Objective-C language.

  • MicrosoftGraph.iOS.Swift.SendMail

    Simon Jäger (Microsoft). This sample showcases the Microsoft Graph SDK for iOS in a simple iOS application using the new Swift language.

  • OutlookNotificationsAPI.WebAP

    Simon Jäger (Microsoft). This sample is ASP.NET Web API project validating and responding to Outlook Notifications - created with the Outlook Notifications REST API. The sample covers the concept of subscribing for notifications, validating notification URLs and inspecting the monitored entities by calling the Outlook REST API using persisted tokens.

  • MicrosoftGraph.Office365.Generic

    Paolo Pialorsi (Piasys.com). This is generic sample for Microsoft Graph around the Office 365 capabilities. Demonstrates different operations cross different areas exposed from Office 365 for Microsoft Graph.

PnP Weekly Web Casts

PnP web casts are quick videos recorded around key topics for the Office 365 and SharePoint add-in model development. These are around 30-45 min long recordings on different resources, guidance and other patterns and practices. All web casts will be published to PnP Channel 9 video blog.

PnP GitHub repositories

PnP has few different repositories in the GitHub with specific use cases. Here's links and description for each of them.

Office 365 Developer Patterns and Practices