Quantcast
Channel: Blog
Viewing all 429 articles
Browse latest View live

Office 365 Developer Patterns and Practices (PnP) - Community Survey - Spring 2016

$
0
0

We are conducting a community survey around the Office 365 Developer Patterns and Practices (PnP) program. Your input truly matter and we want to collect some feedback around the PnP initiative for the future direction. You can find this short survey from the following address. Survey will be open for feedback until Friday 11th of March 2016. Results and details will be shared with the community.

Thank you for your input on this survey, your feedback and comments are highly appreciated.

What is Office 365 Developer Patterns and Practices (PnP)?

Office 365 Developer Patterns and Practices (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 following blogs post around the different options - Introducing Office Dev Patterns and Practices Office Hours and Interest Groups.


Thanks for your interest on the PnP initiate. If you have any questions, feedback or comments around the PnP, please use the PnP Yammer group at http://aka.ms/OfficeDevPnPYammer.

Sharing is caring!


Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 29th of February 2016


Announcing Responsive UI Package for SharePoint on-premises (2013 and 2016)

$
0
0

We are excited to announce availability of open source Responsive UI Package for SharePoint on-premises. This package is designed to transform your SharePoint on-premises deployment responsive where needed and it supports both SharePoint 2013 and SharePoint 2016 version.

Package is available from GitHub and it changes the native behavior of your SharePoint deployment by adding support for three different rendering options depending on the device screen size. You can deploy the package to any on-premises SharePoint site by simply using the provided PowerShell scripts. User interface changes are automatically applied based on the device screen size accessing the SharePoint site. 

Actual implementation is NOT using custom master pages, we rather embed the needed styling definitions and JavaScript files to the site using so called JavaScript embed pattern, which is explained in MSDN. This means that the responsiveness can be applied even if the sites are still using out-of-the-box master pages, which is the recommended options around UI customizations, where possible.

Here’s a screenshot of the normal desktop view.


Here’s how the same page will look like in table view or in general when the screen size is smaller than suitable for the desktop view. Notice that the navigation is automatically hidden based on the screen size and shown when clicked again.


Here’s same page in phone view or smaller device view. In similar ways as with table view, the navigation elements are automatically hidden, but shown when needed.


In the following video Paolo Pialorsi (Piasys.com) from the PnP Core team shows how to use the package and how it changes the user interface behavior based on the display resolution.

Video at Channel 9.

Resources

Can I use this in my deployments and how is it supported?

All assets released under the PnP initiative are open source and available for you to reuse anyway you want in your own deployments. Technical approach and implementation is fully supported by Microsoft, but since this is released under the open source approach, we do not have specific support available for this from the Premier support.

If there’s any technical challenges around the implementation or you’d like to get support around using it, we would suggest to use the Office Dev PnP Yammer group at http://aka.ms/OfficeDevPnPYammer for contacting Microsoft and community members who can provide you assistance or input around the possible questions you have.

If you find any issues on the provided package, please use the GitHub tooling to report issues or to submit directly pull requests to further enhance the provided capability. This package is provided as open source solution, so all contributions from the community are more than welcome.

What is SharePoint Patterns and Practices (PnP) initiative

This is a sibling initiative for the Office 365 Developer Patterns and Practices (PnP) initiative. We will be releasing more on-premises related solutions and scripts under the SharePoint PnP umbrella. We are also looking into providing these solutions for the community using more easily approachable channels, but the actual source code for the scripts and solutions will be located in the GitHub under OfficeDev organization.

What about SharePoint Online?

We have already previously released a similar package for SharePoint Online in the PnP Partner Pack. You do not need to deploy the full PnP Partner Pack to your environment to take advantage of these capabilities, you can rather just benefit from the provided provisioning template around the responsive user interface. Please see following resources around the PnP Partner Pack and responsive package support for SharePoint Online.


Thanks for your interest on the PnP initiate. If you have any questions, feedback or comments around the PnP, please use the PnP Yammer group at http://aka.ms/OfficeDevPnPYammer.

Sharing is caring!


Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 3rd of March 2016

Office Dev PnP Web Cast – SharePoint Client Side Development and Cross-Origin Resource Sharing (CORS)

$
0
0

In this PnP Web Cast we concentrated on the Cross-Origin Resources Sharing (CORS) considerations in JavaScript development with SharePoint customization's. Web cast concentrates on explaining the challenge and reasoning around CORS, including multiple options how to address that in your customization.

In demo section Patrick is showing following topics

  • How to call SharePoint host web from SharePoint hosted add-in using Cross Domain Library
  • How to call external resources from SharePoint hosted add-in using web proxy
  • How to call ASP.NET Web API hosted in Azure from JavaScript embedded to SharePoint sites

Calling Web API from the embedded JavaScript is a great way to be able to take advantage of Azure capabilities directly from the SharePoint. Demo also shows the needed configuration for the Azure hosted Web API and how to secure that in away that only calls from the allowed Office 365 are accepted.

Web cast presenters: Patrick Rodgers, Vesa Juvonen

Patrick is a Senior Program Manager from Office 365 engineering and Office 365 Dev PnP Core team member. 

Presentation used in this web cast is available from http://doc.com/OfficeDevPnP.

Video at Channel 9.

Addition resources

See following PnP videos for covering JavaScript development with SharePoint in general.

See also following resources around the covered topics

See following samples from the PnP library for additional reference around the covered topics.

What is Office 365 Developer Patterns and Practices (PnP) web cast series?

Office 365 Developer Patterns and Practices (PnP) web cast series cover different patterns, practices and topics around development with Office 365 and SharePoint. Majority of the topics are valid for the Office 365 and SharePoint on-premises. Our objective is to release new around 30-45 minute long web cast each Monday with few slides and live demo on the covered topic. All web casts are published at the PnP Channel 9 video blog with additional references on the existing materials.

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. Latest activities and future plans are covered in our monthly community calls which are open for anyone from the community. Download invite from http://aka.ms/OfficeDevPnPCall.

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.

If you have any questions, comments or feedback around PnP program or this blog post, please use the PnP Yammer group at http://aka.ms/OfficeDevPnPYammer.

“Sharing is caring”


Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 7th of March 2016

Office 365 Developer Patterns and Practices – March 2016 release

$
0
0

Office 365 Developer Patterns and Practices (PnP) March 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 team members. 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 March 2016 release

Main resources around PnP program

March 2016 monthly community call

Agenda for the Tuesday 8th of March (8 AM PST) community call (download invite):

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 4.000 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.

Spring 2016 PnP community survey

We are conducting a community survey around the Office 365 Developer Patterns and Practices (PnP) program. Your input truly matter and we want to collect some feedback around the PnP initiative for the future direction. You can find this short survey from the following address. Survey will be open for feedback until Monday 14th of March 2016. Results and details will be shared with the community later.

Thank you for your input on this survey, your feedback and comments are highly appreciated.

PnP Office Hours and Special Interest Groups (SIGs)

We started bi-weekly PnP Office Hours during February for addressing questions on how to contribute towards PnP. These are open discussions around what the Core team is doing and where the community members can assist. This time is also open for discussing aroung design decisions, challenges and possible issues in the PnP deliverables. You can download invite for the bi-weekly invite from following location.

Due constantly growing interest on the PnP program, we also are piloting Special Interest Groups (PnP SIGs), which are more targeted on specicic topic, like SharePoint Client Side (JavaScript) development or other areas. We are currently piloting this model with SIG for Client Side development, which have had great interest. Client Side Development SIG has already started building generalized library to be used with JavaScript development using TypeScript and with modern development practices. If you're interested of joinign this effort, please use following resources.

Please read more around PnP Office Hours and Special Interest Groups (SIGs) from following blog post.

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.

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

Latest changes

Provisioning Engine

The first version of the PnP remote provisioning engine was released with the April 2015 release. For the March 2016 release we have continued to add new supported capabilities and made significant improvements from stability perspective for both Office 365 and on-premises. This list contains the main updates that have been added in the March 2016 release::

  • Significant overall quality and performance improvements
  • Updates on home page extraction process with publishing and non-publishing sites
  • Updates on the workflow extraction handling
  • Updates on calculated column handling
  • Updates on the custom theme and welcome page extraction with tenant or web application root site
  • Updated base templates for the SPO and 2016 - used in delta handling


PnP library

We are looking to do significant consolidation on the SharePoint samples during upcomign months, which will help the community more easily find the general reference API samples for SharePoont. Target is to significantly grow also the non-SharePoint areas around Microsoft Graph, Office 365 API and also alternative technologies.

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)
    • General bug fixing, performance and quality improvements
    • Updates on the CAML class helper
    • v1.0 of automated documentation creation to md file
    • Removal of deprecated methods
    • Build and test automation improvements with unit test changes
    • Preparations for SP2016 specific version - coming in April
    • Both PnP Core Nuget packages (cloud and on-premises) have been also updated accordingly.
  • New sample MicrosoftGraph.Office365.GroupsExplorer which is ASP.NET MVC project which lists all groups in the user's tenant, along with all the properties..
  • NewCore.TaxonomyNavigationComponents component as a set of common taxonomy navigation components (main menu, contextual menu and breadcrumb) for SharePoint Online using Office UI Fabric and JSOM.
  • New sample Python.Office365.AppAuthentication which shows how to set up authentication between a Python app (using the Flask microframework) and Office 365 SharePoint Online site. The goal of this sample is to show how a user can authenticate and interact with data from the Office 365 SharePoint site.
  • NewTenant Information Portal which can be used to display information regarding your Azure Active Directory Tenant specifically related to Service Principals that are only surfaced via PowerShell. By default, when you register an add-in with appregnew/appinv, these service principals are not displayed in the Azure Portal and the default expiration is 1 year. This solution will also assist you with identifying apps (add-ins) that are expired or that may be expiring soon.
  • Updated Provisioning.UX.App provisioning solution with better UI handling and sub site provisioning override.
  • 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
    • Additional Updates on the setup guidance
    • Code quality improvements

PnP Guidance articles

The PnP Guidance repository contains guidance articles which are mostly being published atMSDN 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 there was significant effort on synchronizing the MSDN and GitHub artciles to ensure that both sides are in sync and there's matching page in the GitHub. Targe is to update the MSDN based on community contributions.

See MSDN artciles from the PnP MSDN section at http://aka.ms/OfficeDevPnPMSDN.

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.

Key contributors for the March 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!

Here’s the list of Microsoft people who have been closely involved on the PnP work during last month.

Latest statistics

Here's some statistics from the PnP, PnP PowerShell and PnP Sites Core (core component) repository. 

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.


Next steps

  • March 2016 monthly community call is on 8th of March at 8 AM PST / 5 PM CET for latest release details with demos - Download invite from http://aka.ms/OfficeDevPnPCall.
  • Following master merge will happen on 8th of April and April community call is on 12th of April 2016



“Sharing is caring”


Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 7th of March 2016

Office Store Policy and Guidance Updates

$
0
0

Here in the Office Store, we're eager to ensure that we're providing our customers with compelling, usable add-ins.  In December, we revamped the Office Store policies and guidance to set a higher user-experience bar for add-ins in the Store.  

 

Starting in March, we will switch to heavily promote those add-ins with high user ratings and wide usage.  Newer add-ins (which have not yet had a chance to be widely used) will be promoted based on (1) the richest functionality for users and (2) a great user experience.  Great add-ins will be promoted on homepages and will appear much more often on the first page of search results.  This promotion will lead to these add-ins being downloaded much more than others in the Store.  All existing add-ins in the Store are being re-evaluated against these new criteria, not just new submissions – and the effects of this will be seen across our storefront pages very soon as our storefront will be populated with the very best add-ins meeting the latest Office Store criteria.  Add-ins which do not meet the criteria will fall off the homepage.

 

We’ve also added a page on the top tips for improving your add-in ranking, and reducing submission rejection.  We’ll follow up very soon with a blog on adding richer functionality (which will include top tips for Outlook add-ins).

 

Office Extensibility Team

Microsoft Graph is now generally available in China

$
0
0
In November 2015, we announced the general availability of Microsoft Graph, located at graph.microsoft.com.  The Microsoft Graph exposes APIs, data and intelligence across Office 365 and Azure AD, and we are continuing to build towards a near future where multiple graphs and all APIs throughout Microsoft contribute to, and are accessible through, a single unified gateway to the power of the Microsoft cloud. Any developer capable of making an HTTP request can call the API, from any platform, and once-siloed Office 365 services can now be directly navigated via Microsoft Graph. For developers, what used to be 50+ lines of code are now cut to five.
 
As part of our commitment to this rich and powerful developer platform, we are pleased to announce that Microsoft Graph for services operated by 21Vianet in China is now available at microsoftgraph.chinacloudapi.cn. More details on the service capabilities can be found here.

The Office Extensibility Team

Office Dev PnP Web Cast – Introducing Widget Wrangler for SharePoint development

$
0
0

In this PnP Web Cast we concentrated on one great contributions from the community called Widget Wrangler. Widget Wrangler is a open source JavaScript library which will help to implement embedded JavaScript functionalities in both SharePoint Online and in SharePoint on-premises. Widget Wrangler has been developed by Julie Turner and Bob German from BlueMetal

Conceptually Widget Wrangler implementation is based on similar thinking as PnP App Script Part implementation, which was released few years back as part of the PnP patterns (or at the time it was call App Model Samples). Advantages of this model is that you do not have deal with iFrame implementations and functionalities can be fully responsive, where needed. Also implementation of the capabilities is much simpler when your JavaScript is directly embedded to the page rendering logic without additional complexity.  

In demo section Bob is showing following topics

  • How to use Widget Wrangler with plan JavaScript?
  • How to use Widget Wrangler with jQuery?
  • How to use Widget Wrangler with KnockoutJS?
  • How to use Widget Wrangler with Angular?
  • How does Widget Wrangler handle multiple instances of same widget in the SharePoint Pages?

Web cast presenters: Bob German, Julie Turner and Vesa Juvonen

Bob and Julie work for the BlueMetal company and they both have been active on sharing their learning's for the community around SharePoint development and Office 365 practices. 

BlueMetal - An Insight Company

Presentation used in this web cast is available from http://doc.com/OfficeDevPnP.

Video at Channel 9.

Addition resources

See following PnP videos for covering JavaScript embedding pattern

Here's different demonstrations using the Widget Wrangler in practice. These could be just as well embedded to the SharePoint. These demos are running outside of the SharePoint context to provide simplicity for them.

See following resources for additional information around Widget Wrangler and demonstrated topics.

What is Office 365 Developer Patterns and Practices (PnP) web cast series?

Office 365 Developer Patterns and Practices (PnP) web cast series cover different patterns, practices and topics around development with Office 365 and SharePoint. Majority of the topics are valid for the Office 365 and SharePoint on-premises. Our objective is to release new around 30-45 minute long web cast each Monday with few slides and live demo on the covered topic. All web casts are published at the PnP Channel 9 video blog with additional references on the existing materials.

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. Latest activities and future plans are covered in our monthly community calls which are open for anyone from the community. Download invite from http://aka.ms/OfficeDevPnPCall.

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.

If you have any questions, comments or feedback around PnP program or this blog post, please use the PnP Yammer group at http://aka.ms/OfficeDevPnPYammer.

“Sharing is caring”


Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 14th of March 2016

Project Online CSOM library Availability and Sample Code

$
0
0
We are happy to announce the availability of the Project Online CSOM library.  The library contains access to all the enhancements we have made towards improving our API.  The Project Online CSOM library has been added to the SharePoint Online CSOM Nuget package.  We will continue to use the Nuget package as our way of distributing updates going forward.  When you add the Nuget package to your project you will see the 'Microsoft.ProjectServer.Client.dll' and the package will contain all the dependencies needed to call Project Online.
 




In order to help our customers to start writing Project Online add-ins, we have created a few code samples and posted them on GitHub.  They are available for everyone to use in order to learn about Project Online and even incorporate into their add-ins.  The code samples include examples on how to call Project Online using CSOM .NET library, the REST and JSOM calling Project and Resource business objects.  We will continue to publish more code samples in the future.
 
If you have any feedback, post and vote for suggestions at   https://microsoftproject.uservoice.com

Office Dev PnP Web Cast – Responsive UI Package for SharePoint 2013 and 2016

$
0
0

In this PnP Web Cast we concentrated on the Responsive UI Package for SharePoint 2013 and SharePoint 2016, which was recently released in the PnP-Tools repository. Presentation concentrates on explaining the solution details, how it was implementation and what are the software requirements to make it work, including also the supported scenarios and limitations. We'll also talk about the solution design principles and why for example Bootstrap was not used. 

In demo section Paolo is covering following topics:

  • Where to find it?
  • How to to use it?
  • How the experience is changed with the package?
  • How is it implemented?

Technically this solution does work with SharePoint Online (Office 365) as well, but it was tested only in on-premises deployment. Target is to align the styles properly with SharePoint Online as well and include this as one solution for both on-premises and online. 

Paolo works as a Senior Consultant at PiaSys company and is also a Office 365 Dev PnP Core team member. 

Presentation used in this web cast is available from http://doc.com/OfficeDevPnP.

Video at Channel 9.

Addition resources

See following resources around the covered topics

See following samples from the PnP library for additional reference around the covered topics.

What is Office 365 Developer Patterns and Practices (PnP) web cast series?

Office 365 Developer Patterns and Practices (PnP) web cast series cover different patterns, practices and topics around development with Office 365 and SharePoint. Majority of the topics are valid for the Office 365 and SharePoint on-premises. Our objective is to release new around 30-45 minute long web cast each Monday with few slides and live demo on the covered topic. All web casts are published at the PnP Channel 9 video blog with additional references on the existing materials.

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. Latest activities and future plans are covered in our monthly community calls which are open for anyone from the community. Download invite from http://aka.ms/OfficeDevPnPCall.

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.

If you have any questions, comments or feedback around PnP program or this blog post, please use the PnP Yammer group at http://aka.ms/OfficeDevPnPYammer.

“Sharing is caring”


Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 21st of March 2016

Microsoft Graph webhooks update - March 2016

$
0
0

Hi folks, we've got another incremental update for our Microsoft Graph webhooks preview on the journey towards shipping a production release.  First, I'm pleased to say we've rounded out the set of available operations with support for DELETE and PATCH, as well as POST and GET.

Now, you can delete an existing subscription with the following http code:



DELETE https://graph.microsoft.com/beta/subscriptions/{id}
Authorization: Bearer <YourOAuthToken>

And you can extend the expiration time on a subscription with the following simple patch command:



PATCH https://graph.microsoft.com/beta/subscriptions/{id}
Authorization: Bearer <YourOAuthToken>
Content-type: application/json
{
  "expirationDateTime" : "2016-03-16T18:23:45.9356913Z"
}

Subscriptions to Outlook data will have a maximum expirationDateTime of 4230 minutes from the time of subscription creation. It's a good idea to use this new PATCH functionality to extend your subscription well before it times out.

We've also made a couple of changes to the property names for working with subscriptions, so we're more consistent across Microsoft APIs, and we've added a requirement to set the expirationDateTime explicitly when you create a subscription. Here's the new code:



POST https://graph.microsoft.com/beta/subscriptions
Content-type: application/json
Authorization: Bearer <YourOAuthToken>
{
  "changeType": "created",
  "notificationUrl": "[https://<YourAppURLHere>/api/webhookCallback%3c/a%3e&quot]https://<YourAppURLHere>/api/webhookCallback",
  "resource": "me/messages",
  "expirationDateTime" : "2016-03-16T18:23:45.9356913Z"
}

If the request succeeds, the response will be:



HTTP/1.1 201 Created
{
  "@odata.context":"https://graph.microsoft.com/beta/$metadata#subscriptions/$entity",
  "id":"7f105c7d-2dc5-4530-57cd-4e7af6534c03",
  "resource":"me/messages",
  "changeType":"created",
  "notificationUrl":"https://<YourAppURLHere>/api/webhookCallback",
  "expirationDateTime":"2016-03-16T18:23:45.9356913Z"
}

If your expirationDateTime is beyond the range that the resource you asked for supports, then you'll get a 400 error.

The eagle-eyed among you will notice we've changed the 'subscriptionId' property to be just 'id', and the 'subscriptionExpirationDateTime' to be just 'expirationDateTime'.

We expect these changes to be the final ones to the API shape now before we go to production.

Enjoy the new APIS, and as always, reach out to us on Twitter with the #MicrosoftGraph hashtag with your feedback.

Gareth and the webhooks team.

New SharePoint CSOM version released for SharePoint Online - March 2016

$
0
0

We are happy to announce availability of new SharePoint Client Side Object Model (CSOM) version targeted for the Office 365 or more specifically for SharePoint Online. This release contains few updates on the existing SharePoint CSOM assemblies and some maintenance changes. You can find the latest CSOM package for SharePoint online, including the Project Online CSOM assembly, from the NuGet gallery with an id of 'Microsoft.SharePointOnline.CSOM'. We are also working on updating the redistributable package at some point, but you can already right now start using some of these new capabilities in your solutions.

Version of the released CSOM package is 16.1.5026.1200. Previous versions of the NuGet has not been removed, so that your existing solutions will continue working without issues and you can decide when the new version is taken into use. Notice that even though the Nuget version is increased to 16.1.5026.1200, actual assembly version of the released assemblies is 16.1.0.0. You can also check the version of the assemblies from the File Version attribute, which alings with the Nuget version.

Notice. If you like to operate with SharePoint Online rather using PowerShell, also the SharePoint Online Management Shell will be updated at Microsoft download site to match the 16.1.5026.1200 version. Documentation for SharePoint Online Management Shell will be updated accordingly based on the released CmdLets. In this particular release, there were no new CmdLet's introduced, it's rather a maintenance release with small adjustments.

New properties and methods cross assemblies

Here's a raw list of all the new properties and methods in the assemblies. Notice that some of these properties and methods are meant to be used only internally, even though they are exposed in the CSOM API. This means that their usage models might not be completely straight forward and results could be unexpected. Below list contains main changes in the particular assemblies. We have filtered out those elements which are not relevant or change is minimal. MSDN library for the CSOM assemblies will be updated to match the latest version at some point. We've included some level of description for some of the mentioned properties where needed.

Microsoft.SharePoint.Client

  • public class Microsoft.SharePoint.ApplicationPages.ClientPickerQuery.PickerEntityInformation
  • public class Microsoft.SharePoint.ApplicationPages.ClientPickerQuery.PickerEntityInformationRequest

  • public class Microsoft.SharePoint.Client.AppProperties
  • public class Microsoft.SharePoint.Client.AppTile - Close to 10 new properties

  • public class Microsoft.SharePoint.Client.Hashtag

  • public method Microsoft.SharePoint.Client.List.GetListDataAsStream
  • public property Microsoft.SharePoint.Client.ListCreationInformation.ListTemplate

  • public method Microsoft.SharePoint.Client.ListItem.GetHashtags
  • public method Microsoft.SharePoint.Client.ListItem.UpdateHashtags

  • public property Microsoft.SharePoint.Client.ObjectSharingInformation.IsFolder
  • public property Microsoft.SharePoint.Client.ObjectSharingInformation.TotalFileCount
  • public property Microsoft.SharePoint.Client.ObjectSharingInformationUser.IsExternalUser

  • public class Microsoft.SharePoint.Client.ProvisionedMigrationContainersInfo
  • public class Microsoft.SharePoint.Client.ProvisionedMigrationQueueInfo

  • public method Microsoft.SharePoint.Client.RemoteWeb.GetFileByUrl

  • pubic property Microsoft.SharePoint.Client.RenderListDataParameters.AllowMultipleValueFilterForTaxonomyFields
  • public property Microsoft.SharePoint.Client.RenderListFilterDataParameters.ExcludeFieldFilteringHtml

  • public method Microsoft.SharePoint.Client.Site.ProvisionMigrationContainers
  • public method Microsoft.SharePoint.Client.Site.ProvisionMigrationQueue

  • public property Microsoft.SharePoint.Client.Visualization.DetailView

  • public method Microsoft.SharePoint.Client.WebParts.LimitedWebPartManager.ExportWebPart -
    Exports the specified Web Part definition to a string.

Microsoft.SharePoint.Client.Tenant

  • public property Microsoft.Online.SharePoint.TenantAdministration.SiteProperties.NewUrl - The new URL for the site (updating this will trigger a site rename). Notice. This is not yet functional in the production when this blog post was written.

Microsoft.ProjectServer.Client

  • public property Microsoft.ProjectServer.Client.StatusTask.CustomFields
  • public property Microsoft.ProjectServer.Client.StatusTask.FieldValues
  • public property Microsoft.ProjectServer.Client.StatusTask.Item
  • protected method Microsoft.ProjectServer.Client.StatusTask.LoadExpandoFields
  • public method Microsoft.ProjectServer.Client.StatusTask.RefreshLoad

 

“Sharing is caring”


Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 22nd of March 2016

Office Dev PnP Web Cast – How to contribute to Office Dev PnP initiative?

$
0
0

In this PnP Web Cast we concentrated on covering in practice how to contribute for the Office Dev Patterns and Practices (PnP) initiative for the benefit of others in the community. Presentation covers different ways to contribute for this community driven initiative and demonstration section will show how this can be done in practice.

Presentation covers following topics

  • What options do I have to help Office Dev PnP?
  • What tools do I need for GitHub?
  • Pulling down the PnP Code
  • Preparing to contribute with pull requests
  • Creating a pull request and submitting that for review

In demo section Bert shows in practice how to use GitHub tooling in general, fork your code, pull that down to your computers, make modifications and create a pull request for getting your changes included in the main repository. 

Web cast presenters: Bert Jansen, Vesa Juvonen

Bert works as a Service Engineer at Office 365 engineering and is also a Office 365 Dev PnP Core team member. 

Presentation used in this web cast is available from http://doc.com/OfficeDevPnP.

Video at Channel 9.

What kind of contributions are welcome?

Here's a short list of areas where you can contribute towards PnP.

  • Documentation and sample description updates
  • Reporting issues on existing samples
  • Modifying existing samples and other solutions, like the PnP Core component or PnP Partner Pack
  • New samples on the Microsoft Graph around Office 365 APIs
  • New samples on the SharePoint side (on-premises and online)
  • New samples on the Office client side

Addition resources

See following resources around the covered topics

Thanks for your contributions and assistance on this community initiative advance. 

What is Office 365 Developer Patterns and Practices (PnP) web cast series?

Office 365 Developer Patterns and Practices (PnP) web cast series cover different patterns, practices and topics around development with Office 365 and SharePoint. Majority of the topics are valid for the Office 365 and SharePoint on-premises. Our objective is to release new around 30-45 minute long web cast each Monday with few slides and live demo on the covered topic. All web casts are published at the PnP Channel 9 video blog with additional references on the existing materials.

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. Latest activities and future plans are covered in our monthly community calls which are open for anyone from the community. Download invite from http://aka.ms/OfficeDevPnPCall.

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.

If you have any questions, comments or feedback around PnP program or this blog post, please use the PnP Yammer group at http://aka.ms/OfficeDevPnPYammer.

“Sharing is caring”


Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 28th of March 2016

What's new at Build 2016 for Office Developers

$
0
0

The Office Developer Platform story got its latest stage of updates at Build 2016. Kirk Koenigsbauer explained the major themes of the news over at blogs.office.com. In this blog post we will dive even deeper into the new features and link off to the Build Videos that explain these in more detail.

Build native solutions in Office

Add-in Commands

Add-in Commands make your add-in more discoverable and efficient to use. You can create native UI extensions for your Office Add-in in Word, Excel, PowerPoint and Outlook. Add new buttons to existing Office tabs, create your own custom tab or extend contextual menus. Then, upon triggering your commands, show custom HTML based UI or execute JavaScript code behind the scenes. Watch Humberto from the engineering team talking about add-in commands at dev.office.com/build-videos.

Add-ins for Mac

The Office add-ins that you know and love now work in the Mac Office client applications, like they do on the Windows desktop apps, iPad apps, and online. This enables developers to reach their user base on whatever device they prefer and make the same great experiences available everywhere seamlessly. Watch Sudheer from the engineering team talking about add-ins for Mac at dev.office.com/build-videos.

Excel JavaScript API

You can now build even more powerful Excel add-ins with hundreds of new APIs introduced in requirement set 1.2 around protection, functions, sort and filter, R1C1 reference, page layout and many others. With new protection APIs, you can now protect your data and report with native Excel worksheet protection, even with advanced options and password. You can also leverage over 300 Excel functions directly from JavaScript with worksheet functions APIs, which really combines the power of Excel and JavaScript. Advanced sorting and filtering is also available in 1.2 to help developers build powerful data analysis driven solutions. We also introduced R1C1 reference style so developers have the flexibility to choose the style they prefer. Reports now can have a more appealing appearance with page layout APIs including adjusting row height, column width, merging cells. There are many other enhancements in 1.2 on Charts, Tables and Range as well. Watch Sky from the engineering team talking about add-ins for Mac at dev.office.com/build-videos.

Office Add-in Deployment Management

One of the asks we have received from organizations is that they want a way to be able to deploy Add-ins directly to users with no user interaction. Through Office Add-in Deployment Management an Administrator will be able to upload an Add-in manifest and assign it to users. Lean all about Deployment Management at http://aka.ms/addindeployment . Watch Juan from the engineering team talking about add-in deployment management at dev.office.com/build-videos.

Word Online APIs

Word Online has now enabled most of the common API set for add-ins. In particular, add-ins can now insert, remove, read, and update bindings there. In April, Word Online will enable support for most of the Word 1.1 API set, including the Body, ContentControl, Document, Font, Image, Paragraph, Range, and Selection objects. Test your add-in in Word Online today! Watch Michael from the engineering team talking about Word JavaScript APIs at dev.office.com/build-videos.

OneNote add-ins Preview

During the Overview breakout, Jeremy Thake and Tristan Davis demoed Office add-ins working in OneNote Online. This uses the same manifest.xml and web site calling the Office JavaScript APIs as the other Office clients that suport add-ins. This will be available in OneNote online first in preview followed by OneNote for Windows desktop later in the year. The screen shot below shows the Skim.It Office add-in in OneNote allowing you to select a hyperlink and fetch the skim text from the Skim.It surface into the Task Pane. Watch Vijay from the engineering team talking about OneNote add-ins at dev.office.com/build-videos.

Sideloading in Office Online and new Getting Started Instructions

You can now sideload add-ins in Word, Excel, and PowerPoint Online! This makes it significantly easier to test add-ins in the Office web clients, since you no longer need a developer tenant - in fact, you only need a Microsoft account and a browser. It also means that you can develop add-ins without Office installed on your computer and using any OS.
To use this feature, go to the Insert tab and choose Office Add-ins. In the Office Add-ins dialog, there will be a link in the upper-right corner to Upload My Add-in or Manage My Add-ins (Manage My Add-ins will open a drop-down menu with an Upload option). Select your manifest file and it will be loaded into your browser's storage and display in Office.  Watch Harrison from the engineering team talking about side loading add-ins at dev.office.com/build-videos.

With this feature, there is now a great end-to-end experience for developing add-ins without Visual Studio (for instance, on a Mac). We've updated our Getting Started instructions to include Visual Studio and non-Visual Studio instructions – check them out and let us know what you think!

Improved discoverability of add-ins for Outlook

Clicking the “Store” button in the Outlook ribbon (for Outlook 2016) or Settings (for web) now launches an in-client experience for discovering and enabling add-ins. Users can simply toggle a switch to quickly enable the add-ins they are interested in. If they want to learn more about your add-in, they can click on it to get to its details page to read the product description and see user reviews. This makes it significantly easier for the millions of Outlook users to find and start using your add-ins.  

Outlook Module extensibility

Module extensibility allows app developers the ability to create new modules within Outlook. Similarly, to Outlook’s native mail, calendar and task modules developers can now provide their users with their own module which will host their app’s content.

This new functionality is based on the existing Add-ins platform which allows you to extend Office applications using web technologies. You can distribute your Add-in via the Office store or via Office Add-in Deployment Management. Watch Prem from the engineering team talking about Outlook Modules at dev.office.com/build-videos.

Build Smarter Apps with Microsoft Graph and Office 365

One of Microsoft's key strategies is the ambition to “reinvent productivity” by empowering developers to build smart, people-centric applications on the Office and Azure AD platform, so users can get more out of work and life. Developers can use Microsoft Graph to build smart contextual apps that integrate with Office 365 data and rich relationships, for personal accounts in the consumer service and work and school accounts in the commercial service. Microsoft Graph is the gateway to data and insights in Office 365 and Azure AD and allows easy access and traversal of data across the services so you don’t have to be concerned about where that data lives. It uses web standards that enables any device capable of making an http request to integrate with the service and the platform provides secure access to the data. For more information check out graph.microsoft.com for more information. Watch Yina from the engineering team talking about the Microsoft Graph at dev.office.com/build-videos.

Webhooks

Webhooks are service to service callbacks for the web. We're adding the ability to get notified about changes in data in the Microsoft Graph via subscribing to a webhook and getting a simple JSON notification sent to a public HTTPS endpoint in your app. It's really easy to set up and saves you resources by avoiding polling to see what's new. In our first release, you can get webhooks on Outlook data, such as mail, calendar, contacts and conversations in Office groups. Watch Gareth from the engineering team talking about web hooks at dev.office.com/build-videos.

OneDrive

Over the past year, we have been hard at work creating a single common developer experience for files across Office 365 that allow developers to enable their apps to access and manage files across OneDrive, OneDrive for Business, and SharePoint. The breadth of solutions now connected to files in Office 365 can be found at the new OneDrive for Business ecosystem page Watch Sean from the marketing team talking about OneDrive APIs at dev.office.com/build-videos.

Now developers can get started faster than ever by connecting their web and mobile apps to OneDrive and OneDrive for Business, using only a few lines of code, our JavaScript SDK, and cross platform file pickers. Several new partners leveraging these tools include: DocuSign, Vimeo, Wrike, Readdle, AutoCAD 360, iAnnotate, and Smartsheet that demonstrates a use of the JavaScript file picker to attach office documents directly to projects and tasks.

Today the OneDrive API is one step closer to enabling file access via the Microsoft Graph with a comparable level of functionality that is currently available via the direct OneDrive API endpoint. The newest version JavaScript file picker (v7.0), now generally available, leverages the Microsoft Graph to enable unified authentication across business and personal accounts, which should vastly simplify our developer experience. We will continue to work to assure that the Microsoft Graph can be the simplest primary endpoint for developers building solutions for Office 365.
In addition to the improvements to the file picker and Microsoft Graph, the following features are available to developers to create more robust solutions that leverage OneDrive:

  • Webhooks for OneDrive – Generally available for consumer accounts and in preview for Business accounts. Enable near real time notifications for file changes without manual polling.
  • Enhanced Sharing Functionality – Use the OneDrive API to enable apps to view, add, and delete permissions
  • App Folders – Roam a user’s app data through the cloud and keep folders created/edited by your app in a known location. Now supported for OneDrive for Business accounts

Excel REST API

We are adding new Excel REST APIs that lets you read and modify data in an Excel workbook. It is now possible to build smart apps that allows users to get value out of the content stored in an Excel workbook by providing insights into the data. Take advantage of analytical powers of Excel, create tables and charts and extract visually appealing chart image - all from within your app. Watch Sudhi from the engineering team talking about Excel REST APIs at dev.office.com/build-videos.
The diagram shows an example of productive integration that can be achieved with the Excel REST API. Shown here is a Zapier workflow that enables data entered in an online form to be inserted into an Excel workbook.

People API

Utilize the rich people knowledge within Office365, with the new People API exposed via Microsoft Graph. The People API enables users to efficiently search for and browse through the people who matter most to. In addition, it supports fuzzy matching for spelling mistakes and topic context which allows the user to search for people by topics they have discussed in previous communications within Office365. For build 2016 the People API has been updated with additional properties and even more powerful algorithms that calculate relevance and ranking on the results. Watch Edward from the engineering team talking about the People API at dev.office.com/build-videos.

Find Meeting Time API, online meeting links and out of office settings

The new findMeetingTimes API in the Microsoft Graph is a cool API that, given a window of time, provides an app the best possible times for a meeting between an organizer and a set of attendees. This API takes a very tedious part out of scheduling meetings, does all the computing logic on behalf of the app, and makes it much easier for the app to just take the information returned by the API, and schedule meetings. There is no need for the app, or the meeting organizer, to look through raw free/busy data for users in order to find an available meeting slot. We also added a new API that allows access to the Automatic Replies Settings, otherwise known as Out of Office settings, for a user and also new is the online meeting links for those calendar events that have been linked to an online Skype meeting. With these three capabilities managing and scheduling time and meetings becomes more contextual and powerful.  Watch Shreedevi from the engineering team talking about the People API at dev.office.com/build-videos.

Microsoft Graph SDKs

We have updated Microsoft Graph SDKs for iOS, Android, and .Net and have additional SDKs available on Ruby, Java (JVM), JavaScript, and Node.js. These SDKs allow you to access the object model in Microsoft Graph on your specific platform and are all open source and available on GitHub. Watch Matt from the engineering team talking about the Microsoft Graph SDKs at dev.office.com/build-videos.

Office Graph

Make your app smarter with Insights from the Office Graph. Exposed via Microsoft Graph, the Office Graph connects objects in Office 365 using rich relationships. Allowing you to display content that matters to your users based on how they work with Office 365. 

Outlook Tasks

In addition to mail, calendar and contacts from Outlook available through Microsoft Graph, we have launched an Outlook Tasks API (Preview) on Outlook API endpoint. The APIs provide CRUD and sync support for Outlook tasks many users use to track their to-do list. We are working hard to make these APIs available on Microsoft Graph as well. See http://dev.outlook.com for details on Outlook Tasks API. Watch Deepak from the engineering team talking about the Microsoft Graph SDKs at dev.office.com/build-videos.  

Build solutions that engage users through conversations

Skype for Business announced the general availability of new developer capabilities for Skype for Business Online that enable developers to easily embed real-time presence and messaging into enterprise and Office 365 applications. New scenarios include voice and video-powered remote advisor experiences for telehealth, financial services, and other industries where connecting people to a live representative is important. 

Skype Web SDK

The Skype Web SDK is a JavaScript SDK with HTML controls that enable the integration of real-time messaging experiences in nearly any webpage with only a few lines of code. In addition to chat and presence, the current release of the SDK provides a preview of audio and video (AV) calling experiences that may be used with both Skype for Business Online and Skype for Business Server, including support for plugin-free AV experiences when using Microsoft Edge. Finally, the SDK includes a preview of a new HTML UI control that delivers a familiar end user experience inspired by Skype for Web.

Skype for Business App SDK Preview

The Skype for Business App SDK Preview provides native Android and iOS APIs for embedding Skype for Business audio, video, and chat capabilities into mobile and tablet applications. For the initial preview release, this SDK enables remote advisor experiences built upon Skype for Business. Similar to the Web SDK, the App SDK may be used with both Skype for Business Online and Skype for Business Server.

Skype for Business User API

The Skype for Business User API uses standard web technologies and REST-based patterns to allow developers to add chat and presence experiences to their communication solutions on nearly any platform or programming language. The Skype for Business User API is a foundational layer used to power the native Skype for Business mobile applications as well as external access from our new SDKs for web and mobile platforms.

Documentation and downloads for the Web SDK and User APIs are available on the Skype Developer Platform site. The App SDK will be available for preview in April. Register for updates at http://aka.ms/SkypeAppSDK Watch Richard from the engineering team talking about the Skype Developer Platform at dev.office.com/build-videos.

Office 365 Connectors

Office 365 Groups is a service that enables teams to come together and get work done by establishing a single team identity across Office 365 apps. Office 365 Connectors are a great way to get to bring filtered information that is relevant and contextual to the team’s needs and interests, into the Groups shared inbox. Over 50 connectors are available to users today -- from collaborating on a coding project with your developer team on GitHub, to tracking tags on Stack Overflow, to monitoring your project activities in Asana -- Office 365 Connectors make it easier for teams to stay in sync and get more done.

We are happy to announce the generally availability of the Office 365 Connectors developer platform so developers can write and publish connectors. Connectors are showcased inside the connector catalog that is surfaced to millions of Office 365 customers, through the Groups user experience. Watch Simeon from the engineering team talking about the Connectors at dev.office.com/build-videos. To learn more, visit the Outlook developer portal.

Building a connector is simple, just post messages to a webhook URL and use JSON to generate a message in the Office 365 Groups shared inbox. These messages in the form of rich connector cards can be customized to create unique experiences and scale to include a variety of content, deep links and actions.

Additionally, use the ‘Connect to Office 365’ button on your product site, so users can authorize their Office 365 Groups to receive your connector cards. Teams using Office 365 can stay engaged with important updates from your app, share weekly reports or set reminders for pending actions, resulting in immersive team collaboration. 

 

Partner Solutions

A number of our early partners are leveraging the developer platform already, to build custom connectors that bring new services to Office 365. These partners help deliver a broad connectors portfolio to customers, serving various categories such as-- CRM, social, news, HR, IT, marketing and productivity.
Today, we are happy to announce the latest connectors from our partners:

Brandfolder is a dedicated platform for managing and sharing brand assets. Using the connector, brand change events are instantly sent to the Office 365 Group and you can see all activity in real time. Simply click "Connect to Office 365" from inside the Events & Analytics' Integration tab and select the group for the event feed.
Biztera simplifies decision-making with cloud software that streamlines approval workflows. The Office 365 Connector integration allows you to share your decision about a request with any Office 365 group of your choice.
Caller Zen handles support requests via text message to keep your customers happy and your costs down. The Caller Zen Connector posts inbound calls and texts to your Office 365 Group, including links to MMS, video, and voicemail recordings.
ClearLogin is a cloud platform for authentication and password management that makes it easy for admins to keep their organization secure and their end users happy. Integrate Clearlogin with your Office 365 Group to receive real time notifications about user activity.
The fastest and easiest way to gather actionable feedback. Delighted’s Office 365 Connector can help customer focused teams by sending timely updates on overall NPS score, number of responses and breakdowns of happy, passive, and upset customers.
Envoy is the visitor registration product that is changing how visitors are greeted in workplaces around the world. Thanks to Envoy’s Office 365 Connector, when an employee’s guest arrives, Envoy can notify them ensuring the right people are in the loop.
IQBoxy is a bookkeeper in your Pocket, the app allows anyone to collect receipts on the go and in context on mobile, smartwatch or via email. Expense report updates and notifications are sent via IQBoxy’s Office 365 connector and setup is just a click away.
JustReply makes time tracking for teams simple but powerful, leveraging applications that you already use every day for communications, such as O365 email. Using JustReply’s Office 365 Connector, your team can be kept up to date with daily summary notifications and timesheet reminders.
MarketSpace provides complete monitoring of the companies and products you care about. Their Office 365 Connector delivers important news, app updates, social posts, videos and more right into your Office Group, so teams can stay on top of their competition, clients, sales prospects, partners and portfolios.
MeisterTask is a project and task management tool that provides flexible project boards that adapt to your workflow and make sure everyone is always on the same page. With the Office 365 Connector, send updates about your new or moved projects and tasks to your team, making task management more collaborative and open.
WakaTime helps everyone on your team to stay up-to-date with your latest coding activity. When a developer on your team commits code to GitHub, Bitbucket, or GitLab your Office 365 Group receives a message showing the in-editor time spent coding on that commit.
ZootRock curate’s articles, images, videos and quotes from around the web on topics of interest to you, saving you hours every week. ZootRock's Office 365 Connector integration allows you to share this content with your Office Groups.

We are also working with Bonusly, Breaking News and Champ to make those connectors available to users soon.

 

Office Dev PnP Web Cast – How to get started with Office Dev PnP?

$
0
0

In this PnP Web Cast we wanted to do a high level introduction on what the Office Dev Patterns and Practices (PnP) initiative is all about and what are all the different resources avaialble for the field to access and reuse. Since we are getting this question every now and then, we wanted to create video which we can use as the introduction story for the PnP initiative. This web cast is slightly longer than typical PnP web casts due numerous quick demos and the amount of material we wanted to cover. 

Presentation covers following topics

  • What's Office Dev Patterns and Practices (PnP) initiative
  • What's available from the PnP?
  • What are the different resources and access points for the materials?
  • Supportability story for PnP
  • How and why to contribute or get more closely involved?

There's three specific demos in this recording as follows

  • Using PnP search tools at dev.office.com to find what's relevant for you from the available samples and guidance
  • Using PnP Core Component (.net) in your managed code
  • Using PnP PowerShell for streamlining your automation scripts

Web cast presenters: Vesa Juvonen, Erwin van Hunen 

Erwin works as a Product Owner at Rencore and is also a Office 365 Dev PnP Core team member. 

Presentation used in this web cast is available from http://docs.com/OfficeDevPnP.

Video at Channel 9.

Addition resources

See following resources around the covered topics

Thanks for your interest on the PnP initiative.

What is Office 365 Developer Patterns and Practices (PnP) web cast series?

Office 365 Developer Patterns and Practices (PnP) web cast series cover different patterns, practices and topics around development with Office 365 and SharePoint. Majority of the topics are valid for the Office 365 and SharePoint on-premises. Our objective is to release new around 30-45 minute long web cast each Monday with few slides and live demo on the covered topic. All web casts are published at the PnP Channel 9 video blog with additional references on the existing materials.

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. Latest activities and future plans are covered in our monthly community calls which are open for anyone from the community. Download invite from http://aka.ms/OfficeDevPnPCall.

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.

If you have any questions, comments or feedback around PnP program or this blog post, please use the PnP Yammer group at http://aka.ms/OfficeDevPnPYammer.

“Sharing is caring”


Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 4th of April 2016

Introducing Bulk UPA Custom Profile Properties Update API for SharePoint Online

$
0
0

As part of the new Client Side Object Model (CSOM) version (4622.1208 or newer), SharePoint has new capability for bulk importing custom user profile properties. This capability has been now enabled in the first release tenants in Office 365 cross the world. Previously you could have taken advantage of the user profile CSOM operations for updating specific properties for user profiles, but this is not that performant and in case of thousands of profiles, operation is too time consuming.

Since many enterprises have however business requirements to replicate custom attributes to SharePoint user profile service, addition and more performant user profile bulk API has been released. This capability is available in newer version of the CSOM redistributable, which has been also released as Nuget package for developers.

  1. User attributes are synchronized from the corporate Active Directory to the Azure Active Directory. You can select which attributes are being replicated cross on-premises and Azure
  2. Standardized set of attributes are being replicated from the Azure Active Directory to SharePoint user profile store at Office 365. This cannot be controlled like in the on-premises.
  3. Custom synchronization tool taking advantage of the new build update APIs. Tool uploads a JSON formatted file to Office 365 tenant and queues the import process. Implemented as managed code (.NET) or as PowerShell script using the new CSOM APIs.
  4. LOB system or any external system, which is the actual source of the information in the JSON formatted file. This could be also combination of data from Active Directory and from any external system. Notice that from API perspective, LOB system could be also on-premises SharePoint 2013 or 2016 deployment from where you’d synchronize user profile attributes to SharePoint online.
  5. Out of the box server side timer job running in SharePoint online, which checks for queued import requests and will perform the actual import operation based on the API calls and information in provided file.
  6. Extended user profile information is available in the user profile and can be used for any out of the box or custom functionality in the SharePoint online.

Notice. Import only works for user profile properties, which has not been set to be editable for the end users. This is to avoid situation where the user profile import process would override any information which end user has already updated. Also import only allows custom properties that are not active directory core properties that typically must be synchronized to Azure Active Directory. For list of typical core directory properties see table listed later in FAQ section at this blog post.

Video on the API usage

Here's quick demo video on using the new CSOM API from managed code or from PowerShell. You can find used code sample, including sample PowerShell script, from the Office Dev PnP Code Gallery.

Video at Channel 9.

Import file format

Information to be processed is provided with JSON formatted file. Here’s a structure for the file format. Notice that ‘AttributeName_m’ is demonstrating how multi-value properties are defined in the source file.  


{
"value": [
{
"<IdName>": "<UserIdValue_1>",
"<AttributeName_1>": "<User1_AttributedValue_1>",
"<AttributeName_2>": "<User1_AttributedValue_2>",

"<AttributeName_m>": ["<User1_Value_m1>", "<User1_Value_m2>"]
},
{
"<IdName>": "<UserIdValue_2>",
"<AttributeName_1>": "<User2_AttributedValue_1>",
"<AttributeName_2>": "<User2_AttributedValue_2>",

"<AttributeName_m>": "<User2_AttributedValue_m>"
},
…,
{
"<IdName>": "<UserIdValue_n>",
"<AttributeName_1>": "<Usern_AttributedValue_1>",
"<AttributeName_2>": "<Usern_AttributedValue_2>",

"<AttributeName_m>": ["<Usern_Value_m1>", "<Usern_Value_m2>"]
}
]
}

Here’s simple example file. Identity resolution in this case will be based on the ‘IdName’ property and we have three different properties, which are being updated called ‘City’ and ‘Office’. File contains information for four different accounts in the specific tenant. Property names used in the source file are not locked on the names used in the SharePoint Online user profile service, since we will provide correct property mapping for the information within our code. 


{
"value": [
{
"IdName": "vesaj@contoso.com",
"Property1": "Helsinki",
"Property2": "Viper"
},
{
"IdName": "bjansen@contoso.com",
"Property1": "Amsterdam",
"Property2": "Beetle"
},
{
"IdName": "unknowperson@contoso.com",
"Property1": "None",
"Property2": ""
},
{
"IdName": "erwin@contoso.com",
"Property1": "Stockholm",
"Property2": "Elite"
}
]
}

Source data restrictions

There are few restrictions on the source data as presented here:

  • Max size: 2GB
  • Max properties: 500,000
  • Source file must be uploaded to same SharePoint Online tenant where the process is started

User profile property import process

Here’s the full process of getting properties update on the

  1. Create or synchronize users to Office 365 tenant or to Azure AD associated to it
  • When users are synchronized to Azure AD, it will also synchronize standardized set of attributes to SharePoint online User Profile Service
  • Create needed custom properties in the User Profile Service
    • Since there’s no remote APIs for creating custom properties to User Profile Service this step has to be performed manually once for each of the tenants where custom user profile properties are needed.
    • Notice that only user profile properties which are not “allowed to be edit by end users” can be imported. Trying to import JSON object property to a user profile property, which is marked as “editable by end users” will result an exception when CSOM API is called.
  • Create and upload external data file to Office 365 tenant
    • You’ll need to upload the JSON formatted data file containing the information to be updated to the particular Office 365 tenant.
    • Notice that in case of any exception during actual import process, SharePoint will provide additional logging information which is saved automatically to the same document library where the file existed with a new sub folder.
    • Cleaning of the log files and provided JSON files are on the responsibility of the custom solution using the API. You should consider the life cycle of these files in your implementation. Files are stored in the document libraries, so they will be consuming assigned storage for the site collection.
  • Call bulk UPA Import API for queuing the import job
    • Use the CSOM API to queue up the import process. This can be achieved by executing CSOM code by using managed code or PowerShell.
    • Method call to queue up the job will require property mapping information and the location of the data file. This method execution will be fast and it will just queue up the actual import process, which will be executed as back end process in the SharePoint Online.
  • Check status of the import job
    • You can also use remote APIs to check the status of specific import job or for all of the import jobs done recently. To be able to check status of specific call, you should store the unique job identifier which is received as return value when the job is queued up.

    CSOM API for builk import process

    Queue import

    You can queue import process by calling QueueImportProfileProperties method located in the Office365Tenant object. This is asynchronous call in a way that it doesn’t download the source data or the import, it simply adds work item to queue for doing this later. Here’s the full signature of the method:


    public ClientResult<Guid> QueueImportProfileProperties(
    ImportProfilePropertiesUserIdType idType,
    string sourceDataIdProperty,
    IDictionary<string, string> propertyMap,
    string sourceUri);

    Parameters

    idType

    Type: ImportProfilePropertiesUserIdType

    The type of id to use when looking up the user profile. Possible values are Email, CloudId and PrincipalName. Referring on how to resolve the identity at the cloud, either using email, Azure AD id or principal name. Note that regardless of the type the user must already exist in the User Profile Service for import to work. It’s recommended to use the Cloud SID is the option to resolve the identifying property to ensure uniqueness.

    sourceDataIdProperty

    Type: System.String

    The name of the id property in the source data. The value of the property from the source data will be used to look up the user. The User Profile Service property used for the lookup depends on the value of idType.

    propertyMap

    Type: IDictionary<string, string>

    A map from source property name to User Profile Service property name. Note that the User Profile Service properties must already exist.

    sourceUri

    Type: System.String

    The URI of the source data to import. This must not be transient as it may not be downloaded for some time.

    Return value

    Guid identifying the import job that has been queued.

    Here's a sample code to start the process with sample input file.


    // Create instance to Office 365 Tenant object. Technically not needed to load though.
    Office365Tenant tenant = new Office365Tenant(ctx);
    ctx.Load(tenant);
    ctx.ExecuteQuery();

    // Type of user identifier ["PrincipleName", "EmailAddress", "CloudId"] in the
    // User Profile Service. In this case we use email as the identifier at the UPA storage
    ImportProfilePropertiesUserIdType userIdType =
    ImportProfilePropertiesUserIdType.Email;

    // Name of user identifier property in the JSON file
    var userLookupKey = "IdName";

    var propertyMap = new System.Collections.Generic.Dictionary<string, string>();

    // First one is the property at the JSON file,
    // second is the user profile property Name at User Profile Service
    // Notice that we have here 2 custom properties in UPA called 'City' and 'OfficeCode'
    propertyMap.Add("City", "City");
    propertyMap.Add("Office", "OfficeCode");

    // Returns a GUID, which can be used to see the status of the execution and end results
    var workItemId = tenant.QueueImportProfileProperties(
    userIdType, userLookupKey, propertyMap, fileUrl
    );

    ctx.ExecuteQuery();

    Check status of import job

    You can also check status of the User Profile Service import jobs by using new CSOM APIs. There’s two new methods for this in the Tenant object.

    You can check status of individual import job by using GetImportProfilePropertyJob method located in the Office365Tenant object. You will need to have the unique identifier of specific import job provided as a parameter for this method. Here’s the full signature of the method:


    public ImportProfilePropertiesJobInfo GetImportProfilePropertyJob(Guid jobId);

    Parameters

    jobID

    Type: Guid

    The id of the job for which to get high-level status.

    Return value

    An ImportProfilePropertiesJobStatus object with high level status information about the specified job.

    Here’s a sample code to get status of specific import job using stored identifier.


    // Check status of specific request based on job id received when we queued the job
    Office365Tenant tenant = new Office365Tenant(ctx);
    var job = tenant.GetImportProfilePropertyJob(workItemId);
    ctx.Load(job);
    ctx.ExecuteQuery();

    You can check status of all import jobs by using GetImportProfilePropertyJobs method located in the Office365Tenant object. Here’s the full signature of the method:


    public ImportProfilePropertiesJobStatusCollection GetImportProfilePropertyJobs(); 

    Return value

    An ImportProfilePropertiesJobStatusCollection object which is collection of ImportProfilePropertiesJobStatus objects with high level status information about the specified jobs.

    Here’s a sample code to get status of all import jobs currently saved in the tenant. These could be already processed or queued jobs.


    // Load all import jobs – old and queued ones
    Office365Tenant tenant = new Office365Tenant(ctx);
    var jobs = tenant.GetImportProfilePropertyJobs();
    ctx.Load(jobs);
    ctx.ExecuteQuery();
    foreach (var item in jobs)
    {
    // Check whatever properties needed
    var state = item.State;
    }

    ImportProfilePropertiesJobStatus object returned with the import status information has following properties. 

    JobId - Guid

    The Id of the import job

    State - ImportProfilePropertiesJobState

    An enum that has the following values

    • Unknown - We cannot determine the state of the job
    • Submitted - The job has been submitted to the system
    • Processing - The job is being processed
    • Queued - The job has passed validation and queued for import to UPA
    • Succeeded - The job completed with no error
    • Error - The job completed with error

    SourceUri - Uri

    The URI to the data source file

    Error - ImportProfilePropertiesJobError

    An enum representing the possible error

    • NoError - No error found
    • InternalError - The error caused by a failure in the service
    • DataFileNotExist - The data source file cannot be found
    • DataFileNotInTenant - The data source file does not belong to the same tenant
    • DataFileTooBig - The size of the data file is too big
    • InvalideDataFile - The data source file does not pass the validation. There might be more detailes in the log file
    • ImportCompelteWithErrors - The data has been imported, but there is some error encountered

    ErrorMessage - String

    The eror message

    LogFileUri - Uri

    The Uri to the folder where the logs have been written

    Calling Import API from PowerShell

    You can take advantage of the User Profile Service bulk import API with PowerShell. This means that you’ll use the CSOM code directly in the PowerShell script with the needed parameters. This requires that the updated CSOM redistributable package has been installed on the used computer where the script is executed.

    By using PowerShell, you do not need to specifically combine your code within Visual Studio, which could be more suitable model for some customers depending on the exact business scenarios.

    Sample script

    Here’s a sample PowerShell script which performs the same operation as the code previously in this document. 


    # Get needed information from end user
    $adminUrl = Read-Host -Prompt 'Enter the admin URL of your tenant'
    $userName = Read-Host -Prompt 'Enter your user name'
    $pwd = Read-Host -Prompt 'Enter your password' -AsSecureString
    $importFileUrl = Read-Host -Prompt 'Enter the URL to the file located in your tenant'

    # Get instances to the Office 365 tenant using CSOM
    $uri = New-Object System.Uri -ArgumentList $adminUrl
    $context = New-Object Microsoft.SharePoint.Client.ClientContext($uri)

    $context.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($userName, $pwd)
    $o365 = New-Object Microsoft.Online.SharePoint.TenantManagement.Office365Tenant($context)
    $context.Load($o365)

    # Type of user identifier ["Email", "CloudId", "PrincipalName"] in the User Profile Service
    $userIdType=[Microsoft.Online.SharePoint.TenantManagement.ImportProfilePropertiesUserIdType]::Email

    # Name of user identifier property in the JSON
    $userLookupKey="idName"

    # Create property mapping between on-premises name and O365 property name
    # Notice that we have here 2 custom properties in UPA called 'City' and 'OfficeCode'
    $propertyMap = New-Object -type 'System.Collections.Generic.Dictionary[String,String]'
    $propertyMap.Add("Property1", "City")
    $propertyMap.Add("Property2", "OfficeCode")

    # Call to queue UPA property import
    $workItemId = $o365.QueueImportProfileProperties($userIdType, $userLookupKey, $propertyMap, $importFileUrl);

    # Execute the CSOM command for queuing the import job
    $context.ExecuteQuery();

    # Output unique identifier of the job
    Write-Host "Import job created with following identifier:" $workItemId.Value

    Exception process

    There’s two level of checking of the provided information when this API is used. When you queue up the import process with the CSOM, there will be initial level of checking on the provided values, like confirmation that the provided mapping properties exists in the User Profile Service and that property is not editable by the end user. When queue API is called, only initial level of verification is applied and final verification of the provided information is performed when the import job is actually executed.

    If there’s any exceptions during the actual import job execution, additional logging file with needed details is generated to same document library where the import file was located. Log files for specific import job are being saved to sub folders named using the unique identifier of the specific import job.

    Here’s an example result from one import in the document library where the import file was located. In the below picture you can see two sub folders for two different executions created on the document library where the import file is stored.

    Actual log file is saved in the sub folder and you can download that from the Office 365 for detailed analyses. 

    Common exceptions and description

    Following table contains typical exceptions which you could encounter when you start using the User Profile Service bulk API.

    Exception: Property Names [AboutMe] are editable by user.

    This would be thrown by the CSOM API when you call ExecuteQuery method for submitting the job to your tenant. API will check that all properties currently being mapped for the property mapping are NOT user editable. Exception will point out the property which is cannot be used. In this example case we have tried to map a JSON property to AboutMe property in the User Profile Service properties, but this is not allowed, since AboutMe is user editable property.

    Exception: InvalidProperty - vesaj@contoso.com Property 'AboutMe' is not mapped to any property in the user profile application.

    JSON data file contained a property which has not been mapped to the User Profile Service property in SharePoint Online. This means that source data file is containing properties, which you have not assigned proper mapping. You will need to have mapping definition provided for the QueueImportProfileProperties method for each of the properties in the JSON data object.

    Exception: MissingIdentity - The identity is missing for the user object

    Identity property could not be found from the user object. Most likely cause is that the sourceDataIdProperty attribute is wrongly set for the QueueImportProfileProperties method.Ensure that you have right property in the JSON source file and that your code/script is assigning this attribute accordingly based on the data file content.

    Exception: IdentityNotResolvable unknown@contoso.com User identity cannot be resolved

    Data file contained an identity, which could not be resolved or was not present in the User Profile Service. In this case the user profile with email of unknown@contoso.com could not be located in the User Profile Service.

    Exception: DataFileNotJson - JsonToken EndObject is not valid for closing JsonType Array. Path 'value', line 8, position 10.

    Your import file format is not valid JSON and does not match the excepted format. 

    Questions and answers

    Can I execute the code using app-only/add-in only permissions?

    Yes – this is absolutely possible. You’ll need to register client id and secret to be able to execute the APIs. Since actual import of the file does not occur synchronously with the identity of the caller, this works without any issues.

    This API is updating properties in the User Profile Service, but how would I create those properties in the tenant?

    There’s no remote API to create custom user profile properties programmatically, so this is manual operation which needs to be completed once per given tenant. You can refer to this article for instructions on how to create these custom properties.

    Is this capability available in the on-premises SharePoint?

    This capability is only for SharePoint Online at least for now. In on-premises SharePoint this capability would be useful but not as much needed, since you can modify attribute mapping in the on-premises user profile service application. You could also take advantage of importing user profile attributes using Business Continuity Service (BCS), which gives you capability to connect to any LOB system for getting information imported (SP2013).

    Could I use this API for synchronizing user profile property values from my on-premises SharePoint 2013 or 2016 to SharePoint Online?

    Yes. On-premises SharePoint would be considered as any source system. You’d have to export the user profile values from your on-premises SharePoint to JSON file format and process would be exactly the same as importing values from any other system.

    Can I import string based multi-value properties?

    Yes. You’ll need to adjust the data file accordingly. See details on the data file format on how to define multi-value properties in the JSON objects.

    Can I import taxonomy based multi-value properties?

    No. This is not supported with this API currently.

    What if I define mapping in the code which is not used or have property in the JSON which is not mapped?

    If your code/script defines a mapping which is not used or data file does not contain properties for that mapping, execution will continue without any exceptions and import will be applied based on mapped properties. If you however have property in the JSON file which is not mapped, import process will be aborted and exception details will be provided in the log file for the specific job execution.

    What if I have a need to update custom properties that are beyond the size limitations of this bulk API (i.e. >2 GB file or >500,000 properties)?

    You would need to batch your jobs accordingly by triggering multiple jobs in sequence i.e. finishing one job at a time with the maximum limit on this API. You should expect these high bandwidth imports will take a long time to complete. Also, you should optimize the import jobs only for delta changes in custom profile properties rather than importing full set of values in all jobs.

    Which Azure Active Directory attributes are being sync’d to SharePoint Online user profile by default?

    See following table for the official list of synchronized attributes and their mapping between Azure Active Directory and SharePoint Online User Profile.

    Azure Directory Attribute SharePoint Online Profile Property
    ObjectSidSPS-SavedSID
    msonline-UserPrincipalNameUserName
    msonline-UserPrincipalNameAccountName
    msonline-UserPrincipalNameSPS-ClaimID
    msonline-UserPrincipalNameSPS-UserPrincipalName
    GivenNameFirstName
    snLastName
    ManagerManager
    DisplayNamePreferredName
    telephoneNumberWorkPhone
    proxyAddressesWorkEmail
    proxyAddressesSPS-SIPAddress
    PhysicalDeliveryOfficeNameOffice
    TitleTitle
    TitleSPS-JobTitle
    DepartmentDepartment
    DepartmentSPS-Department
    ObjectGuidADGuid
    WWWHomePagePublicSiteRedirect
    DistinguishedNameSPS-DistinguishedName
    msOnline-ObjectIdmsOnline-ObjectId
    PreferredLanguageSPS-MUILanguages
    msExchHideFromAddressListSPS-HideFromAddressLists
    msExchRecipientTypeDetailsSPS-RecipientTypeDetails
    msonline-groupTypeIsUnifiedGroup
    msOnline-IsPublicIsPublic
    msOnline-ObjectIdmsOnline-ObjectId
    msOnline-UserTypeSPS-UserType
    GroupTypeGroupType
    SPO-IsSharePointOnlineObject    SPO-IsSPO




    “Sharing is caring”


    Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 8th of April 2016


    Office Dev PnP Web Cast – Introducing PnP JavaScript Special Interest Group

    $
    0
    0

    In this PnP Web Cast we concentrated on the Office Developer Patterns and Practices (PnP) Special Interest Group (SIG) for JavaScript. This is relatively new SIG and virtual team in the PnP initiative which concentrates on JavaScript techniques. Objective of this work is to produce a modular, flexible and developer focused JavaScript library for simplifying interactions with SharePoint. This development is done with modern web tooling, including TypeScript, Node.js, Gulp and other similar tooling. This means that secondary objective for this work is to introduce this tooling also for classic SharePoint developers.

    Idea and concept for the PnP Special Interest Groups was introduced in February 2016. You can read more details around the concept from following blog post at dev.office.com: Introducing Office Dev PnP Office Hours and Special Interest Groups

    Presentation covers following topics

    • Mission statement and goals for the Special Interest Group (SIG)
    • Initiative or SIG introduction
    • SIG activities and how the team works together

    In demo section Patrick covers following topics

    • Location of the assets and the JavaScript Core component in GitHub
    • Existing guidance and input
    • How to get started with Visual Studio Code, TypeScript and Node.js for the development of this library

    Web cast presenters: Patrick RodgersVesa Juvonen

    Patrick works as a Senior Program Manager at Microsoft and is also a Office 365 Dev PnP Core team member. 

    Presentation used in this web cast is available from http://docs.com/OfficeDevPnP.

    Video at Channel 9.

    Addition resources

    See following resources around the covered topics

    Thanks for your interest on the PnP initiative.

    What is Office 365 Developer Patterns and Practices (PnP) web cast series?

    Office 365 Developer Patterns and Practices (PnP) web cast series cover different patterns, practices and topics around development with Office 365 and SharePoint. Majority of the topics are valid for the Office 365 and SharePoint on-premises. Our objective is to release new around 30-45 minute long web cast each Monday with few slides and live demo on the covered topic. All web casts are published at the PnP Channel 9 video blog with additional references on the existing materials.

    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. Latest activities and future plans are covered in our monthly community calls which are open for anyone from the community. Download invite from http://aka.ms/OfficeDevPnPCall.

    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.

    If you have any questions, comments or feedback around PnP program or this blog post, please use the PnP Yammer group at http://aka.ms/OfficeDevPnPYammer.

    “Sharing is caring”


    Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 11th of April 2016

    Office 365 Developer Patterns and Practices – April 2016 release

    $
    0
    0

    Office 365 Developer Patterns and Practices (PnP) April 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 team members. 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 or a referenced PnP Web Cast.

    Some key statistics around PnP program from April 2016 release

    Main resources around PnP program

    April 2016 monthly community call

    Agenda for the Tuesday 12th of April community call at 8 AM PST / 5 PM CET:

    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 4.000 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.

    Spring 2016 PnP community survey results

    We conducated short community survey during March 2016 for getting additional input around the future direction of the PnP and to collect your feedback around the different aspects of PnP. Here's some high level results from the survey. We'll also cover the results more detailed in our monthly community call on 12th of April more detailed.

    PnP Office Hours and Special Interest Group (SIGs) for JavaScript development

    We started bi-weekly PnP Office Hours during February for addressing questions on how to contribute towards PnP. These are open discussions around what the Core team is doing and where the community members can assist. This time is also open for discussing aroung design decisions, challenges and possible issues in the PnP deliverables. You can download invite for the bi-weekly invite from following location. Recording of these Office Hours are shared in the PnP Yammer group within 24 hours after the recording was done.

    Due constantly growing interest on the PnP program, we also are piloting Special Interest Groups (PnP SIGs), which are more targeted on specicic topic, like SharePoint Client Side (JavaScript) development or other areas. We are currently piloting this model with SIG for Client Side development, which have had great interest. Client Side Development SIG has already started building generalized library to be used with JavaScript development using TypeScript and with modern development practices. If you're interested of joinign this effort, please use following resources.

    Objective of this JavaScript SIG work is to produce a modular, flexible and developer focused JavaScript library for simplifying interactions with SharePoint. This development is done with modern web tooling, including TypeScript, Node.js, Gulp and other similar tooling. This means that secondary objective for this work is to introduce this tooling also for classic SharePoint developers.

    Please read more around PnP Office Hours and Special Interest Groups (SIGs) from following blog post or check the web cast around the JavaScript SIG for the specific details.

    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.

    New PnP Core Component training videos

    As part of the April 2016 release we have also released a small training package with videos and presentations around the PnP Core Component (.NET). PnP Core Component is released as a Nuget package and it simplifies development with managed code. Typically PnP Core COmponent is used in the provider hosted add-ins/apps. Other typical use cases are Azure WebJobs or scheduled tasks in the SharePoint on-premises. PnP Core Component has different versions for SharePoint Online and for on-premises. Please see following videos and materials for additional context.

    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-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-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 and transformation tooling from farm solutions to add-in model.
    • 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

    Latest changes

    Provisioning Engine

    The first version of the PnP remote provisioning engine was released with the April 2015 release. For the April 2016 release we have continued to add new supported capabilities and made significant improvements from stability perspective for both Office 365 and on-premises. This list contains the main updates that have been added in the April release:

    • Significant overall quality and performance improvements
    • Added support for Cross-Tenant provisioning of taxonomy fields (extract-import cross tenants)
    • Included Extensibility Handler support also for template extraction time
    • Parse subfolders when exporting master pages and page layouts
    • Added support for the EnableModeration property on extracting list instances
    • Parse subfolders when exporting masterpages and pagelayouts
    • Excluded Orphaned Terms termset from extraction
    • Improved support and bug fixes with publishing sites and pages
    • Bug fixes on the welcome page extraction, theme handling, workflow handling and custom action handling
    • Updated base templates for the SPO and 2016 - used in delta handling

    We are planning to release new schema version and some new capabilities as part of the May 2016 release. Please join to monthly community call for discussing the planned changes.

    PnP library

    We are looking to do significant consolidation on the SharePoint samples during upcomign months, which will help the community more easily find the general reference API samples for SharePoont. Target is to significantly grow also the non-SharePoint areas around Microsoft Graph, Office 365 API and also alternative technologies.

    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)
      • General bug fixing, performance and quality improvements
      • Added AddField extension methods on ContentType
      • Added support for multi-value taxonomy fields in TaxonomyExtensions
      • Add ClientTag entry for PnP Core Component usage - Http headers includes PnP Core version
      • Automated documentation updated to md file
      • Removal of deprecated methods
      • Build and test automation improvements with unit test changes
      • Preparations for SP2016 specific version - coming in May (sorry for the delay)
      • Both PnP Core Nuget packages (cloud and on-premises) have been also updated accordingly.
    • New solution Governance.ExternalSharing which can be used embower site owner and site collection administrators to change external sharing settings. Display's banner in the site, if it's externally shared.
    • New solution Governance.ChangeOwnership which can be used for changing the Site Owner of a site collection in SharePoint Online by the current site owner or any site collection administrator. Out of the box in SharePoint Online, the Site Owner can only be changed in SharePoint Admin Center or PowerShell which requires the user to be part of SharePoint Online administrators group. This application gives the privilege for a Site Owner and Site Collection administrators to change the site collection ownership from a site collection itself.
    • New solution Governance.AddInSecurity which can be used to encrypt client id and secrets for the add-ins in secure ways.
    • New sample MicrosoftGraph.Cordova.Mobile which illustrates how to use the Microsoft Graph API to retrieve data from Office 365 using the REST API and OData.
    • New sample MicrosoftGraph.Office.QuickContacts which illustrates how you could use the Microsoft Graph to quickly find contacts on mobile devices.
    • New sample MicrosoftGraph.iOS.Objective-C.SendMail which showcases showcases the Microsoft Graph SDK for iOS in a simple iOS application using the Objective-C language.
    • New sample MicrosoftGraph.iOS.Swift.SendMail which showcases the Microsoft Graph SDK for iOS in a simple iOS application using the new Swift language.
    • Updated Provisioning.UX.App provisioning solution with small polishing changes.
    • Updated UserProfile.BatchUpdate.API sample to match released blog post.
    • Updated PnP-PowerShell Commands with new CommandLets and with few fixes
      • Overall quality improvements and bug fixes
      • Additional testing included
      • Updated documentation for CmdLets
    • Preview version of PnP-JS-Core JavaScript library which is released also as a NPM package
    • Updates to the PnP Partner Pack
      • General changes in the current implementation

    PnP Guidance articles

    The PnP Guidance repository contains guidance articles which are mostly being published atMSDN 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 there was updates on the both MSDN and GitHub artciles to ensure that both sides are in sync and there's matching page in the GitHub. Target is to update the MSDN based on community contributions.

    See MSDN artciles from the PnP MSDN section at http://aka.ms/OfficeDevPnPMSDN.

    PnP Guidance videos

    We did release one 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.

    Key contributors for the April 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!

    Here’s the list of Microsoft people who have been closely involved on the PnP work during last month.

    Latest statistics

    Here's some statistics from the PnP, PnP PowerShell and PnP Sites Core (core component) repository. 

    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.

    Next steps

    • April 2016 monthly community call is on 12th of April at 8 AM PST / 5 PM CET for latest release details with demos - Download invite with detailed schedule for your time zone fromhttp://aka.ms/OfficeDevPnPCall.
    • Following master merge will happen on 6th of May and May community call is on 10th of May 2016



    “Sharing is caring”


    Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 12th of April 2016

    Using correct Client Side Object Model (CSOM) version for SharePoint customizations

    $
    0
    0

    When you are developing your customizations using managed code and with Client Side Object Model (CSOM), it's important to understand that CSOM version to be used is dependent on your target environment. Since this versioning is not clear in the currently available documentation and we are getting questions around this constantly, we wanted to write this short blog post explaining how the CSOM versioning works and what version you should be using. 

    CSOM version is dependent on the server side version of the SharePoint. This means that if you are using too new CSOM version, which is newer than SharePoint server side deployment in your environment, you can face challenges. Issues or exceptions are visible if you are trying to use method or a property in newer CSOM version, which is not yet exposed in the server side. This will result typically somewhat following kind of exception message:


    An unhandled exception of type 'Microsoft.SharePoint.Client.ServerException' occurred in Microsoft.SharePoint.Client.Runtime.dll

    Additional information: Cannot find stub for type with id "{c7e15a67-857e-454b-8913-e1e42fa52ab1}".
    The specified server may not support APIs used in this operation.
    An unhandled exception of type 'Microsoft.SharePoint.Client.ServerException' occurred in Microsoft.SharePoint.Client.Runtime.dll

    Unique identifier (GUID) in this exception is referring to specific missing property or method, which is not yet exposed in the server side for the CSOM to be used. So basically this indicates that you are version mismatch between the CSOM version and the server side SharePoint. 

    How do CSOM versioning work?

    There are two main deployment or versioning models for CSOM - one for on-premises (SP2013 and SP2016) and one for SharePoint Online. This versioning model and relationship on available properties and methods is demonstrated in the following picture.

    So what does it mean in practice? - Let's go through the different models and recommended CSOM version between on-premises and SharePoint Online.

    On-premises

    We do not currently release Nuget Gallery packages for SharePoint on-premises, so you will either need to use CSOM versions available from Microsoft Download center or alternatively using CSOM assemblies available from the ISAPI folder at the SharePoint server. We are looking into releasing on-premises CSOM versions of the assemblies also using Nuget Gallery in future, so that you can align your code to any specific CU.

    SharePoint 2016 has been just released, so there's only one CSOM version available for it. You can find the right assemblies from Microsoft Download Center from following location:

    SharePoint 2013 has also SDK setup available from Microsoft Download center, which aligns with the April 2015 CU for SharePoint 2013. This means that if you are using older SharePoint version in your server side, you can potentially run into issues. 

    It's important to realize that if you will need to take advantage of some properties or methods in on-premises which are newer than the released SDKs, you will need to reference assemblies available directly from the ISAPI folder. When you will do this, you will have a dependency on than particular SharePoint server side version.

    In general, when you do development towards on-premises, you will need to decide a baseline CU requirement, which your on-premises customization will support. We do understand that this is not really optimal, but there's currently really no other options due the versioning model for the on-premises. You can also potentially build multiple different versions of your product based on the target environment. This model is for example used with Office 365 Dev PnP Core Component, where which uses only one code base, but can be compiled towards numerous target environments. 

    SharePoint Online

    Since SharePoint Online server side version is controlled by Microsoft, we can also control the recommended and released CSOM package for SharePoint Online. This means that we can deploy always a new version of the SharePoint Online CSOM when Office 365 tenants worldwide have been properly updated with the matching server side version. There's two methods of getting access on the SharePoint Online CSOM:

    We recommend usage of the Nuget package, which has numerous advantages and is updated much more frequently than the downloadable SDK. If you want to take advantage of the latest CSOM capabilities for SharePoint Online, you should be using the Nuget package and check the latest release notes around the new versions from the dev.office.com blog

    Questions and Answers

    I have tested SPO CSOM to on-premises and it works, why is that?

    It works fine unless you will use properties or methods which are not exposed in the on-premises. If you can guarantee that your code does not touch properties which have not been enabled in on-premises version, you can theoretically use SharePoint Online CSOM with on-premises as well. We do however recommend on using right CSOM version for specific server side version to avoid issues. 

    There was some CSOM properties in the SPO CSOM Nuget, which did not work even though they were included - why?

    Some of the new capabilities which are included in the CSOM assemblies are not available in the tenants until those are specifically enabled. Good example of this kind of capability was Bulk UPA Custom Profile Properties Update API, which was already included in the December 2015 release of the SPO CSOM nuget package, but the server side capability was enabled April 2016.

    SharePoint 2016 was said to use same bits as SharePoint Online, why CSOM is different?

    SharePoint 2016 is based on the same code base as SharePoint Online, but to a different fork. There are numerous different capabilities which are only relevant or available in general in the SharePoint Online. 

    Why is some properties and methods only added to SharePoint Online CSOM and not to on-premises?

    In some cases, this is due the fact that capability only makes sense for SharePoint Online and in some cases we are just updating the SharePoint Online faster than on-premises. On-premises CSOM and related server side changes are much harder to test, due the possible environmental differences between individual deployments. Our target is to get all relevant CSOM changes also back-ported to the on-premises CSOM versions, but this is not always guaranteed or possible due resource constraints. 

    Why can't we just release one set of APIs and use that cross all environments - Having three different CSOM packages is confusing?

    This is understandable comment, but the requirement to have currently three different versions of CSOM API is really coming from the fact that we have three different main server side versions and if we want to expose also new APIs with newer versions, we will need to have a support for that in the CSOM side. Obviously this would not be an issues if we would only expose RESTful APIs from SharePoint, but based on community input, usage of the CSOM is easier and more productive, especially for the developers with SharePoint server side development background. 

    If you have any additional questions, comments or feedback around information in this blog post, please use the Office Dev Patterns and Practices Yammer group at http://aka.ms/OfficeDevPnPYammer.

    “Sharing is caring”


    Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 13th of April 2016

    Office Dev PnP Web Cast – SharePoint Client Side Object Model versioning for your customizations

    $
    0
    0

    In this PnP Web Cast we concentrated on SharePoint Client Side Object Model (CSOM) versioning and how you can take the different SharePoint target versions into account in your customization. With the release of SharePoint 2016, we have now 3 different CSOM versions and handling this could be a challenge within your customizations. Each of these versions have small differences and you should use correct version dependent on your target environments. This will however cause some challenges on how to manage your builds and Visual Studio project configuration, so that you can still use one code base regardless of the target environment. 

    With small adjustments in your Visual Studio solution with preprocessor directives, you can however actually use the exact same code cross all of the environments. This will give you opportunities on building for example automated daily builds for all of the target environments from same Visual Studio solution.

    Office Dev PnP initiative have been taken advantage of this design in the Office Dev PnP Core Component, so that we can easily automate daily integration testing cross SharePoint Online, SharePoint 2016 and SharePoint 2013. 

    Presentation covers following topics:

    • Which CSOM version I should be using for which SharePoint environment?
    • How the versioning and distribution works for the different environment?
    • How to make my app/add-in to work across different environments?
    • Recommendations around CSOM usage in Visual Studio and why you should not necessarily use available CSOM SDKs directly in enterprise development scenarios

    Demo section concentrates on showing following topics:

    • Demonstration of dynamic and automated switching of CSOM references in Visual Studio based on your target environment
    • What changes are required to Visual Studio project to enable dynamic switching 
    • Recommendations around CSOM assembly installation and usage in your development environment

    Web cast presenters: Bert JansenVesa Juvonen

    Presentation used in this web cast is available from http://docs.com/OfficeDevPnP.

    Video at Channel 9.

    Additional resources

    See following resources around the covered topics

    Here's also links to specific CSOM distributables available for you, depending on your target environment

    What is Office 365 Developer Patterns and Practices (PnP) web cast series?

    Office 365 Developer Patterns and Practices (PnP) web cast series cover different patterns, practices and topics around development with Office 365 and SharePoint. Majority of the topics are valid for the Office 365 and SharePoint on-premises. Our objective is to release new around 30-45 minute long web cast each Monday with few slides and live demo on the covered topic. All web casts are published at the PnP Channel 9 video blog with additional references on the existing materials.

    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. Latest activities and future plans are covered in our monthly community calls which are open for anyone from the community. Download invite from http://aka.ms/OfficeDevPnPCall.

    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.

    If you have any questions, comments or feedback around PnP program or this blog post, please use the PnP Yammer group at http://aka.ms/OfficeDevPnPYammer.

    “Sharing is caring”


    Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 18th of April 2016

    Office Dev PnP Web Cast – JavaScript and Microsoft Graph (Quick Contacts Sample)

    $
    0
    0

    In this PnP Web Cast we concentrated on Quick Contacts PnP sample, which was originally released as part of the April 2016 monthly release. This sample shows how you could use the Microsoft Graph to quickly find contacts on mobile devices. Actual implementation is done using AngularJS and is using Adal.js to connect to Microsoft Graph APIs.

    Presentation covers following topics:

    • Development stack - Design and Application development
    • Development process
    • Design principles and style guide

    Demo section concentrates on showing following topics:

    • Demonstration of the Quick Contacts sample in browser
    • Look on the actual implementation of the sample
    • Discussion around the development process and used technologies

    Web cast presenters: Stefan Bauer, Waldek MastykarzVesa Juvonen

    Stefan works as an independent consultant and Waldek works in Rencore AB

    Presentation used in this web cast is available from http://docs.com/OfficeDevPnP.

    Video at Channel 9.

    Additional resources

    See following resources around the covered topics

     

    What is Office 365 Developer Patterns and Practices (PnP) web cast series?

    Office 365 Developer Patterns and Practices (PnP) web cast series covers different patterns, practices and topics around development with Office 365 and SharePoint. Majority of the topics are valid for the Office 365 and SharePoint on-premises. Our objective is to release new around 30-45 minute long web cast each Monday with few slides and live demo on the covered topic. All web casts are published at the PnP Channel 9 video blog with additional references on the existing materials.

    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 in our GitHub repositories under dev branch and each month there will be a master merge (monthly release) with more comprehensive testing and communications. Latest activities and future plans are covered in our monthly community calls which are open for anyone from the community. Download invite from http://aka.ms/OfficeDevPnPCall.

    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.

    If you have any questions, comments or feedback around PnP program or this blog post, please use the PnP Yammer group at http://aka.ms/OfficeDevPnPYammer.

    “Sharing is caring”


    Vesa Juvonen, Senior Program Manager, Office 365, Microsoft - 25th of April 2016

    Viewing all 429 articles
    Browse latest View live