SharePoint / Office 365 Dev Patterns and Practices (PnP) February 2017 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 SharePoint Patterns & Practices (PnP)?
PnP is community driven open source initiative where Microsoft and external community members are sharing their learning’s around implementation practices for SharePoint and Office 365. Active development and contributions happen our GitHub projects under ‘dev’ branch and each month there will be a master merge (monthly release) with more comprehensive testing and communications.
PnP is owned and coordinated by SharePoint engineering, but this is work done by the community for the community. 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. You can use SharePoint Developer group in the Microsoft Tech Community for providing input and to ask 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 Webcast.
- How to get started and contribute to Office 365 Dev PnP program? – Wiki
- Office Dev PnP Webcast – How to get started with Office Dev PnP? – Webcast
- Office Dev PnP Webcast – How to contribute to Office Dev PnP initiative? – Webcast
Some key statistics around PnP program from January 2017
- GitHub repository forks at different repositories
- PnP main repository – 2067
- PnP Sites Core – 326
- PnP PowerShell – 258
- PnP JS Core – 108
- Unique visitors during past 2 weeks’ cross PnP repositories – 15048
- Unique visitors during past 2 weeks in SharePoint organization repositories – 4474
- Merged pull requests cross PnP repositories (cumulative) – 3467
- Closed issues and enhancements ideas cross PnP repositories (cumulative) – 1405
- PnP Core component NuGet package downloads – 68183
- Unique visitors in PnP MSDN pages during January 2017 – 42489
- Unique tenants using PnP CSOM Core component during January 2017 – 3724
- Http requests towards SharePoint Online from PnP CSOM Core Component during January 2017 – 1360489145
Main resources around PnP program
- PnP under dev.office.com – http://aka.ms/SPPnP– One location for all the resources and news around PnP
- PnP GitHub – http://aka.ms/SPPnP-GitHub – main repository
- PnP MSDN pages – http://aka.ms/SPPnP-MSDN
- PnP Community Discussions – http://aka.ms/SPPnP-Community
- PnP Videos at YouTube – http://aka.ms/SPPnP-Videos
- PnP training package (videos in Channel 9) – http://aka.ms/OfficeDevPnPTraining
- Presentations at docs.com – http://aka.ms/SPPnP-Docs
February 2017 monthly community call
Agenda for the Tuesday 14th of February community call at 8 AM PST / 5 PM CET:
- Summary on the February 2017 release and other program updates – Vesa Juvonen ~20 min
- Demonstration of updated Intranet Portal Starter kit solution – Franck Cornu ~15 min
- Latest on the PnP PowerShell – new cmdlets and other new aspects – Erwin van Hunen ~15 min
- Q&A
Monthly community call will get recorded and release to PnP YouTube channel typically within 24 hours after the recording is ended. If you have any questions, comments or feedback, please participate in our discussions in the Microsoft Tech Community under SharePoint developer group.
PnP Sites Core, PnP PowerShell and provisioning engine Special Interest Group (SIG)
PnP Sites Core, PowerShell and Provisioning Special Interest Group (SIG) has bi-weekly meetings to cover latest development in the PnP CSOM core component, PnP PowerShell and in the PnP remote provisioning engine. We do touch also generic SharePoint development practices around remote APIs in these calls. These calls have also free Q&A section, if you have any questions around SharePoint development in on-premises or in cloud. Need to get recommendation to your design or having hard time with some APIs? – Drop by, ask a question and we’ll help you.
You can download invite for the bi-weekly meeting from following location.
All SIG meetings are being recorded and are available for view from PnP YouTube Channel. Here’s the latest recordings from the SIG calls.
- 8th of February – PnP usage in SPO with conclusions on metrics. Demos on latest changes in PnP PowerShell and on PnP Provisioning Engine refactoring (500 level)
- 25th of January – SharePoint Webhooks discussion on future SiteCreated event, German cloud considerations, VS tooling for PnP templates
- 11th of January – Update on SP modern experiences customization story. Demo on upcoming PnP provisioning engine refactoring
Notice. Next SIG for PnP Component / PowerShell will be on Wednesday 22nd of February – If you have questions around these topics, please join this call and use the opportunity to ask questions from SP engineering and PnP Core team.
SharePoint Framework (SPFX) and JavaScript Special Interest Group (SIG)
SharePoint Framework and JavaScript Special Interest Group (SIG) has bi-weekly meetings to cover latest changes in the SharePoint Framework side, from engineering perspective and to cover also latest development related on the PnP JS Core library. These calls are designed to have 50%/50% of content and demos and there has been already great community demos on the new SharePoint Framework Client-side web parts. If you’re interested on showing your code, just let us know.
- Invite to bi-weekly call – https://aka.ms/sppnp-js-sig-call
- Gitter (Around the PnP JS Core) – https://gitter.im/OfficeDev/PnP-JS-Core
All SPFx and JS SIG meetings are recorded, so that you can check the demos and discussions, if you can’t make the actual call. You can find the latest recordings from the PnP YouTube Channel. Here’s the latest recordings.
- 2nd of February – Latest on SPFx and PnP JS Core. Demos on Vue.js with SPFx and Movie Carosel implementation with SPFx
- 19th of January – Latest on SPFx and PnP JS Core. Demo on PnP JS Core and JS provisioning library
- 5th of January – Latest on SPFx and status of PnP JS Core 2.0 release
Notice. Next SIG for SharePoint Framework and JavaScript development will be on Thursday 16th of February – If you have questions around these topics, please join this call and use the opportunity to ask questions from SP engineering and PnP Core team.
PnP Weekly Webcasts
We started new PnP Weekly Webcast series on October 2015 and have continued releasing new videos since that. All new webcasts are released in PnP YouTube Channel. Old webcasts and other demo videos are also found from the PnP Channel 9 section. Here’s the new web casts released after the last monthly release.
- 13th of February – SharePoint Customizations – When to use which model?
- 6th of February – Validating SharePoint Framework client-side web part property values
- 29th of January – Introduction to SharePoint Webhooks
- 23rd of January – Getting started with SharePoint Framework development
- 16th of January – Localization with SharePoint Framework client-side web parts
- 9th of January – Customization options with SharePoint Online “modern” experiences
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 changes 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.
During November, majority of the PnP repositories were moved to SharePoint GitHub organization.
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-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-Templates – Source for templates available from PnP Template Gallery at http://templates-gallery.sharepointpnp.com
- PnP-Provisioning-Schema – PnP Provisioning engine schema repository
- PnP-IdentityModel – Open source replacement of Microsoft.IdentityModel.Extensions.dll
On top of the specific PnP repositories, PnP initiative also controls the new repositories under the SharePoint organization. PnP is owned nowadays by SharePoint engineering and we will be using PnP as the channel and forum to facilitate community work.
- SP-Dev-Docs – Source for new SharePoint dev center documentation exposed from http://dev.office.com/sharepoint
- SP-Dev-Fx-WebParts – Client-side web part samples from community and engineering
- SP-Dev-Samples – Samples for add-ins, webhooks and other APIs
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
SharePoint Framework samples
These are samples which are available from the SharePoint client-side web part sample repository at https://github.com/SharePoint/sp-dev-fx-webparts. We are working on getting samples on the RC0 level and many of them have been already properly updated. You can find supported version always from the readme file of each sample.
- New sample js-extend-webpart showing how to extend webpack in the SharePoint Framework toolchain
- New sample js-extend-gulp showing how to integrate custom gulp tasks to SharePoint Framework toolchain
- New sample vuejs-todo-single-file-component demonstrating how you can utilize Vue (a progressive framework for building user interfaces) with SharePoint Framework using handy single-file components approach.
- New sample react-videolibrary demonstrating how to build video presenter web part with React
PnP CSOM Core and Provisioning Engine
PnP CSOM Core component is a wrapper on top of native CSOM and REST, which simplifies complex scenarios with remote APIs, one of the example is the PnP Provisioning Engine for remote templates. The first version of the PnP remote provisioning engine was released with the May 2015 release. For the February 2017 release we have continued to add new supported capabilities and made significant improvements from stability perspective for both SharePoint Online and SharePoint on-premises (2013 and 2016). This list contains the main updates that have been added in the February 2017 release:
- General overall quality and performance improvements for on-premises and online
- Refactoring of Responsive UI (removed dependency on jQuery, better support
- Fixed bug about handling of OpenXML packages downloaded from the PnP Templates Gallery
- Added support for term name normalization in the Provisioning Engine
- Fixed issue with reusable taxonomy terms in the Provisioning Engine
- Refactoring of Responsive UI (removed dependency on jQuery, better support for SharePoint 2013, and improved performances)
- Unit/integration test improvements
- Updated base templates for the SPO, 2013 and 2016 – used in delta handling
See also https://testautomation.sharepointpnp.com for day-to-day results and executed tests.
PnP Identity Model Library
Originally, Microsoft.IdentityModel.Extensions.dll is where the code for SharePoint provider-hosted apps OAuth and S2S token processing is located. Microsoft.IdentityModel.Extensions is not maintained by anyone, but SharePoint add-ins, SharePointPnP.Core and a few other things depend on it. SharePointPnP.IdentityModel.Extensions is a port of that library created by the PnP team. We reference it in OfficeDevPnP.Core (and all other supporting solutions) instead of depending on Microsoft.IdentityModel.Extensions. You PnP Identity Model assembly is available as NuGet package, which can be shared and easily distributed with custom solutions. We are not planning to introduce new capabilities in this library, it’s rather there to solve the distribution challenge.
PnP JavaScript Core library v2.0.1
The latest release, 2.0.1, of the Patterns and Practices JavaScript Core Library represents an incremental update serving two main purposes. Firstly to align our releases to other releases across the SharePoint PnP program and secondly to include an update described below when working in SharePoint Framework. Thanks to everyone who has provided valuable feedback and helped the library grow. Exact details on the 2.0.1 can be found from following blog post.
This is similar effort as what PnP initiative previously has done with the PnP CSOM Core Component together with community.
- Updated guidance when used with SharePoint Framework
- Rewrite of the request pipeline to simplify things and to enable extensibility in future releases
- Improved developer guidance documentation
PnP PowerShell
PnP PowerShell providers more than two hundred additional PowerShell cmdlets, which can be used to manipulate content in SharePoint Online and in on-premises (SP2013, SP2016). These cmdlet’s are addative for SharePoint Online management shell, which concentrate more on the administrative tasks with SharePoint Online.
Here’s the latest changes in the PnP PowerShell
- Added Get-PnPTenantRecyclyBinItem cmdlet to list all items in the tenant scoped recycle bin
- Added -Wait and -LockState properties to Set-PnPTenantSite
- The Tenant cmdlets now report progress if the -Wait parameter is specified (where applicable)
- Added Submit-PnPSearchQuery cmdlet
- Added Set-PnPSiteClosure and Get-PnPSiteClosure cmdlets
- Added Get-PnPContentTypePublishingHubUrl
- Added Get-PnPSiteCollectionTermStore which returns the Site Collection Term Store
- Introducing the -Includes parameter. The parameter will allow you (on selected cmdlets) to retrieve values for properties that are not being retrieved by default. The parameter exposes the possible values on pressing tab, and you can specify multiple values. The parameter is available on the following cmdlets: Get-PnPAppInstance, Get-PnPCustomAction, Get-PnPDocumentSetTemplate, Get-PnPEventReceiver, Get-PnPFeature, Ensure-PnPFolder, Get-PnPFolder, Get-PnPList, Get-PnPView, Get-PnPGroup, Get-PnPRecyclyBinItem, Get-PnPSite, Get-PnPTermGroup, Get-PnPWeb.
- Updated the output of a view cmdlets so return table formatted data
- Added Get-PnPTerm
- Added Get-PnPTermSet
- Added New-PnPTerm
- Added New-PnPTermSet
- Added New-PnPTermGroup
- Updated Get-PnPTermGroup to optionally return all termgroups in a TermStore
- Overall quality improvements and bug fixes
- Updated documentation for Cmdlets
PnP sample library
Here’s updates cross the PnP code sample library by the community on the code and documentation, which is great way to contribute as well.
- New sample WebHooks.List.AzureAD showing how you can you can make use of web hooks in your application with Azure AD based authentication and with Azure Functions
- New Developer Tools for SharePoint PnP Visual Studio extensions for simplifying PnP template creation
- Updated Business.O365StarterIntranet with updated support for on-premises (SP2016 and SP2013)
- Updates to the PnP Partner Pack
- Fine tuning and polishing based on community input
- Fixed issue when searching for Site Collection Admins
PnP Guidance articles
The PnP Guidance repository contains guidance articles which are published at MSDN. Starting from end of May 2016 this process was changed to be fully automated and there’s automatic contributors list in the MSDN side showing who have been providing updates to these documents. We are looking forward on your contributions around real life learnings in different areas. Read more details around this open publishing model from following blog post
Here’s the new guidance released since past monthly communications.
- Authorization considerations for tenants hosted in the Germany, China or US Government environments
- Updates on existing SharePoint modern experiences customization guidance
See MSDN articles from the PnP MSDN section at http://aka.ms/sppnp-msdn.
PnP initiative also controls the articles in the dev.office.com aroung SharePoint development. Here’s new/updated articles around the SharePoint Framework client-side web parts.
- Updated SharePoint Framework tutorial articles to RC0 level
- Simplify adding web parts with preconfigured entries
- Localize SharePoint Framework client-side web parts
- Validate web part property values
- SharePoint Framework (SPFx) enterprise guidance
- Team-based development on the SharePoint Framework
- Update SharePoint Framework packages
- SharePoint Framework Reference API documentation
- Integrate custom gulp tasks in SharePoint Framework toolchain
- Extend Webpack in SharePoint Framework toolchain
- Updates on SharePoint webhooks sample reference implementation article
- Moving REST documentation from MSDN to dev.office.com
PnP Guidance videos
You can find all PnP videos from our YouTube Channel at http://aka.ms/sppnp-vidoes. This location contains already significant amount of detailed training material, demo videos and community call recordings. Since last release communications, we released following updated guidance / tutorial videos.
- Setting up your development environment for SharePoint Framework
- SharePoint Framework Tutorial 1 – HelloWorld Web Part
- SharePoint Framework Tutorial 2 – HelloWorld, Talking to SharePoint
- SharePoint Framework Tutorial 3 – HelloWorld, Serving in SharePoint Page
- SharePoint Framework Tutorial 4 – HelloWorld, Deploy to CDN
- SharePoint Framework Tutorial 5 – jQueryUI Accordion Web Part
- SharePoint Framework Tutorial 6 – Using Office UI Fabric Components
Notice that ome of the old PnP videos are also in the PnP Channel 9 video blog, which was previously used.
Key contributors for the February 2017 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!
- chcoml GitHub alias
- Chris Kent (Allegient) – thechriskent
- Dan Beaulieu – dbeaulieu
- David Hartman (Slalom) – davidhartman
- Erwin van Hunen (Rencore) – @erwinvanhunen
- Elio Struyf – @eliostruyf
- emilverwoerd GitHub alias
- Franck Cornu – @FranckCornu
- Ivan Vagunin (Knowit) – ivagunin
- Jonathan Cardy – johnnycardy
- Joel Rodrigues – joelfmrodrigues
- Lee Dale – leedale1981
- Luis Manez – @luismanez
- Massimo Prota (Rapid Circle) – @massimoprota
- Michael Rees Pullen – mrpullen
- Mikael Svenson (Puzzlepart) – @mikaelsvenson
- Mårten af Sandeberg (Knowit) – afsandeberg
- Paolo Pialorsi (PiaSys.com) – @PaoloPia
- Paul Keijzers (Wortell) – @KbWorks
- Pieter Veenstra (Triad) – @PieterVeenstra
- Radi Atanassov (OneBit Software) – @RadiAtanassov
- Raul Garita Ch – rgarita
- Russell Gove – russgove
- Russell Seamer – searus
- Rustam Sharshenov – Rus7am
- Sergei Sergeev – s-KaiNet
- Su Su – warmsea
- Waldek Mastykarz (Rencore) – @waldekm
- Wictor Wilen (Avanade) – @wictor
Companies: Here’s the companies, which provided support for PnP initiative for this month by allowing their employees working for the benefit of others in the PnP initiative. There were also people who contributed from other companies during last month, but we did not get their logos and approval to show them on time for these communications. If you still want your logo for this month’s release, please let us know and share the logo with us. Thx.
Microsoft people: Here’s the list of Microsoft people who have been closely involved on the PnP work during last month.
- Antons Mislevics – antonsmislevics
- Bert Jansen – @O365Bert
- Brian Michely – @brianmichely
- Chakkaradeep (Chaks) Chinnakonda Chandran – @chakkaradeep
- Dan Budimir – MSDN blog
- David Chesnut
- Frank Marasco – @frank_marasco
- Jonathan Huss – @jonathanhuss
- Keyur Patel
- Laura Graham – Lauragra
- Neil Hodgkinson – @Nellymo
- Patrick Rodgers – @mediocrebowler
- Ron Tielke – rtielke
- Vesa Juvonen – @vesajuvonen
Latest traffic statistics
Here’s traffic statistics from the PnP, PnP PowerShell, PnP Sites Core (.NET), JavaScript Core component and SP Dev FX Web Parts repositories.
Traffic at PnP repository
Traffic from PnP CSOM Core repository
Traffic from PnP PowerShell repository
Traffic from PnP JavaScript Core Component repository
Traffic from SharePoint Framework Web Parts repository
See About Repository Graphs for more details on above statistics.
Next steps
- February 2017 monthly community call is on 14th of February at 8 AM PST / 5 PM CET for latest release details with demos – Download invite with detailed schedule for your time zone from http://aka.ms/sppnp-call.
“Sharing is caring”
Vesa Juvonen, Senior Program Manager, SharePoint, Microsoft – 13th of February 2017