About Patterns and Practices

The SharePoint / 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 initiative has now evolved as open source community effort with both internal and external contributors. Notice that SharePoint / 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 SharePoint Developer group under Microsoft Tech Community. "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.

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 contributors. 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:

  • Introducing the API for bulk custom user profile properties update for SharePoint Online |  MSDN
  • Developing add-ins using Tenant permissions with App-Only in SharePoint Online |  MSDN
  • Sandbox solution tranformation guidance |  MSDN
  • How to provide add-in app only tenant administrative permissions in SharePoint Online |  MSDN
  • 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.

Recent Samples

  • React & Office Graph client-side Web Part samples

    Waldek Mastykarz (Rencore). Sample SharePoint Framework Client-Side Web Parts built using React showing interacting with the Office Graph.

  • Angular & ngOfficeUIFabric client-side web part

    Waldek Mastykarz (Rencore). Sample Web Part illustrating using Angular and ngOfficeUIFabric with the SharePoint Framework.

  • SharePoint Web Hooks reference implementation

    Bert Jansen (Microsoft) This SharePoint PnP reference implementation shows how you can you can make use of web hooks in your applications. The web hooks are implemented in an enterprise ready manner using various Azure components such as Azure Web Jobs, Azure SQL Server and Azure Storage Queues for asynchronous web job notification handling.

  • SharePoint.React.SupportTicket

    Brian Michely (Microsoft)  This sample illustrates how you can quickly build and package React forms with validation and send form data to a SharePoint list via the REST API

  • PnP.Deployer

    Simon-Pierre Plante  This sample is a console application that makes it easy to deploy artifacts to SharePoint OnPremise/Online. Based on the PnP Provisioning Engine, it wraps the engine's main functionnalities and provides a new layer responsible for handling tokens, authentication, sequences and logging.

  • Business.O365StarterIntranet

    Franck Cornu  Intranet projects shouldn’t have to reinvent the wheel every time for basic features (like navigation or multilingualism). This solution aims to provide the fundamental building blocks of a common intranet solution with SharePoint Online/Office 365 through a lightweight client side solution using the latest web stack development tools and frameworks.

  • SharePoint.SandboxTool

    Bert Jansen (Microsoft) Using this command line utility you can scan, download, analyze and if possible fix the sandbox solutions in your SharePoint environment. This tool uses multi-threading to improve performance, uses app-only permissions to be able to access all sites and can deal with throttling in case that would happen.

  • AspNetCore.Authentication

    Bert Jansen (Microsoft) An ASP.NET Core implementation of the TokenHelper and SharePointContext classes for use in SharePoint Apps. This library (and sample) demonstrates how to get ASP.NET Core provider-hosted apps authenticated through SharePoint.

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 YouTube channel. Older videos are in the PnP Channel 9 video blog

Recent Videos

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