Office 365 Developer Patterns and Practices (PnP) February 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)?
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 people. 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.
Some key statistics around PnP program from February release
- GitHub repository forks at different repositories
- Yammer group members - 3.804
- Unique visitors during past 2 weeks cross PnP repositories - 8.119
- Merged pull requests cross PnP repositories - 1.537
- Closed issues and enhancements ideas cross PnP repositories - 427
- PnP Core component NuGet package downloads - 21.565
Main resources around PnP program
- PnP under dev.office.com – http://aka.ms/OfficeDevPnP - One location for all the resources and news around PnP
- PnP GitHub - http://aka.ms/OfficeDevPnPGitHub - main repository
- PnP MSDN pages - http://aka.ms/OfficeDevPnPMSDN
- PnP Yammer group - http://aka.ms/OfficeDevPnPYammer
- PnP Videos at Channel 9 - http://aka.ms/OfficeDevPnPVideos
- PnP training package (videos in Channel 9) - http://aka.ms/OfficeDevPnPTraining
- Presentations at docs.com - http://docs.com/OfficeDevPnP
- PnP Guidance Repository – http://aka.ms/OfficeDevPnPGuidance
February 2016 monthly community call
Agenda for the Tuesday 9th of February (8 AM PST) community call:
- Summary on the February release and other updates in program - Vesa Juvonen ~15-20 min
- Demo on the MicrosoftGraph.Office365.Generic solution - Paolo Pialorsi ~10-15 min
- Demo on the Provisioning Engine updates - Erwin van Hunen ~10-15 min
- Unit tests in the PnP Core Component. How to perform daily unit tests with Office 365 - Bert Jansen ~10-15 min
If you have any questions, comments or feedback, please participate in our discussions in the Office 365 Patterns and Practices Yammer group at http://aka.ms/OfficeDevPnPYammer. We already have more than 3.800 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.
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.
- 11th of Jan - PnP Web Cast - Property bag trick for CSOM to enable additional configurations
- 18th of Jan - PnP Web Cast - HelpDesk application with Microsoft Graph
- 25th of Jan - PnP Web Cast - SharePoint feature framework vs Remote Provisioning
- 1st of Feb - PnP Web Cast - oAuth and OpenID Connect for Office 365 developer
- 8th of Feb - Office Dev PnP Web Cast – Introduction to Microsoft Graph for Office 365 developer
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 dev.office.com 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-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. Some tools coming also soon.
- 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
The first version of the PnP remote provisioning engine was released with the April 2015 release. For the February 2016 release we have continued to add new supported capabilities and made improvements from stability perspective for both Office 365 and on-premises. This list contains the main updates that have been added in the February release:
- Significant overall quality and performance improvements
- Export support for master pages and page layouts in publishing sites
- Support for custom action resource handling (language support)
- Updates on publishing site handling process
- Updates on home page extraction process with publishing and non-publishing sites
- Updates on feature handling process - possible exceptions logged, but process not aborted
- Localization support for labels
- Token parser changed to be public
- Updated base templates for the SPO and 2016 - used in delta handling
NOTICE: February release of the PnP Core Component or specifically engine has dependency on using latest SharePoint Online CSOM package released on 4th of February.
- There's a known issue around JSON serialization in context of the CustomAction.Rights element. Team is working on getting this resolved. Probability of hitting the issue is relatively small.
We have done general cleaning in the repository related on Nuget package updates and also removed some samples, which are no longer relevant. We are planning to continue these cleaning activities during the next months as well to streamline the repository and to combine some samples for reducing the overall number of similar samples and to make more room for Graph and Office 365 API related content. Currently repository is still heavily bias for the SharePoint related samples.
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)
- Updates on rating controls in the lists - enable also for non-publishing sites
- Methods for enabling and disabling Request access at web level for SPO CSOM
- Remove field by fied ID added as new method
- General bug fixing, performance and quality improvements
- Removal of deprecated methods
- Build and test automation improvements with unit test changes
- Yammer embed support added for on-premises (SP2013)
- Preparations for SP2016 specific version - coming in March
- 16 nuget package includes a dependency for the WindowsAzure.Storage and Microsoft.Azure.ActiveDirectory.GraphClient nuget packages
- Both PnP Core Nuget packages (cloud and on-premises) have been also updated accordingly.
- New sample OutlookNotificationsAPI.WebAPI which 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.
- New sample MicrosoftGraph.Office365.Generic as generic sample solution which demonstrates typical operations with Microsoft Graph towards Calendar, Contacts, Files, Office 365 Groups and users.
- New sample MicrosoftGraph.Office365.Simple.MailAndFiles as simplistic ASP.net MVC application to query personal emails and files using Microsoft Graph showing also dynamic querying of the information with ajax queries. Sample uses also Office UI Fabric to provide consistent user interface experience with standardized controls and presentation.
- New console utility JDP Remediation - CSOM which can be used to discover or address typical add-in model transformation issues using CSOM operations.
- New farm solution Feature activation blocker which can be used to block activation of features from the UI of SharePoint farm. Feature Id's and message shown for the end users can be configured dynamically.
- Updated PnP-PowerShell Commands with new CommandLets and with few fixes
- Overall quality improvements and bug fixes
- Updated documentation for CmdLets
- Updates to the PnP Partner Pack (delayed release later this week)
- Significant updates on the setup guidance
- Updated to use latest CSOM Nuget package
- Updated code to handle the provisioning time logic
PnP Guidance articles
The PnP Guidance repository has been setup for working on articles. Part of these articles are already available on MSDN 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 we did some general updates on the articles, but there's no actual new guidance published. You can easily find the relevant guidance for you using our search tool at dev.office.com.
PnP Guidance videos
We did release two 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 http://aka.ms/OfficeDevPnPVideos. This location contains already significant amount of detailed training material, demo videos and community call recordings.
- Using TypeScript in a Visual Studio Office add-in project
- Connecting to SharePoint Online from console application with Azure ADAL and PnP Core Component
Key contributors for the February 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!
- Alexander Shelopukho - @BioGeneZ
- Bob German (BlueMetal) - @Bob1German
- Daniel Laskewitz (Sogeti) - @laskewitz
- Erwin van Hunen (Rencore) - @erwinvanhunen
- Frédéric Bolvin (Terrabit GmbH) - blog
- Ivan Vagunin (KnowIt) - @ivagunin
- Ole Albers - Blog
- Ole Kristian Mørch-Storstein (Puzzlepart) - Blog
- Paolo Pialorsi (PiaSys.com) - @PaoloPia
- Pascal Berger (IOZ AG) - pascalberger
- Phillip Demro - pdemro
- Pieter Veenstra - @PieterVeenstra
- Radi Atanassov (OneBit Software) - @RadiAtanassov
- Raja Shekar Reddy Bhumireddy (InfoSys) - rajashekarusa
- Roydon Gyles-Bedford - rgylesbedford
- Stefan Born (PH Zürich) - @bornste
- Thomas Berman - GitHub
- svarukala - GitHub
Here’s the list of Microsoft people who have been closely involved on the PnP work during last month.
- Antons Mislevics (Microsoft) - GitHub
- Bert Jansen (Microsoft) - @O365Bert
- Brian Michely (Microsoft) - @brianmichely
- Dan Budimir (Microsoft) - MSDN blog
- Eric Xu (Microsoft) - GitHub
- Frank Marasco (Microsoft) - @frank_marasco
- Ivan Bondy (Microsoft) - @ivanbondy
- Jeremy Thake (Microsoft) - @jthake
- Jonathan Huss (Microsoft) - @JonathanHuss
- Kiki Shuxteau (Microsoft)
- Patrick Rodgers (Microsoft) - GitHub
- Ron Tielke (Microsoft)
- Sami Nieminen (Microsoft)
- Simon Jaeger (Microsoft) - @simonjaegr
- Steve Walker (Microsoft) - @sharepointing
- Vesa Juvonen (Microsoft) - @vesajuvonen
Here's some statistics from the PnP, PnP PowerShell and PnP Sites Core (core component) repository. There's visible impact of the GitHub re-structuring, which means that traffic and contributions are divided between multiple repositories. Due holiday season small drop on the visitor numbers, but that's as expected.
Contributions at PnP repository
Traffic at PnP repository
Contributions at PnP Sites Core repository
Traffic from PnP Sites Core repository
Contributions at PnP PowerShell repository
Traffic from PnP PowerShell repository
See About Repository Graphs for more details on above statistics.
- February 2016 monthly community call is on 9th of February at 8 AM PST for latest release details with demos - Download invite from http://aka.ms/OfficeDevPnPCall.
- Following master merge will happen on 4th of March and March community call is on 8th of March 2016
“Sharing is caring”
Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 8th of February 2016