SharePoint Dev Ecosystem / SharePoint Patterns and Practices (PnP) August 2017 release is out with new contributions from the community to the community. This post contains all the details related on what was included with the release and what else has been happening in the SharePoint dev ecosystem world during the past month(s).
What is SharePoint Patterns & Practices (PnP)?
SharePoint PnP is a nick-name for SharePoint Dev Ecosystem activities coordinated by SharePoint engineering. SharePoint 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 in GitHub by providing contributions on 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 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 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 SharePoint Developer group in the Microsoft Tech Community for providing input and to ask any questions around the existing materials.
Some key statistics around PnP program from July 2017
- GitHub repository forks at most popular repositories in SharePoint GitHub organization
- PnP – 2405
- PnP Sites Core – 395
- PnP PowerShell – 338
- PnP JS Core – 163
- SP Dev Docs – 180
- SP Dev FX Web Parts – 269
- Unique visitors during past 2 weeks in SharePoint organization repositories – 27316
- Merged pull requests across SharePoint repositories (cumulative) – 3513
- Closed issues and enhancements ideas cross SharePoint repositories (cumulative) – 2099
- PnP Core component NuGet package downloads (cumulative) – 125645
- Page views in SharePoint Dev pages at dev.office.com during July 2017 – 461606
- Page views in PnP MSDN pages during July 2017 – 52247
- Unique tenants using PnP components during July 2017 – 5921
- Http requests towards SharePoint Online from PnP components during July 2017 – 3597878030
- PnP YouTube channel had 16304 views with 100444 minutes watch time during July 2017
Main resources around SharePoint PnP and SharePoint development
- SharePoint development documentation – http://dev.office.com/sharepoint
- 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
- Presentations at docs.com – http://aka.ms/SPPnP-Docs – moving gradually to SlideShare
August 2017 monthly community call
Agenda for the Tuesday 8th of August 2017 SharePoint Dev Ecosystem / Patterns and Practices community call at 8 AM PST / 5 PM CET:
- Summary on the August 2017 release and other program updates – Vesa Juvonen ~15 min
- Demo on using new 201705 preview schema with PnP Provisioning Engine – Bert Jansen (Microsoft) ~15 min
- Demo on React Content By Query client-side web part – Simon-Pierre Plante (SPP Technologies) ~15 min
- Demo on React Overdue Tasks Application Customizer – Alex Terentiev (SharePointalist) ~15 min
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 Weekly Webcasts
We started new PnP Webcast series in 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 on the PnP Channel 9 section. Here are the new webcasts released after the last monthly release. We are looking into continuing the releases of the webcast in the future, but the schedule could be adjusted to be also bi-weekly.
- 7th of August – Programming modern pages with zones, sections, news and home pages
- 26th of June – SharePoint Access App scanner
- 19th of June – VSTS Build and Release Pipelines for SharePoint Framework Solutions
- 12th of June – Introduction to SharePoint Framework Extensions
General Dev, CSOM, PnP Core, PnP PowerShell SIG Bi-Weekly Call Special Interest Group (SIG)
General SP Dev, CSOM PnP Sites Core, PowerShell and Provisioning Special Interest Group (SIG) have bi-weekly meetings to cover the general SharePoint topics, CSOM and latest in the PnP CSOM core component, PnP PowerShell and in the PnP remote provisioning engine. These calls have also free Q&A section if you have any questions around SharePoint development in on-premises or in the cloud. Need to get a recommendation for your design or having a hard time with some APIs? – Drop by, ask a question and we’ll help you.
You can download invite for the biweekly meeting from the following location. Notice that invite has been updated August 2017 with updated connection information and meeting has been rescheduled for Thursday.
- Invite to bi-weekly call – https://aka.ms/sppnp-core-sig-call
All SIG meetings are being recorded and are available for view from PnP YouTube Channel. Here are the latest recordings from the SIG calls.
- 14th of June – Demo on provisioning communication sites programmatically (preview), SPFx solution deployment automation (discussion), other general topics
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 the engineering perspective and to cover also latest development related to 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 in 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 are the latest recordings.
- 6th of July – Latest on PnP JS Core library. Demos on custom business objects with sp-pnp-js and new configure method in the sp-pnp-js
- 22nd of June – Latest on SPFx and PnP JS Core. Demos on custom dialogs with SPFx, provisioning elements using XML and first look on upcoming Graph support for sp-pnp-js
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 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.
On top of the specific PnP repositories, PnP initiative also controls the new repositories under the SharePoint organization.
- 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 API
- sp-dev-fx-extensions – Samples and tutorial code around SharePoint Framework Extensions
- 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
Here’s the current repository structure, including a 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 synced 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-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
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 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 initiative 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 being 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 or from the SharePoint Framework Extensions repository at https://github.com/SharePoint/sp-dev-fx-extensions.
- New web part sample tutorial-migrate-datatables showing outcome of tutorial around migrating jQuery and DataTables solution built using Script Editor Web Part to SharePoint Framework
- New web part sample tutorial-migrate-fullcalendar showing outcome of tutorial around migrating jQuery and FullCalendar solution built using Script Editor Web Part to SharePoint Framework
- New web part sample react-provision-assets showing different mechanisms to provision assets and configurations to SharePoint sites when SPFx solution is installed on a site
- New web part sample react-msal-msgraph showing how to use Microsoft Authentication Library (MSAL JS) to call the Microsoft Graph from client-side web part
- New web part sample react-redux-async-immutablejs showing how to use Redux to maintain a single state for the entire application and usage of ImmutableJS to create performant state trees
- New web part sample js-employee-spotlight showing the use of SharePoint Framework for show casing Employee Spotlight
- New web part sample react-invitation-manager illustrating the possibility to use Graph API to invite external users into the Azure Active Directory
- New web part sample react-content-query-webpart is a modern version of the good old
Content by Query WebPart
that was introduced in SharePoint 2007 - New web part sample react-pagecontributors, which displays page contributors in reverse chronological order
- New web part sample react-app-settings showing how appSettings.json file can be added and used within SharePoint Framework web parts similar to the Web.config / App.config key value app settings in .NET Framework projects
- New extension sample react-command-share-pnp-js is a custom action only active on multiple selected items for sharing multiple items using a custom dialog built with Office UI Fabric React components
- New extension sample react-field-toggle demonstrating how to build a dynamic update control for field values in the list view
- New extension sample react-command-email-url showing how to add a new link to context menu which will show a custom dialog box for sending link to file in email
- New extension sample js-field-weather showing how to use jQuery and jQuery plug-ins within field customizer
- New extension sample js-field-conditionalformatting showing how to build Excel-like conditional formatting to numeric fields based on their values
- New extension sample react-command-directions showing travel directions to the given location using Google Maps integration
- New extension sample react-app-announcements showing how to use application extension to show urgent organizational announcements
- New extension sample react-command-file-size-viewer showing how to build a custom Command View Set to get summary of file sizes of one or numerous files in a library
- New extension sample react-application-duetasks showing how to build custom application customizer showing possible overdue tasks in a site for user
- New extension sample jquery-application-beautify-calc-column showing how to render the markup based formulas used in the calculated column as HTML when the outer/parent HTML tag is configured with a class name “beautifyCalcMarkup”
- New extension sample jquery-application-toastr showing how to build an application customizer that shows toast notifications configured from SharePoint list
- New extension sample js-application-listdrivenplaceholders deploys a list that allows end users to manage content that will appear in placeholders, via a SharePoint Framework application customizer extension
- New extension sample react-command-custom-command-bar illustrates how to display custom Command Bar when Command Set Button is pressed
- Updates to numerous other samples to polish the code and documentation
SharePoint Dev Build Definitions
These are scripts and assets available from the SharePoint Build Extensions repository at https://github.com/SharePoint/sp-dev-build-extensions.
- New sample update-manifest Gulp task which can be used to update the CDN URL in the manifest.json file dynamically
- New sample upload-app-package Gulp task to upload your SharePoint Framework solution package to SharePoint app catalog
- New sample upload-to-sharepoint Gulp task to upload your SharePoint Framework solution assets to SharePoint document library
PnP CSOM Core and Provisioning Engine
PnP CSOM Core component is a wrapper on top of native SharePoint CSOM and REST API, 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 August 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 August 2017 release:
- Preview support for new 201705 remote provisioning schema – You will need to explicitly opt-in for this schema in engine for testing new capabilities
- New capabilities in 201705 preview schema
- New settings in ListInstance
- New settings in Template – TemplateCultureInfo, Scope
- New options in Security / roles assignments – Remove
- New attributes in File level and property bag support for folder
- KeyColumn and Update Behavior for DataRows elements
- Image Rendition support
- IRM settings support
- List WebHooks – In schema, but not yet implemented in provisioning engine – coming in next release
- Client-side pages – In schema, but not yet implemented in provisioning engine
- Updated to use latest SPO CSOM NuGet package
- 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 JavaScript Core Library
New version release will be soon available for the Patterns and Practices JavaScript Core Library. This will be an incremental update for the library with additional capabilities and bug fixes on existing functionalities.
This is a similar effort as what PnP initiative previously has done with the PnP CSOM Core Component together with the community.
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 cmdlets are additive for SharePoint Online management shell, which concentrate more on the administrative tasks with SharePoint Online.
Notice. In the past PnP PowerShell cmdlets were using SPO- prefix, which however overlapped with the native SPO management PowerShell cmdlets, so prefixing was changed as part of the November 2016 release. Starting from June 2017 release, we no longer release alias entries as part of the package, which means that we only support PnP- prefix usage with the PnP PowerShell.
Here are the latest changes in the PnP PowerShell
- Preview support for new 201705 provisioning engine schema – by default 201605 is still used, but you can define “-Schema V201705” for using latest preview schema option
- Overall quality improvements and bug fixes
- Updated automatically generated PnP PowerShell cmdlet documentation at MSDN
PnP sample library
Here are updates across the PnP code sample library by the community on the code and documentation, which is a great way to contribute as well.
- Updated Portal.DataAccessLayer sample showing how to build a Client-Side Data Access layer for custom client side implementations
- Updated Provisioning.ModernPages to show support for multiple sections and columns
SharePoint Dev articles
SharePoint Dev articles are surfaced currently either in dev.office.com/sharepoint or in the PnP MSDN location. You can provide contributions for both of these locations by submitting documentation improvements using GitHub tooling. Majority of the SharePoint Dev docs are stored and surfaced from the sp-dev-docs repository and PnP MSDN articles are surfaced from the PnP-Guidance repository.
PnP initiative also controls the articles in the dev.office.com around SharePoint development. Here are new/updated articles around the SharePoint Framework. All documentation from MSDN will be gradually moving to dev.office.com/sharepoint.
- New tutorial – Use custom dialog boxes with SharePoint Framework Extensions
- New article – Call Microsoft Graph using the SharePoint Framework GraphHttpClient
- New article – Migrate jQuery and DataTables solution built using Script Editor Web Part to SharePoint Framework
- New article – Migrate jQuery and FullCalendar solution built using Script Editor Web Part to SharePoint Framework
- Updates to SharePoint Framework roadmap article
- Updates on the older articles related to the GA change and other general fixes
Here’s the new guidance released since past monthly communications in the PnP MSDN section at http://aka.ms/sppnp-msdn.
- Updates on existing SharePoint “modern” experiences customization guidance
- Updates on existing Developing well performing SharePoint Online portals guidance
PnP Guidance videos
You can find all PnP videos from our YouTube Channel at http://aka.ms/sppnp-videos. This location contains already a significant amount of detailed training material, demo videos, and community call recordings.
- New SharePoint PnP Short series with quick videos on specific topics
- Exclude libraries from SharePoint Framework bundles
- Using 3rd party libraries in SharePoint Solutions
- Optimizing validation of client-side web part configuration
- Correctly handling numeric web part properties
- Locking dependencies in SharePoint Framework solutions
- Updating SharePoint Framework Solution and web part instances
- Adding multiple web parts to one SharePoint Framework solution
- SharePoint PnP Partner Story – MondayCoffee – Building fully automated provisioning solution
Key contributors for the August 2017 release
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 the behalf of the community. You are making a difference!
- Alex Terentiev (SharePointalist) – @alexaterentiev
- Andrew Koltyakov (ARVO Systems) – @AndrewKoltyakov
- Andrew Connell – @andrewconnell
- Atish Kumar Dipongkor – dipongkor
- Chris Kent (Allegient, LLC) – @theChrisKent
- Charles (Bucks County Intermadiate Unit) – crossan007
- Charles Simard-Lecours – cslecours
- Erwin van Hunen (Rencore) – @erwinvanhunen
- Elio Struyf – @eliostruyf
- Eric Overfield – @EricOverfield
- Eric Shupps – @eshupps
- Franck Cornu (aequos) – @FranckCornu
- Gautam Sheth (Rapid Circle) – @gautamdsheth
- Giuliano De Luca – @giuleon
- HilaryStoupa – HilaryStoupa
- Ivan Vagunin (Digia) – ivagunin
- Jeff Burt (Credera) – TheJeffer
- Jorge Sepulveda – jorluiseptor
- José Quinto (Content and Code) – @jquintozamora
- Joseph Velliah – @JosephVelliah
- Luis Valencia (Software Estratégico) – @levalencia
- Matt Jimison (Allegient) – @mjimison
- Massimo Prota (Rapid Circle) – @massimoprota
- Mikael Svenson (Puzzlepart) – @mikaelsvenson
- Ole Kristian Mørch-Storstein (Puzzlepart) – okms
- Paolo Pialorsi (PiaSys.com) – @PaoloPia
- Paul Schaeflein – @paulschaeflein
- Pieter Veenstra (Triad) – @PieterVeenstra
- Radi Atanassov (OneBit Software) – @RadiAtanassov
- ramonitor – ramonitor
- Ravi Kumar Bomma – brk114
- Sergei Sergeev – @sergeev_srg
- Simon-Pierre Plante (SPP Technologies) – spplante
- simonagren – simonagren
- Spencer Harbar – @harbars
- Stéphane Magne (Mozzaik365) – @SPParse
- Steve Beaugé (Solutions pour SharePoint) – stevebeauge
- Tanya – tmelnychenko
- Tero Arvola (DigitalIllustrated) – @TeroArvola
- Waldek Mastykarz (Rencore) – @waldekm
- Vardhaman Deshpande (Content and Code) – @vrdmn
- wazawski – wazawski
- Velin Georgiev – @velingeorgiev
- Yannick Plenevaux – @yp_code
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 with the PnP work during last month.
- Antons Mislevics – antonsmislevics
- Bert Jansen – @O365Bert
- Brian Michely – @brianmichely
- Brian T. Jackett – @BrianTJackett
- Chakkaradeep (Chaks) Chinnakonda Chandran – @chakkaradeep
- Chris Hackman
- David Chesnut
- Frank Marasco – @frank_marasco
- Jonathan Huss – @jonathanhuss
- Keyur Patel
- Koen Zomers – @koenzomers
- Laura Graham – Lauragra
- Neil Hodgkinson – @Nellymo
- Nicholas Pape – nickpape-msft
- Pat Miller – @PatMill_MSFT
- Patrick Rodgers – @mediocrebowler
- Piotrek Krakowiak
- Ron Tielke – rtielke
- Vesa Juvonen – @vesajuvonen
Next steps
- August 2017 monthly community call is on Tuesday 8th of August at 8 AM PT / 5 PM CET for latest release details with demos – Download recurrent invite to monthly community call with a detailed schedule for your time zone from http://aka.ms/sppnp-call.
“Sharing is caring”
Vesa Juvonen, Senior Program Manager, SharePoint, Microsoft – 8th of August 2017