SharePoint Dev Ecosystem / SharePoint Patterns and Practices (PnP) October 2019 update is out with a summary of the latest guidance, samples, and solutions from SharePoint engineering or from the community for the community. This article is a summary of all the different areas and topics around the SharePoint Dev ecosystem during the past month.
What is SharePoint Patterns & Practices (PnP)?
SharePoint PnP is a nick-name for SharePoint Dev Ecosystem activities coordinated by SharePoint engineering. SharePoint PnP is a 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 in GitHub by providing contributions to the samples, reusable components, and documentation. PnP is owned and coordinated by SharePoint engineering, but this is work done by the community for the community.
The initiative is currently facilitated by Microsoft, but we have multiple community members as part of the PnP Core team (see team details in end of the article) and we are looking to extend the Core team with more community members. Notice that since this is open source community initiative, there’s no SLAs for the support for the samples provided through GitHub. Obviously, all officially released components and libraries are under official support from Microsoft. You can use the SharePoint Developer group in the Microsoft Tech Community for providing input and to ask any questions about the existing materials or report issues using the sp-dev-docs issue list.
Some key statistics around SharePoint Developer topics from September 2019
- GitHub repository forks at most popular repositories in SharePoint GitHub organization
- SP Dev Docs – 587
- SP Dev Fx Web Parts – 1586
- SP Dev Fx Extensions – 398
- PnP – 3171
- PnP Sites Core (CSOM) – 593
- PnP PowerShell – 572
- Unique visitors during the past 2 weeks in PnP, OneDrive and SharePoint GitHub organization repositories – 59,020
- Overall unique contributors in the PnP, OneDrive and SharePoint GitHub organizations – 1,189
- Merged pull requests across PnP, OneDrive and SharePoint repositories (cumulative) – 8,078
- Closed issues and enhancements ideas cross PnP, OneDrive and SharePoint repositories (cumulative) – 9,229
- SharePoint Online CSOM NuGet package downloads (cumulative) – 1,400,245
- Page views in SharePoint Dev pages at docs.microsoft.com – 946,594
- Unique tenants using open-source PnP components – 27,587
- HTTP requests towards SharePoint Online from PnP components (PnP CSOM, PowerShell, PnPjs) – 16,531,482,297
- SharePoint Dev YouTube channel had 43,783 views with 238,279 minutes of watch time
Main resources around SharePoint PnP and SharePoint development
- SharePoint development blog – http://aka.ms/spdev-blog
- SharePoint Dev Documentation – http://aka.ms/spdev-docs
- SharePoint Dev Community – http://aka.ms/sppnp – One location for all the resources and news around PnP
- PnP Community Discussions – http://aka.ms/spdev-community
- SharePoint Dev Videos on YouTube – http://aka.ms/spdev-videos
October 2019 monthly community call
October 2019 monthly community happens on Tuesday 8th of October with following agenda:
- Monthly summary of SharePoint Development topics – Latest SharePoint road map and community news – Vesa Juvonen (Microsoft) ~15 min
- SharePoint Dev engineering update with latest news and road map
- UserVoice status for SharePoint Dev
- Community contributors and companies
- Topic – Building intranets in modern SharePoint – DC Padur (Microsoft)
- Modern SharePoint pages tech update
- Root site
- Home sites
- Multilingual publishing for modern SharePoint
- Q&A
You can find recording of the community call from PnP YouTube channel typically within 24 hours after the call. If you have any questions, comments or feedback, please participate in our discussions in the Microsoft Tech Community under the SharePoint developer group.
SharePoint Dev Blog posts
Here are the latest blog posts and announcements around SharePoint development topics from developer.microsoft.com/en-us/sharepoint/blogs
- 8th of October – SharePoint Dev Weekly – Episode 55
- 4th of October – SharePoint Dev Community (PnP) – General SP Dev SIG recording – 3rd of October 2019
- 1st of October – SharePoint Dev Weekly – Episode 54
- 27th of September – SharePoint Framework Community Call Recording – 26th of September 2019
- 24th of September – SharePoint Dev Weekly – Episode 53
- 20th of September – SharePoint Dev Community (PnP) – General SP Dev SIG recording – 19th of September 2019
- 17th of September – SharePoint Framework Community Call Recording – 12th of September 2019
- 17th of September – SharePoint Dev Weekly – Episode 52
- 11th of September – Office 365 CLI version 2 has been released
- 11th of September – SharePoint Dev Community (PnP) – September 2019 monthly community call recording
- 10th of September – SharePoint Development Community (PnP) – September 2019 update
- 10th of September – SharePoint Dev Weekly – Episode 51
- 6th of September – SharePoint Dev Community (PnP) – General SP Dev SIG recording – 5th of September 2019
- 4th of September – Updated SharePoint Framework developer training package (September 2019)!
- 3rd of September – SharePoint Dev Weekly – Episode 50
PnP Community Calls
SharePoint Dev community has 3 different recurrent community calls, which you can choose to participate based on your interest and availability. All calls are recorded and published in the SharePoint Dev YouTube channel typically within the following 24 hours after the call. You can find a detailed agenda and links to specific covered topics on blog post articles at the SharePoint developer blog when the videos are published.
- Monthly community call – Second Tuesday of each month at 8 AM Pacific Time. Consists of the latest news, providing credits for all community contributors and live demos.
- Bi-weekly special interest group for SharePoint Framework – Bi-weekly Thursdays at 7 AM Pacific time. Consists of topics around SharePoint Framework and JavaScript-based development in the SharePoint platform.
- Bi-weekly special interest group for SharePoint General Dev – SharePoint dev platform topics which are not around JavaScript development. Site Designs, PnP Provisioning, CSOM, Column formatting, hub sites, branding, architectural designs etc.
If you are interested in doing a live demo of your solution or sample in these calls, please do reach out to the PnP Core Team members (contacts later in this post). These are great opportunities to gain visibility for example for existing MVPs, for community members who would like to be MVPs in the future or any community member who’d like to share some of their learnings.
SharePoint Dev Ecosystem in GitHub
There are quite a few different GitHub repositories under the SharePoint brand since we wanted to ensure that you can easily find and reuse what’s relevant to you. We do also combine multiple solutions to one repository so that you can more easily sync and get the latest changes to our released guidance and samples.
- 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-fx-extensions – Samples and tutorial code around SharePoint Framework Extensions
- sp-dev-fx-library-components – Samples and tutorial code around the SharePoint Framework library components
- sp-dev-fx-vs-extension – Open source Visual Studio IDE extension for creating SharePoint Framework solutions in the Visual Studio 2015 or 2017
- sp-dev-build-extensions – Different build extensions like gulp tasks and gulp plugins from the community and engineering around SharePoint development
- sp-dev-gdpr-activity-hub – Reference solution on the GDPR business case showing SPFx implementation with PowerBI and modern site customization
- sp-dev-solutions – Repository for more polished and fine-tuned reusable solutions build with SharePoint Framework
- sp-dev-samples – Repository for other samples related on the SharePoint development topics – WebHooks etc.
- sp-dev-fx-controls-react – Reusable content controls for SharePoint Framework solutions build with React
- sp-dev-fx-property-controls – Reusable property pane controls to be used in web parts
- sp-dev-list-formatting – Open-source community-driven repository for the column and view formatting JSON definitions
- sp-dev-site-scripts – Open-source community-driven repository for community Site Designs and Site Scripts
- sp-dev-modernization – Tooling and guidance around modernizing SharePoint from classic to modern
- sp-starter-kit – Starter kit solution for SharePoint modern experiences
- sp-dev-provisioning-templates – Open-source templates used by the SharePoint Provisioning Service
- sp-provisioning-service – Source code of the SharePoint Provisioning Service
PnP specific repositories – solution designs and tooling
- PnP – Main repository for SP add-in, Microsoft Graph etc. samples
- PnP-Sites-Core – Office Dev PnP Core component
- PnP-PowerShell – Office Dev PnP PowerShell Cmdlets
- PnP-Tools – Tools and scripts targeted more for IT Pro’s and for on-premises for SP2013 and SP2016
- 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-Provisioning-Schema – PnP Provisioning engine schema repository
- PnP-IdentityModel – Open source replacement of Microsoft.IdentityModel.Extensions.dll
Repositories in the GitHub PnP organization
- PnPjs – PnPjs Framework repository
- o365 CLI – Cross-OS command line interface to manage Office 365 tenant settings
- generator-spfx – Open-source Yeoman generator which extends the out-of-the-box Yeoman generator for SharePoint with additional capabilities
What’s supportability story around PnP material?
Following statements apply across all of the PnP samples and solutions, including samples, core component(s) and solutions, like SharePoint Starter Kit.
- 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 is an open-source initiative by the community – people who work on the initiative for the benefit of others, have their normal day job as well
- PnP is NOT a product and therefore it’s not supported by 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 being clear with your customer/deployment owner on the support model
Area-specific updates
SharePoint Provisioning Service
SharePoint Provisioning Service is available for public preview usage and was already update numerous times during spring to improve the experience. This service is designed to help you to provisioning sample content and solutions to your own tenant(s) for showing what’s possible in the context of SharePoint modern experiences. You will need to be a tenant administrator to be able to provision provided example tenant templates to your own tenant. Initially, service provides a set of SharePoint Look Book templates, SharePoint Starter Kit sample template, Office 365 Learning Pathways solution and a new Microsoft 365 Freelance Toolkit.
You can expect a new SharePoint look book templates (v2 designs) to be released in this service later during autumn 2019. New templates are already available as open-source solution from sp-dev-provisioning-templates repository and they will be surfaced in the provisioning service soon.
SharePoint Provisioning Service source code has been now released as an open-source solution at sp-provisioning-service GitHub repository and we keep on evolving the experience further.
SharePoint Starter Kit
SharePoint Starter Kit demonstrates how to extend out of the box modern experiences in the SharePoint. It demonstrates multiple different techniques and uses different patterns and practices to build an end-to-end demonstration solution which can be provisioned to any Office 365 tenant. It contains for example following capabilities, which you can learn from or use them as your reference:
- Using Microsoft Graph APIs in SharePoint Framework solutions
- Implementing Microsoft Teams tabs using SharePoint Framework
We are looking into starting a new version of the starter kit with completely new solution architecture, which will support using it partly in on-premises and also to reuse web parts one-by-one as preferred. More on this later during autumn 2019. If you are interested on helping with this work, please do let us know.
PnP Tenant template updates
PnP tenant templates can be used to create Office 365 scoped templates, which can be applied to any tenant in the world with define configurations. Tenant templates provides a capability to have pre-defined configurations of complex tenant scoped settings in a single pnp file. PnP file is an OpenXml file containing all assets which are part of the template. Tenant templates can contain form example definitions around multiple site collections, custom tenant themes, SharePoint Framework solutions, site level confirmations etc.
New capabilities as part of the October 2019 release:
- Vertical section support for extracting and importing provisioning templates
- Export of list items
- Added HubSiteTitle property on Site Sequences when provisioning a Tenant Template
- Added a ThumbnailUrl property on Client Side Pages to set the page thumbnail
- Added additional modern web parts to our enums (CallToAction, Button, Sites)
- Added support for schema 201909, this schema is the default as of the October 2019 release
- Option to configure the export of a site to a provisioning template via the ExtractConfiguration class
- S2S user delegation in Hightrust app scenario
- Added support to teamify and hide the teamify prompt via a tenant template
- Countless of changes and improvements from numerous community members
Modernization tooling
SharePoint Online is continuously evolving and improving, which is a great thing for you as a consumer of the service. One of the key improvements is the availability of modern sites, which are modern Office 365 group-connected team sites or communication sites, combined with improved functionality that can be consumed from a beautiful modern user interface. There are however plenty of customers who have already existing content in the classic sites and in classic pages, which would be great to get moved on the modern experience. This is where the open-source modernization tooling will help you.
- All guidance and tooling details are available from http://aka.ms/sppnp-modernize
Following are the key changes in modernization tooling and guidance since the last monthly summary
- Support for doing cross site classic blog to modern page transformation
- KeepPageCreationModificationInformation option to tell page transformation to keep the source page’s author, editor, creation and modification dates
- PostAsNews option to post the created page as news. Setting this option will also set PublishCreatedPage to true
- Added error handling and logging points to the publishing page analyser
- Reporting Enhancements
- Added support for wiki page metadata copy across site collections
- Support to populate the author shown in the modern page header with author information of the original page
- Numerous improvements on the modernization framework
SharePoint development 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 or from the SharePoint Framework Extensions repository at https://github.com/SharePoint/sp-dev-fx-extensions.
- New solution js-application-header-toggler showing how to create an SharePoint Framework application customizer to adjust header visibility – uses DOM injection which is not recommended
- New solution react-check-flows demonstrating how to take advantage of the Microsoft Flow APIs to provide list specific administrative UIs for Flows which have been associated to lists or libraries
- New solution react-my-groups demonstrating how to use Microsoft Graph to present the list of Office 365 groups which user is a member
- An updated version of react-mega-menu with updates to SPFx v1.9.1
- An update version of react-visio with updates to SPFx v1.9.1
- An updated version of the ModernSeach solution with changes on both web part and the renderer extension
- An updated version of the MultilingualPages solution which demonstrates how to build a multi-lingual solution for modern pages
- An updated version of azure-dev-ops-ci-cd-spfx which demonstrates how you can automate and enable continuous integration, unit testing and continuous deployment with Azure DevOps for SharePoint Framework solutions
- Numerous other updates on updating solutions to the latest version and other adjustments
Notice also that we released a new SharePoint Framework web part gallery, which can be used to easily access available samples. You can find the gallery from http://aka.ms/spfx-webparts. We are looking to do similar setup for the SharePoint Framework extensions soon.
Other open-source projects and assets
- Reusable SharePoint Framework controls – Reusable controls for SharePoint Framework web part and extension development. Separate projects for React content controls and Property Pane controls for web parts. These controls are using Office UI Fabric React controls under the covers and they are SharePoint aware to increase the productivity of developers.
- Office 365 CLI – Using the Office 365 CLI, you can manage your Microsoft Office 365 tenant and SharePoint Framework projects on any platform. See release notes for the latest updates.
- PnPJs – PnPJs encapsulates SharePoint REST APIs and provides a fluent and easily usable interface for querying data from SharePoint sites. It’s a replacement of already deprecated pnp-js-core library. See changelog for the latest updates.
- PnP Provisioning Engine and PnP CSOM Core – PnP provisioning engine is part of the PnP CSOM extension. They encapsulate complex business driven operations behind easily usable API surface, which extends out-of-the-box CSOM NuGet packages. See changelog for the latest updates.
- PnP PowerShell – PnP PowerShell cmdlets are open-source complement for the SharePoint Online cmdlets. There are more than 300 different cmdlets to use and you can use them to manage tenant settings or to manipulate actual SharePoint sites. They See changelog for the latest updates.
- List formatting definitions – Community contributed samples around the column and view formatting in GitHub.
- Site Designs and Site Scripts – Community contributed samples around SharePoint Site Designs and Site Scripts in GitHub.
- DevOps tooling and scripts – Community contributed scripts and tooling automation around DevOps topics (CI/CD) in GitHub.
- Teams provisioning solution – Set of open-source Azure Functions for Microsoft Teams provisioning. See more details from GitHub.
SharePoint Dev articles
SharePoint Dev articles are surfaced at docs.microsoft.com/en-us/sharepoint/dev. Since the last release, also classic SharePoint server-side API reference documentation has been moved to the docs.microsoft.com platform. You can provide contributions to these documents by submitting documentation improvements using GitHub tooling. All of the SharePoint Dev docs are stored and surfaced from the sp-dev-docs repository. Here are new/updated articles on SharePoint Development.
- Updates on numerous articles related on transitioning of the capabilities from targeted release to world wide availability
- And the countless other adjustments and updates on the documentation
SharePoint Dev YouTube video channel
You can find all SharePoint Dev videos on our YouTube Channel at http://aka.ms/spdev-videos. This location contains already a significant amount of detailed training material, demo videos, and community call recordings.
Here are new demo or guidance videos released since the last monthly summary.
- Community demo – New capabilities in PnP Tenant Templates
- Community demo – Modern “Save site as a template” with SPFx, Azure Functions and Tenant templates
- Community demo – Creating Microsoft Teams tab with SharePoint Framework, React.js and Material-UI
- Community demo – Drawing SVGs Conditionally with List Formatting
- Community demo – Library Components: NPM Link Quick Tip
- Community demo – ReactJs SPFx block quotation that uses editable HTML and cutting-edge CSS
- Community Call Demo – SharePoint look book – Designing amazing out-of-the-box sites and pages
- Community Demo – Building a custom React based carousel web part for modern SharePoint
- Community Demo – Building a modern Search Center using open-source search solution
- Community Call Demo – Latest capabilities and improvements on the SharePoint oob modern web parts
- Community Demo – SharePoint $batch usage in Microsoft Flow automation to improve performance
- Community Demo – Synchronize SharePoint modern page templates across site collections
- Community Call Demo – Introducing new tile layout for view formatting
Key contributors to the October 2019 update
Here’s the list of active contributors (in alphabetical order) since last release details in SharePoint Dev repositories or community channels. PnP is really about building tooling and knowledge together with the community for the community, so your contributions are highly valued across the Office 365 customers, partners and obviously also at Microsoft. Thank you for your assistance and contributions on behalf of the community. You are truly making a difference!
- Aakash Bhardwaj (HCL Technologies) – aakashbhardwaj619
- Albert-Jan Schot (Mavention) – @appieschot
- Alex Terentiev (SharePointalist) – @alexaterentiev
- Andrew Connell (Voitanos) – @andrewconnell
- Andrew Koltyakov (ARVO Systems) – @andrewkoltyakov
- Anoop Tatti (Content and Code) – @anooptells
- Beau Cameron (Aerie Consulting) – @Beau__Cameron
- Bruce Albany (Kloud Solutions) – balbany
- Chris Kent (DMI) – @theChrisKent
- Christian Zuellig (MondayCoffee) – @ChristianZuell1
- Dan Myhre (Baird) – @danmyhre
- David Warner II (Catapult) – @DavidWarnerII
- dem123-cthulu alias – dem123-cthulu
- Dhaval Upadhyaya – upadhyayadhaval
- Elio Struyf – @eliostruyf
- Erwin van Hunen (Rencore) – @erwinvanhunen
- Frank Cornu (aequos) – @FranckCornu
- Garry Trinder (CPS Solutions) – @garrytrinder
- Gautam Sheth (Rapid Circle) – @gautamdsheth
- Giacomo Pozzoni (DQC Sverige AB) – @PozzoniGiacomo
- gobigfoot alias – gobigfoot
- Heinrich Ulbricht (Communardo Software GmbH) – @h_ulbricht
- Hiroshi Yoshioka – hyoshioka0128
- Hugo Bernier (Point Alliance) – bernierh
- Jens Otto Hatlevold (Bouvet AS) – jensotto
- Joakim Högberg (Bravero) – @joakimhogberg
- Joel Rodrigues (Storm Technology Ltd) – @JoelFMRodrigues
- João Mendes – @joaojmendes
- Joseph Velliah – @JosephVelliah
- Julie Turner (Sympraxis Consulting) – @jfj1997
- komal-sa alias – komal-sa
- Laura Kokkarinen (Sulava) – @LauraKokkarinen
- Luis Mañez (ClearPeople) – @luismanez
- Marc D Anderson (Sympraxis Consulting) – @sympmarc
- Matthew Farrell – matthewfarrell
- MSFTSteffi alias – MSFTSteffi
- Nanddeep Nachan – @NanddeepNachan
- Paolo Pialorsi (PiaSys.com) – @PaoloPia
- Patrik Hellgren (Sherpas Group) – @patrikhellgren
- Patrick Lamber (NUBO GmbH) – @patricklamber
- Paul Bullock (CaPa Creative Ltd) – @pkbullock
- Piotr Siatka (Valo Intranet) – @PiotrSiatka
- PowershellScripts alias – PowershellScripts
- Rabia Williams (Enage Squared) – @williamsrabia
- Ram Prasad Meenavalli – @ram_meenavalli
- Ramin Ahmadi (Content and Code) – AhmadiRamin
- Sergei Zheleznov (CollabStack Gmbh) – SergeiZheleznov
- Stijn Brouwers (Amplexor) – stijnbrouwers
- Spencer Harbar – @harbars
- SPShire – SPShire
- Stephan Bisser (Solvion) – @stephanbisser
- Stefan Bauer (n8d) – @StfBauer
- TheBass – BassemNKhalil
- Thomas Meckel – tmeckel
- Tracy Sterling (Valore Partners) – TracyGH
- Waldek Mastykarz (Rencore) – @waldekm
- Velin Georgiev – @velingeorgiev
- Vincent Biret (2toLead) – @baywet
- xp44mm alias – xp44mm
- Zach – zachroberts8668
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 community. There were also people who contributed from other companies during last month, but we did not get their logos and approval to show them in 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 with the PnP work during last month.
- Bert Jansen – @O365Bert
- Bob German – @Bob1German
- Chris Hackman
- John Nguyen – johnguy0
- Joanne Hendrickson – JoanneHendrickson
- Koen Zomers – koenzomers
- Luca Bandinelli – lucaband
- Melissa Torres – melitoSP
- Mikael Svenson – @mikaelsvenson
- Pat Miller – @PatMill_MSFT
- Patrick Rodgers – @mediocrebowler
- Ramakrishnan Raman – Ramakrishnan24689
- RK Menon – rk-menon
- Robin Meure – @robinmeure
- Srikanth Deshpande – srideshpande
- Tom Resing – @resing
- Vesa Juvonen – @vesajuvonen
- Yvan Duhamel – Yvand
SharePoint PnP Core Team
SharePoint PnP Core team manages SharePoint PnP community work in the GitHub and also coordinates different open-source projects around SharePoint development topics. PnP Core Team members have a significant impact on driving adoption of Office 365 and SharePoint development topics. They have shown their commitment to the open-source and community-driven work by constantly contributing to the benefit of the others in the community. Thank you for all that you do!
- Erwin van Hunen (Rencore) – @erwinvanhunen
- Paolo Pialorsi (Piasys.com) – @PaoloPia
- Radi Atanassov (OneBit Software) – @RadiAtanassov
- Elio Struyf (Valo Intranet) – @eliostruyf
- Andrew Connell (Voitanos) – @andrewconnell
- Andrew Koltyakov (ARVO Systems) – @andrewkoltyakov
- Chris Kent (DMI) – @theChrisKent
- Stefan Bauer (n8d) – @StfBauer
- Laura Kokkarinen (Sulava) – @LauraKokkarinen
- Julie Turner (Sympraxis Consulting) – @jfj1997
- Velin Georgiev (Pramerica) – @velingeorgiev
- Waldek Mastykarz (Rencore) – @waldekm
Here are the Microsoft Internal PnP Core team members:
- Bert Jansen – @O365Bert
- Mikael Svenson – @mikaelsvenson
- Patrick Rodgers – @mediocrebowler
- Vesa Juvonen – @vesajuvonen
Next steps
- October 2019 monthly community call is on Tuesday 8th of October. Weekly SharePoint dev community calls are on Thursday and you can download invite from http://aka.ms/sppnp. Download recurrent invite to monthly community call with a detailed schedule for your time zone from http://aka.ms/spdev-call.
“Sharing is caring”
SharePoint Team, Microsoft – 8th of October 2019