Office 365: Developer Blog

Office 365 Developer Patterns and Practices – April 2016 release

Office 365 Developer Patterns and Practices (PnP) April 2016 release is out with new contributions from community for the community. This post contains all the details related on what was included with the release and what else has been happening in the PnP world during the past month.


What is Office 365 Developer Patterns and Practices (PnP)? Office 365 Developer Patterns and Practices

PnP is community driven open source initiative where Microsoft and external community members are sharing their learning’s around implementation practices for Office 365 in general and also SharePoint on-premises (add-in model). Active development and contributions happen our GitHub project under ‘dev’ branch and each month there will be a master merge (monthly release) with more comprehensive testing and communications.

This is work done by the community for the community without any actual full time team members. It’s been great to find both internal and external people who are willing to assist and share their learning’s for the benefit of others. This way we can build on the common knowledge of us all. Currently program is facilitated by Microsoft, but already at this point we have multiple community members as part of the PnP Core team and we are looking to extend the Core team with more community members.

Notice that since this is open source community program, there’s no SLAs for the support what we provide from program. There is however highly active PnP Yammer group, where you can get fast support on any questions around the existing materials. If you are interested on getting more closely involved, please check the following guidance from our GitHub wiki or a referenced PnP Web Cast.

Some key statistics around PnP program from April 2016 release

  • GitHub repository forks at different repositories 
  • Yammer group members – 4188
  • Unique visitors during past 2 weeks cross PnP repositories – 9.933
  • Merged pull requests cross PnP repositories – 1746
  • Closed issues and enhancements ideas cross PnP repositories – 522
  • PnP Core component NuGet package downloads – 28367

Main resources around PnP program

April 2016 monthly community call

Agenda for the Tuesday 12th of April community call at 8 AM PST / 5 PM CET:

If you have any questions, comments or feedback, please participate in our discussions in the Office 365 Patterns and Practices Yammer group at We already have more than 4.000 members in this group with lively discussions on different SharePoint and Office 365 related topics from on-premises and cloud perspective. This is the most active developer group in the Office 365 Technical network and we are definitely proud and thankful of that.

Spring 2016 PnP community survey results

We conducated short community survey during March 2016 for getting additional input around the future direction of the PnP and to collect your feedback around the different aspects of PnP. Here’s some high level results from the survey. We’ll also cover the results more detailed in our monthly community call on 12th of April more detailed.

Spring 2016 PnP community survey results

PnP Office Hours and Special Interest Group (SIGs) for JavaScript development

We started bi-weekly PnP Office Hours during February for addressing questions on how to contribute towards PnP. These are open discussions around what the Core team is doing and where the community members can assist. This time is also open for discussing aroung design decisions, challenges and possible issues in the PnP deliverables. You can download invite for the bi-weekly invite from following location. Recording of these Office Hours are shared in the PnP Yammer group within 24 hours after the recording was done.

Due constantly growing interest on the PnP program, we also are piloting Special Interest Groups (PnP SIGs), which are more targeted on specicic topic, like SharePoint Client Side (JavaScript) development or other areas. We are currently piloting this model with SIG for Client Side development, which have had great interest. Client Side Development SIG has already started building generalized library to be used with JavaScript development using TypeScript and with modern development practices. If you’re interested of joinign this effort, please use following resources.

Objective of this JavaScript SIG work is to produce a modular, flexible and developer focused JavaScript library for simplifying interactions with SharePoint. This development is done with modern web tooling, including TypeScript, Node.js, Gulp and other similar tooling. This means that secondary objective for this work is to introduce this tooling also for classic SharePoint developers.

Please read more around PnP Office Hours and Special Interest Groups (SIGs) from following blog post or check the web cast around the JavaScript SIG for the specific details.

PnP Weekly Web Casts

We started new PnP Weekly Web Cast with video series with new video on each Monday around key topics around the guidance or around hot topics from the community. Videos will be released to the PnP Channel 9 section. Here’s list of videos released since last monthly communications.

New PnP Core Component training videos

As part of the April 2016 release we have also released a small training package with videos and presentations around the PnP Core Component (.NET). PnP Core Component is released as a Nuget package and it simplifies development with managed code. Typically PnP Core COmponent is used in the provider hosted add-ins/apps. Other typical use cases are Azure WebJobs or scheduled tasks in the SharePoint on-premises. PnP Core Component has different versions for SharePoint Online and for on-premises. Please see following videos and materials for additional context.

PnP repositories in GitHub

There are quite a few different GitHub repositories under the PnP brand since we wanted to ensure that you can easily find and reuse what’s relevant for you. We do also combine multiple solutions to one repository, so that you can more easily sync and get latest chanages of our released guidance and samples. In general we do recommend you to use the PnP sample search tool at for locating relevant material for you. This should be easier and faster than trying to locate relevant material from GitHub.

Here’s the current repository structure, including short description for each of them.

  • PnP – Main repository for SP add-in, Microsoft Graph etc. samples
  • PnP-Guidance – Guidance, presentations and articles which are partly sync’d to MSDN
  • PnP-Sites-Core – Office Dev PnP Core component
  • PnP-JS-Core – Office Dev PnP Core component for JavaScript
  • PnP-PowerShell – Office Dev PnP PowerShell Cmdlets
  • PnP-Tools – New repository for tools and scripts targeted more for IT Pro’s and for on-premises for SP2013 and SP2016
  • PnP-Office-Addins – Office Add-in samples and models (starting)
  • PnP-Partner-Pack – Packaged guidance with detailed instructions on setting things up in Office 365 and in Azure.
  • PnP-Transformation – Material specifically for the transformation process. Currently includes samples around InfoPath replacement and transformation tooling from farm solutions to add-in model.
  • PnP-OfficeAddins – Samples for the Office Add-ins development
  • PnP-Provisioning-Schema – PnP Provisioning engine schema repository

What’s supportability story around PnP material?

Following statements apply cross all of the PnP samples and solutions, including samples, core component(s) and solutions, like PnP Partner Pack.

  • PnP guidance and samples are created by Microsoft & by the Community
  • PnP guidance and samples are maintained by Microsoft & community
  • PnP uses supported and recommended techniques
  • PnP implementations are reviewed and approved by Microsoft engineering
  • PnP is open source initiative by the community – people who work on the initiate for the benefit of others, have their normal day job as well
  • PnP is NOT a product and therefore it’s not supported through Premier Support or other official support channels
  • PnP is supported in similar ways as other open source projects done by Microsoft with support from the community by the community
  • There are numerous partners that utilize PnP within their solutions for customers. Support for this is provided by the Partner. When PnP material is used in deployments, we recommend to be clear with your customer / deployment owner on the support model

Latest changes

Provisioning Engine

The first version of the PnP remote provisioning engine was released with the April 2015 release. For the April 2016 release we have continued to add new supported capabilities and made significant improvements from stability perspective for both Office 365 and on-premises. This list contains the main updates that have been added in the April release:

  • Significant overall quality and performance improvements
  • Added support for Cross-Tenant provisioning of taxonomy fields (extract-import cross tenants)
  • Included Extensibility Handler support also for template extraction time
  • Parse subfolders when exporting master pages and page layouts
  • Added support for the EnableModeration property on extracting list instances
  • Parse subfolders when exporting masterpages and pagelayouts
  • Excluded Orphaned Terms termset from extraction
  • Improved support and bug fixes with publishing sites and pages
  • Bug fixes on the welcome page extraction, theme handling, workflow handling and custom action handling
  • Updated base templates for the SPO and 2016 – used in delta handling

We are planning to release new schema version and some new capabilities as part of the May 2016 release. Please join to monthly community call for discussing the planned changes.

PnP library

We are looking to do significant consolidation on the SharePoint samples during upcomign months, which will help the community more easily find the general reference API samples for SharePoont. Target is to significantly grow also the non-SharePoint areas around Microsoft Graph, Office 365 API and also alternative technologies.

There’s also significant amount of general updates on the existing samples done by the community on the code and documentation, which is great way to contribute as well.

  • PnP Core: Lots of re-factoring done to improve code quality and completeness:
    • provisioning engine updates (see above)
    • General bug fixing, performance and quality improvements
    • Added AddField extension methods on ContentType
    • Added support for multi-value taxonomy fields in TaxonomyExtensions
    • Add ClientTag entry for PnP Core Component usage – Http headers includes PnP Core version
    • Automated documentation updated to md file
    • Removal of deprecated methods
    • Build and test automation improvements with unit test changes
    • Preparations for SP2016 specific version – coming in May (sorry for the delay)
    • Both PnP Core Nuget packages (cloud and on-premises) have been also updated accordingly.
  • New solution Governance.ExternalSharing which 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.
  • New solution Governance.ChangeOwnership which 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. Out of the box in SharePoint Online, the Site Owner can only be changed in SharePoint Admin Center or PowerShell which requires the user to be part of SharePoint Online administrators group. This application gives the privilege for a Site Owner and Site Collection administrators to change the site collection ownership from a site collection itself.
  • New solution Governance.AddInSecurity which can be used to encrypt client id and secrets for the add-ins in secure ways.
  • New sample MicrosoftGraph.Cordova.Mobile which illustrates how to use the Microsoft Graph API to retrieve data from Office 365 using the REST API and OData.
  • New sample MicrosoftGraph.Office.QuickContacts which illustrates how you could use the Microsoft Graph to quickly find contacts on mobile devices.
  • New sample MicrosoftGraph.iOS.Objective-C.SendMail which showcases showcases the Microsoft Graph SDK for iOS in a simple iOS application using the Objective-C language.
  • New sample MicrosoftGraph.iOS.Swift.SendMail which showcases the Microsoft Graph SDK for iOS in a simple iOS application using the new Swift language.
  • Updated Provisioning.UX.App provisioning solution with small polishing changes.
  • Updated UserProfile.BatchUpdate.API sample to match released blog post.
  • Updated PnP-PowerShell Commands with new CommandLets and with few fixes
    • Overall quality improvements and bug fixes
    • Additional testing included
    • Updated documentation for CmdLets
  • Preview version of PnP-JS-Core JavaScript library which is released also as a NPM package
  • Updates to the PnP Partner Pack
    • General changes in the current implementation

Office 365 Pnp Partner Pack

PnP Guidance articles

The PnP Guidance repository contains guidance articles which are mostly being published atMSDN and more will follow. Everyone can contribute or update these articles via updating them in GitHub and the changes will flow back to MSDN once the synchronization setup has been completed.

During this month there was updates on the both MSDN and GitHub artciles to ensure that both sides are in sync and there’s matching page in the GitHub. Target is to update the MSDN based on community contributions.

See MSDN artciles from the PnP MSDN section at

PnP Guidance videos

We did release one new guidance video during this month on top of the new web cast videos mentioned already above in this blog post. You can find all PnP videos from our Channel 9 section at This location contains already significant amount of detailed training material, demo videos and community call recordings.

Key contributors for the April 2016 release

Here’s the list of active contributors (in alphabetical order) during past month in PnP repositories. PnP is really about building tooling together with the community for the community, so your contributions are highly valued cross the Office 365 customers, partners and obviously also at Microsoft.

Thank you for your assistance and contributions from the behalf of the community. You are making a difference!

Here’s the list of Microsoft people who have been closely involved on the PnP work during last month.

Latest statistics

Here’s some statistics from the PnP, PnP PowerShell and PnP Sites Core (core component) repository. 

Contributions at PnP repository

Contributions at PnP repository

Traffic at PnP repository

Traffic at PnP repository


Contributions at PnP Sites Core repository

Contributions at PnP Sites Core repository

Traffic from PnP Sites Core repository

Traffic from PnP Sites Core repository

Contributions at PnP PowerShell repository

Contributions at PnP PowerShell repository

Traffic from PnP PowerShell repository

Traffic from PnP PowerShell repository

See About Repository Graphs for more details on above statistics.

Next steps

  • April 2016 monthly community call is on 12th of April at 8 AM PST / 5 PM CET for latest release details with demos – Download invite with detailed schedule for your time zone from
  • Following master merge will happen on 6th of May and May community call is on 10th of May 2016

Office 365 Pnp resources

“Sharing is caring”

Vesa Juvonen, Senior Program Manager, Office 365, Microsoft – 12th of April 2016