Office 365 Developer Patterns and Practices (PnP) August 2015 release is out with new contributions from community for the others in 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 two months, since we skipped July master merge due vacation period with key resources.
What is Office 365 Developer Patterns and Practices (PnP)?
PnP is community driven open source project where Microsoft and external community members are sharing their learning's around implementation practices for Office 365 and 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 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
- GitHub repository forks - 833
- Yammer group members - 3082
- Unique visitors during past 2 weeks - 3860
- Merged pull requests - 800
- Closed issues - 169
- PnP Core component NuGet package downloads - 7954
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, more on this below
- 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
- PnP Guidance Repository – http://aka.ms/OfficeDevPnPGuidance
August 2015 monthly community call
Agenda for the 11th of August (8 AM PST) community call:
- Summary on the August release and other updates in program - Vesa Juvonen ~30 min
- Including PnP usage survey results from June community survey
- New provisioning solution using PnP engine - Erwin van Hunen ~20 min
- Using Azure for performance improvements with caching - Luis Esteban Valenci ~10 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 3000 members in this group with lively discussions on different add-in model related topics. This is the most active developer group in the Office 365 Technical network and we are definitely proud and thankful of this.
Splitting of PnP repositories in GitHub
We have started now re-factoring of the PnP GitHub repo. Since repo has grown to be too big for easy management, it will be now split to multiple sub repos. Main PnP repo will still remain as the main location for the SharePoint Add-in/App samples and solutions, but other material is redistributed to smaller sub repos. Here's the detailed repository structure around PnP topics.
This will impact partly on the existing forks, but PnP repo still exists, so your fork is not orphaned. If you however want to contribute or consume material around more specific topics, you should fork the other repositories as needed. See guidance on getting started with PnP repositories from the PnP wiki with step-by-step instructions on how to fork and optionally contribute back for others in the community.
- PnP - Main repository in future as well, but will be smaller
- 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-Office-Addins - Office Add-in samples and models
- PnP-Office365-API - Office 365 and Azure AD related add-ins
- PnP-Partner-Pack - Packaged guidance with detailed instructions on setting things up in Office 365 and in Azure. This initiative will be started during August and target date for final delivery is on mid-Oct.
Notice that this change will be visible in the main branch after September release, but all development should be already done in dev branch of the right repository where the content is located. PnP Core team will guide the PRs to new locations as needed. Repo's are already visible, but some samples are still in progress of moving over.
The first version of the PnP remote provisioning engine was released with the April release and has been great success cross customers and partners. For the August 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 August release:
- Delta handling support for template provisioning where possible
- For example for fields, content types, lists, views, custom actions
- Overall quality and performance improvements
- Significant improvements on the on-premises support
- Support to provision URL Field into the DataRow of a ListInstance
- JSLink provisioning support for views
Notice. There is a small breaking change introduced for the engine related for the CustomAction object where data type of CommandUIExtension has been changed from string to XElement. This will require some changes on your code only if you specifically manipulate CustomAction objects in your code by setting string value to this property. IF this is the case, you can just parse the string to XElement, so change is minimal ('customAction.CommandUIExtension = XElement.Parse(xmlInStringFormat);').
- PnP Core: Lots of re-factoring done to improve code quality and completeness:
- provisioning engine updates (see above)
- Additional code quality improvements
- Azure AD Authentication support
- Build and test automation improvements
- Both PnP Core Nuget packages (cloud and on-premises) have been also updated accordingly.
- New component Core.JQuery contains a set of jQuery extensions to enable extending SharePoint functionality to provider hosted apps using the familiar jQuery syntax.
- New solution Core.ConnectedAngularAppsV2 shows AngularJS and SignalR way to perform connected web parts with enhanced implementation.
- New sample BusinessApps.RemoteCalendarAccess shows a method of sharing a SharePoint site calendar with any calendar client via iCalendar. The sample reads events from a SharePoint calendar and converts those events into a standard iCalendar format utilizing SharePoint CSOM, Azure Active Directory Graph Client Library, SQL Azure via Entity Framework, and Azure Web Apps.
- New sample AzureAD.RedisCacheUserProfile shows how to use windows Azure Active directory to get user profile information and how to use Azure REDIS Cache to make performant Add-Ins.
- New sample AzureAD.WebAPI.SPOnline shows how to call a Web API secured by Azure AD and the API calls SharePoint Online on behalf the logged in user. This scenario is useful for situations where you need a protected API Proxy to interact with SharePoint Online using User's credentials.
- Updated solution Core.TimerJobs.Samples with new sample code for the PnP timer job framework usage with real business scenarios.
- Updated sample Core.MMSSync to support CustomSortOrder property replication cross taxonomy stores.
- Updated solution Provisioning.UX.App with new UI capabilities and provisioning fixes.
- Updated all Scenario code to use updated SharePoint CSOM Nuget package
- Updated PowerShell.Commands with new CommandLets and with few fixes
- Performance and overall quality improvements
- Help and guidance improvements
- Set/Get-SPOSearchConfiguration search configuration configuration
- Remove-SPOWeb for removing sub webs from a web
- Add-SPOMasterPage for easy deployment of master page to a site
- ADFS authentication support for Connect-SPOnline
- Adal authentication support for Connect-SPOnline
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 and changes have been reviewed and approved by engineering. Right now we are working on specific App Model Recipes (>30 articles overall) in this area together with Todd Baginski where Todd is collecting the key guidance from the Core team and community for collecting the learnings and recommendations with specific topics. You are more than welcome to also contribute on this work by providing input and feedback.
In the this release the following new articles have been added or we have applied changes since last master merge:
- SharePoint Add-in Recipe - Custom Actions
- SharePoint Add-in Recipe - Custom field type
- SharePoint Add-in Recipe - Delegate controls
- SharePoint Add-in Recipe - Document ID Provider
- SharePoint Add-in Recipe - Elevated privileges
- SharePoint Add-in Recipe - Event Receivers & List Event Receivers
- SharePoint Add-in Recipe - Feature Stapling
- SharePoint Add-in Recipe - Information Management Policy
- SharePoint Add-in Recipe - List definition / list template
- SharePoint Add-in Recipe - List instance
- SharePoint Add-in Recipe - Localization
- SharePoint Add-in Recipe - Master Pages
- SharePoint Add-in Recipe - MMS manipulation
- SharePoint Add-in Recipe - Modules
- SharePoint Add-in Recipe - OneDrive for Business customization
- SharePoint Add-in Recipe - Performance Considerations
- SharePoint Add-in Recipe - Remote Timer Jobs
- SharePoint Add-in Recipe - Search API Usage
- SharePoint Add-in Recipe - Site columns and content types
- SharePoint Add-in Recipe - User Profile Manipulation
- SharePoint Add-in Recipe - Variations
- SharePoint Add-in Recipe - User controls and Web controls
- SharePoint Add-in Recipe - Web Part
- SharePoint Add-in Recipe - Workflows, Actions (Activities), Events, and Forms
- SharePoint Add-in Recipe - Yammer Integration
PnP Guidance videos
After the last release, we have published numerous new videos around the PnP topics, incuding recording of the free PnP transformation training presentations. This training contains videos, presentations, demos and labs for anyone to reuse as they wish.
- Introduction to PnP Transformation Process
- PnP Add-In Transformation Training module 1: Introduction
- PnP Add-In Transformation Training Module 2: Managing site settings using add-in model
- PnP Add-In Transformation Training module 3: Branding with add-in model
- PnP Add-In Transformation Training module 5: Using Remote Event Receivers and Remote Timer Jobs
- PnP Add-In Transformation Training module 6: Site provisioning with add-in model
- PnP Add-In Transformation Training module 8: Using Enterprise Content Management Capabilities with add-in model
- PnP Add-In Transformation Training Module 9: Using Search Capabilities with add-in model
- PnP Add-in Transformation Training Module 10: Transformation guidance from farm solutions to add-in model
- Demo - How to customize a Search Center with SharePoint add-ins
- Demo - How to build SharePoint add-ins that leverage search
- Demo - How to perform personalized search queries with CSOM
- Demo - How to Export and Import Search Configurations with CSOM
- Demo - Asynchronous remote provisioning solution for self service site collection creation
- Demo - Using remote provisioning pattern for sub site creation
- Demo - Using Office 365 themes to provide branding elements in Office 365
- Demo - Applying and using custom SharePoint themes with add-in model
- Demo - Using alternate CSS for providing custom branding in SharePoint site
- Demo - How to use Azure Service Bus to debug your remote event receivers
- Demo - How to use remote event receivers for your SharePoint add-ins
- Demo - You can still have timer jobs using the add-in model
- Demo - How to use client side caching to optimize the performance of your add-ins
- Demo - How to modify wiki pages using the add-in model
Notice that PnP transformation training videos are unfortuately still missing 2 modules, which will be included in the package during upcoming weeks.
Key contributors for the August 2015 release
Here’s the list of key active contributors (in alphabetical order) during the month August in PnP repositories. It's great to see familiar names and also new people joining on the communnity effort and asisting others. We are looking forward to continue working with such a talent and hope to get more additional people involved on this joint effort to help the community in the transition towards Office 365 and SharePoint add-in model/app model techniques. We also want to explictly thank the community for being active in the PnP Yammer group on helping each other.
Thank you for your assistance and contributions from the behalf of the community. You are truly making a difference!
- André Lage (Processlynx AG)
- Ben McClaren
- Erwin van Hunen (Knowit AB) - @erwinvanhunen
- Etienne Bailly | MCT - @etienne_bailly
- Danny Jessee - @dannyjessee
- GeiloStylo - GitHub alias
- Ivan Vagunin (Knowit AB) - @ivagunin
- Ken Domen (Nike) - @kendomen
- Lester Sconyers - @lestersconyers
- Louis-Charles Gagnon (LS2 Investments Inc.)
- Luis Valencia - @levalencia
- Mårten af Sandeberg (Knowit AB)
- Matthew Chestnut
- Michael Schau (WorkPoint A/S)
- Nige Price - @Nigel_Price
- Nanddeep Nachan - @NanddeepNachan
- Paolo Pialorsi (PiaSys.com) - @PaoloPia
- Radi Atanassov (OneBit Software) - @RadiAtanassov
- Robin Engström (Knowit AB) - @robinestrm
- Rodrigo Romano - rodrigoromano.net
- Roman Rozinov - @romanrozinov
- Stijn Neirinckx
- Tobias Zimmergren (Tozit AB) - @zimmergren
- Todd Baginski (Canviz LLC) @toddbaginski
- Torsten Schuster
- Vardhaman Deshpande - @vrdmn
- Vincent Wesker - @VWesker
- ZeBobo5 - GitHub alias
Here’s the list of Microsoft people who have been closely involved on the PnP work during last month.
- Antons Mislevics (Microsoft)
- Bert Jansen (Microsoft) - @O365Bert
- Brian Michely (Microsoft) - @brianmichely
- Dan Budimir (Microsoft)
- Eric Xu (Microsoft)
- Frank Marasco (Microsoft) - @frank_marasco
- Jeremy Thake (Microsoft) - @jthake
- Jonathan Huss (Microsoft) - jonathanhuss.com
- Kiki Shuxteau (Microsoft)
- Laura Graham (Microsoft)
- Patrick Rodgers (Microsoft)
- Reeza Ali (Microsoft)
- Ron Tielke (Microsoft)
- Sami Nieminen (Microsoft)
- Steven Follis (Microsoft) - @steven_follis
- Steve Walker (Microsoft) - @sharepointing
- Vesa Juvonen (Microsoft) - @vesajuvonen
Latest statistics from GitHub
Here's some statistics from the PnP repository. It's great to see the growing contribution numbers and for example how our punch card looks like, since it proofs that this is truly a global effort with contributions 24/7.
See About Repository Graphs for more details on above statistics.
We'll continue working with the community on growing the guidance based on the input from field. Your feedback and input is extremely important for us to prioritize the work, so please keep the feedback and comments coming using the PnP Yammer group. We are also looking forward on seeing all the valuable contributions from the community.
Key upcoming dates for PnP
- August monthly community call is on 11th of August for August release details and general update on the PnP program
- Following master merge will happen on 4th of September and September community call is on 8th of September
“Sharing is caring”
Vesa Juvonen, Senior Program Manager, Office 365, Microsoft