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.
Here's the actual PnP Core team who control miscellaneous efforts around this initiative.














Contact
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.
- Office 365 Developer Patterns and Practices - June 2016 release
- Contributing to Office Dev PnP and SharePoint PnP documentation just got easier
- Office 365 Developer Patterns and Practices–May 2016 release
- Office Dev PnP Core Component - Training package
- Office 365 Developer Patterns and Practices–April 2016 release
- Office 365 Developer Patterns and Practices–March 2016 release
- Introducing Office Dev Patterns and Practices Office Hours and Interest Groups
- Office 365 Developer Patterns and Practices–February 2016 release
- Office 365 Developer Patterns and Practices–January 2016 release
- New SharePoint CSOM version released for SharePoint Online
- Combining Office store add-ins with high trust permissions now supported
- Office 365 Developer Patterns and Practices–December 2015 release
- SharePoint Tenant CSOM object support in SharePoint 2013 and 2016
- Fixing timeout exception on CSOM based site collection creation
- Office 365 Dev PnP graphics presentation for reuse
- Office 365 Developer Patterns and Practices–November 2015 release
- Transforming your SharePoint customizations to add-in model - Resources
- Office 365 Developer Patterns and Practices–October 2015 release
- Office 365 Developer Patterns and Practices–September 2015 release
- First year of Office 365 Dev Patterns and Practices (PnP) program
- Office 365 Developer Patterns and Practices–August 2015 release
- Office 365 Developer Patterns and Practices–June 2015 release
- PnP Case Study: Finnish intranet provider expands business by moving to a cloud add-in model
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.
Training
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.
- #1 - Introduction to SharePoint add-in model transition
- #2 - Managing site settings using add-in model
- #3 - Controlling branding in SharePoint using add-in model
- #4 - Building UX components with add-in model
- #5 - Remote timer jobs and event receivers
- #6 - Site collection and site provisioning with add-in model
- #7 - User Personalization and One Drive for Business operations using add-in model
- #8 - Enterprise Content Management and SharePoint add-ins
- #9 - Using search capabilities with add-in model
- #10 - Transformation guidance from farm solutions to add-ins
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.
- Converting existing JS apps to SharePoint Framework - Waldek Mastykarz & Vesa Juvonen
- Introducing SharePoint WebHooks - Bert Jansen & Vesa Juvonen
- Introduction to Microsoft Graph .NET SDK - Paolo Pialorsi & Vesa Juvonen
- Preparing for SharePoint Framework - What should I learn? - Waldek Mastykarz & Vesa Juvonen
- Introduction to Bulk UPA Custom Profile Properties Update API - Vesa Juvonen & Bert Jansen
- Getting started with SharePoint Framework - Waldek Mastykarz & Vesa Juvonen
- Getting started with web stack in SharePoint development - Stefan Bauer, Waldek Mastykarz & Vesa Juvonen
- Managing your app principals in Office 365 - Tooling and Scripts - Frank Marasco & Vesa Juvonen
- JavaScript and Microsoft Graph (Quick Contacts Sample) - Stefan Bauer, Waldek Mastykarz & Vesa Juvonen
- SharePoint Client Side Object Model versioning for your customizations - Bert Jansen & Vesa Juvonen
- Introducing PnP JavaScript Special Interest Group - Patrick Rodgers & Vesa Juvonen
- How to get started with Office Dev PnP? - Vesa Juvonen & Erwin van Hunen
- How to contribute to Office Dev PnP initiative? - Bert Jansen & Vesa Juvonen
- Responsive UI Package for SharePoint 2013 and 2016 - Paolo Pialorsi & Vesa Juvonen
- Introducing Widget Wrangler for SharePoint development - Bob German, Julie Turner & Vesa Juvonen
- SharePoint Client Side Development and Cross-Origin Resource Sharing (CORS) - Patrick Rodgers & Vesa Juvonen
- Preparing your on-premises SharePoint 2013 or 2016 for add-in usage - Bert Jansen & Vesa Juvonen
- Provider hosted add-in infrastructure setup for SharePoint on-premises - Vesa Juvonen & Bert Jansen
- Introduction to Authentication Manager in PnP Core Library - Bert Jansen & Vesa Juvonen
- Introduction to Microsoft Graph for Office 365 developer - Paolo Pialorsi & Vesa Juvonen
- oAuth and OpenID Connect for Office 365 developer - Paolo Pialorsi & Vesa Juvonen
- SharePoint feature framework vs Remote Provisioning - Erwin van Hunen, Bert Jansen & Vesa Juvonen
- Building Help Desk application with Microsoft Graph - Jonathan Huss & Vesa Juvonen
- Property bag trick for CSOM to enable additional configurations - Vesa Juvonen & Bert Jansen
- Azure AD for Office 365 developer - Radi Atanassov & Vesa Juvonen
- Throttling mechanisms in SharePoint Online - Bert Jansen & Vesa Juvonen
- SharePoint Nuget Packages and PnP Core component - Bert Jansen & Vesa Juvonen
- Provisioning engine and reference solution with AngularJS - Brian Michely, Frank Marasco & Vesa Juvonen
- JavaScript performance considerations with SharePoint development - Patrick Rodgers & Vesa Juvonen
- Asynchronous operations with Office 365 using Azure WebJobs - Vesa Juvonen & Bert Jansen
- Branding SharePoint using add-in model techniques - Vesa Juvonen & Bert Jansen
- JavaScript development patterns with SharePoint - Patrick Rodgers & Vesa Juvonen
- Introduction to Office Dev PnP Partner Pack - Paolo Pialorsi & Vesa Juvonen
- Introduction to Office Dev PnP Provisioning Engine - Erwin van Hunen & Vesa Juvonen
- Using PnP PowerShell for automating tasks with Office 365 - Erwin van Hunen & Vesa Juvonen
- Background job patterns - Remote timer jobs - Scenarios and approaches - Bert Jansen & Vesa Juvonen
- OneDrive for Business changes from customization perspective with new UI experience - Vesa Juvonen & Bert Jansen
Recent Videos
- PnP Provisioning Engine - Introducing PnP file type for template handling - June 2016
- Introducing Bulk UPA Custom Profile Properties Update API - April 2016
- SharePoint Responsive UI Package for on-premises (SP 2013 and SP 2016) - March 2016
- Introduction to Outlook Notifications REST API - March 2016
- Connecting to SharePoint Online from console application with Azure ADAL and PnP Core Component - January 2016
- Using TypeScript in Visual Studio Office add-in project - January 2016
- PnP Partner Pack - Setup and configuration - December 2015
- How to install add-in/app to SharePoint sites using CSOM - November 2015
- Introduction to PnP Transformation Process - June 2015
- Introduction to PnP PowerShell CmdLets - May 2015
- Getting started with PnP Provisioning Engine - May 2015
- Deep dive to PnP Provisioning Engine Schema - May 2015
- Ignite - Deep Dive into Safe SharePoint Branding in Office 365 Using Repeatable Patterns and Practices - May 2015
- Ignite - Future-Proofing Your On-Premises SharePoint Development - May 2015
- Ignite - Transforming Your SharePoint Full Trust Code to the Office App Model - May 2015
- Ignite - Deep Dive into Custom App Provisioning and Deployment in Microsoft Office 365 - May 2015
- Build - Tried and True Practices for Transforming SharePoint Solutions to Cloud-Ready Solutions - April 2015
- Introduction to PnP remote site provisioning engine - April 2015
- Introduction to the PnP timer job framework - March 2015
Recent Podcasts
- Episode 093 with Vesa Juvonen on PnP and the SharePoint Framework
- Episode 083 with Vesa Juvonen on PnP initiative updates
- Episode 071 with Paolo Pialorsi on PnP Partner Pack
- Episode 009 with Vesa Juvonen and Steve Walker
- Episode 031 on Application Lifecycle Management with Vesa Juvonen
- Episode 025 on Solutions, Scenarios & Samples in PnP github repo
- Episode 022 with Suman Chakrabarti on Dev PnP
- Episode 026 on ECM PnP Samples with Frank Marasco
- Episode 018 with Steve Walker on SharePoint UX developer guidance
PnP GitHub repositories
PnP has few different repositories in the GitHub with specific use cases. Here's links and description for each of them.
- PnP - Main repository for SP add-ins
- PnP-Guidance - Repository for guidance articles and materials
- PnP-Sites-Core - Repository for PnP Core component
- PnP-JS-Core - Repository for PnP JavaScript Core component
- nP-PowerShell - Repository for PnP PowerShell Cmdlet's
- PnP-Provisioning-Schema - Repository for remote provisioning schema design
- PnP-Transformation - Repository for Transformation tooling
- PnP-Tools - Scripts and tools for SharePoint on-premises and Office 365
