Don’t miss Connect(); 2015 Nov 18-19th


This years Connect(); 2015 event will be streamed online via Channel 9 like last year. This year, expect to see our Office 365 dev news to take more of a stage than ever before. Sonya Koptyev from our team has been working really hard on this for us. Treat this is our way of communicating things we are releasing to general availability and things we are releasing into preview…much like we’ve done at Build 2015 and TechEd Europe 2014 before that.

There will be plenty of amazing speakers like Scott Gu, Scott Hanselman, Brian Harry and Anders Hejlsberg.

The keynote starts at 10am PDT with Scott Gu and I’d highly recommend watching this along with Brian and Scott Hanselman’s too.

Also do not forget that we have 10+ on-demand sessions that will go live on 19th that you should definitely take a look at.

SharePoint Saturday Munich keynote slides

Thanks to everyone for attending my keynote this morning. I’ve shared the slide deck from this morning for those that wanted to grab some of the slides.

One URL to rule them ALL

Snack videos to demonstrate power of Office 365 dev model

I have started a series of YouTube videos that demonstrate for an end user the power of Office add-ins and SharePoint add-ins.

It is a great way for you to understand how you can increase your productivity inside our products through add-ins in the Office Store (

I’d love any comments on this post of add-ins you’ve found increase your productivity. I’ll continue to record short 3-5 minute videos to showcase this!

So what are you waiting for…check them all out at!

Apple Music fails to impress me over Spotify

As someone with an iPhone, iPad, Apple Watch and MacBook Pro in my arsenal I figured I’d give the Apple Music ecosystem a go as it was FREE for 3 months. Since Spotify was announced in Preview I have been a Pro subscriber. I installed Apple Music on my iPhone & iPad and installed iTunes on my OSX and Windows 10 machines.

My main take away is that there is no way that anyone at Apple is consuming music the same way I am. Even if you stick to OSX and iOS, the experience across devices is disconnected. Here’s why…


I have yet to come across a song I couldn’t find on iTunes, much the same experience on Spotify too. I’m pretty main stream with my music though although I do span lots of genres. The related artists and albums doesn’t seem to be as good as Spotify in my opinion.

My Music

“My Music” does seem to come across on each of these instances of the music player. You can select a song or album and “add to music”.

On iTunes on Windows you can do it three or four times in the UI before the option goes away and its reflected in your “My Music” window. It doesn’t look like Apple are putting any effect into the Windows player, no surprises there.


But if I “heart” a song..which is what trains the “For You” section…it doesn’t show on other instances. I use the “heart”/fav concept to understand the music I like when I’m in discovery mode listening to radio stations in the player.


The Beats1 radio channel everytime I’ve listened to it is just not my tastes. It’s quite often a lot of R&B and seems to be very similar to what it was when it was originally in the Beats Music service.

The Radio feature from Artist or Song isn’t bad, but again, the algorithm seems to stick to that Artist a lot and not broader on the genre.


Going to the artists page and seeing their top songs…if can play the top song but it doesn’t automatically play the second top song. There is no buttons to just add this whole top 20 songs in my queue.


I can play Apple Music streaming to my Apple TV as long as I push it from my iTunes on OSX or Apple Music on iOS. I cannot use my SONOS or Denon HEOS wifi speakers to stream music directly like I can from Spotify. I’m guessing this is coming.


One thing i did like about Spotify was the ability for others to share their playlists which I could then follow and listen to myself. This doesn’t seem possible right now either.

Back to Spotify for me!

I’ll be speaking at European SharePoint conference, Stockholm

I’m off to Stockholm in the beginning of November to speak on Office add-ins and also run a hackathon. I really look forward to meeting all the attendees and speakers and exploring Stockholm!

boom_programme_announced_sliderThe hackathon is going to be a lot of fun with great prizes for the winning team! If you are attending the conference, please enter on I’m really excited to see what people build and present to the judges at this event! Our team have run a few of these and its amazing how people leverage their existing web skills and the magic of Office development to build solutions.



Review: WP BackitUp for WordPress

I was originally hosting my WordPress blog on Azure web sites using ClearDB to host the MySQL instance. I found that as my blog got more visitors I was getting database connection issues where I was going over the amount of connections for the subscription I was on. I wasn’t willing to pay $50 a month for the next subscription up. Turning on all the caching wasn’t helping me.

I had two decisions to make…where to host my blog and how to get it there.

After recommendations from a few friends I chose For $7.95 a month I got the full WordPress as a service offering. I honestly don’t have time to learn how to host WordPress in a virtual machine on Azure and wanted something as a SaaS I didn’t have to worry about. So far the service has been amazing and the site is flying due to the optimizations they have done to the web site.

I had zero idea of how to move my data out of Azure & ClearDB and into SiteGroud. A friend recommend I check out WP BackItUp. It was a ridiculously easy experience. I just installed the plug-in on both environments. Backup on one, then uploaded the files to the other and restored. It handled all the plug-ins, the configuration, all my content…everything.

You can back up for free, but its $79 license to be able to restore a backup. If you are doing anything with WordPress I’d highly recommend checking this out.

Unity Connect online event this week – keynote speaker

11424443_10153311598413955_6565177490887367963_nThe IT Unity guys have been pushing hard to build a community online since launching last year with IT Pro, Developer and End User Content. Dan Holme is a very close friend of mine and has rounded up a great team of folks running the developer content in Scot Hillier, Andrew Connell and Todd Baginski.

They asked me to be part of the Keynote on Wednesday where I’ll have a candid discussion with Scot on the extensibility of Office 365. You can see all the IT Unity sessions here on their site.

There is a laundry list of amazing speakers to watch over a series of days and I’ll highly recommend checking it out. As a third party conference, you’ll get  a lot deeper into real world scenarios and experiences from the field.

Office 365 ‘App Model’ rename cheat sheet

There have been a few threads on the different social networks around the rename of the “App Model” to “Add-in Model” for Office 365.

There were actually quite a few reasons that we pushed this rename through and it wasn’t something that was decided quickly.
The major one was that with our multi-platform support of our Office client across the Windows desktop, Mac desktop, browser, iOS, Android and Windows 10 environments . Most of these environments call our Office client “apps”, and so having “apps” within “apps” was causing confusion as we shipped the integration with the iPad.
We also had feedback that “apps” weren’t working in the enterprise space for our ISVs who were building something that was valued at much more than a ~$5 app.
Users get the notion of add-ins for SharePoint Sites and add-ins for Office clients. We needed to be consistent here with the name change across both for the Office Store perspective.
This also allowed us to highlight the benefits to developers of learning our add-in model once and being able to build for both too. This is something you couldn’t do if you learnt VBA or Farm Solutions for instance.


As someone in marketing, I appreciate the concern people have around getting this right when they speak to customers. Currently I appreciate this could be hard because of the transitional state we are in. There are many areas we need to focus on: product user interfaces, documentation, on-demand videos and a bunch of other stuff.

In the meantime, I wanted to post a quick list to make it clear on what the new names we should all be using are for Apps for SharePoint and Apps for Office.

Apps for SharePoint SharePoint Add-ins
App Web Add-in Web
App Part Add-in Part
SharePoint App Model SharePoint Add-in Model
SharePoint Hosted App SharePoint Hosted Add-in
SharePoint Provider Hosted App SharePoint Provider Hosted Add-in
Apps for Office Office Add-ins
Office App Model Office Add-in Model
Apps for Office in Outlook OutlookAdd-ins
Apps for Office in Excel Excel Add-ins
Apps for Office in PowerPoint PowerPointAdd-ins
Apps for Office in Word Word Add-ins

There have also been questions around the App Launcher. This is staying the same. This is because if you click on the App Launcher you’ll see all the first party apps like Word Online, Excel Online and PowerPoint Online for instance. These are also what we call Office client apps. You can have third party web applications in there also such as and where you’ve logged into those SaaS web applications with your Office 365 credentials.

There has also been concern that Office Add-ins have existed for some time. We are differentiating by the different types using this approach:

  • VSTO Office Add-ins
  • COM Office Add-ins
  • Web Office Add-ins

We really do appreciate your patience in this and please feel free to leave any comments on this post.

Office 365 Dev Slack channel

We are trying something new in our team to communicate with our Office 365 Developer community. Slack has grown like wild fire in many developer shops as a way of real-time communication without the 140 character limit 😉

It’ll be a great little experiment with this platform and hopefully benefit people in sharing information and getting questions answered. I’m really liking the mobile app to keep up to date and the web site is super fast.

If you are interested in joining…go over to  and sign up!

If you have not heard of slack before…check out their intro and watch the youtube video below.


Office 365 Developer Podcast 48 Preview with Eric Shupps

Good on Eric Shupps for doing a quick video for us. The show coming out Thursday is a great discussion on SharePoint Add-ins in the enterprise. We really pull out the pains he feels out there and discuss them at depth.

Until Thursday, please check out our other shows at

Download here

Can’t view – download here

Yammer delegate permissions preview available in Azure AD applications


At both Build 2015 and Ignite 2015, we talked a lot about how the Office 365 APIs were expanding outside of just SharePoint and Exchange. I noticed that in my production Azure Management Portal now when I create an application that the Yammer delegate permissions is now available in preview. This means with the same Azure AD auth flow you can read and write to the Yammer RESTful API.

yammerThis is really exciting because it means that if you build applications (mobile or web) that leverage Azure AD you can now call Exchange (Mail, Calendar, Contacts), OneDrive for Business, SharePoint and Yammer…and also the Office 365 Unified API endpoint that we announced which includes Office 365 Groups (Preview).

You may have also noticed, if you are using Azure AD in your web application and seeing it show up in the My Apps page or pinned to your App Launcher…you’ll now see an Office Store icon too. So we are promoting the store much more widely now based on feedback.



Check out the Unified API presentation that Yina Arenas from engineering did at Ignite 2015 here

Top 5 tips for presenting at hackathons

I landed in Chicago yesterday after a week in San Francisco at Build 2015 where we announced some great new developer features for Office 365 development. You can also listen to our podcast from this week that covers it in detail. I’ve spent the weekend at a hackathon run by Andrew Clark and his team called There are 8 teams who were coding throughout the night who will be showing their solutions to judges at 5pm today. They were presented 5 problems to select from to build a solution on top of. The majority of them have spun up free Azure and Office 365 trials to leverage the technology to speed up building their solutions.

As a judge at many of these hackathons we’ve been running I thought I’d share top 5 tips for successful presentations during hackathons.

1. Know your judges

At each hackathon the judges will typically be known before hand and will have interests in particular areas of technology. In general though, they will all be excited about innovative ideas on tech regardless.
If they are representing certain technologies from the companies they are from, naturally using their stuff is going to definitely rub them up the right way 😉 Check out the judges at for some hints.

2. Tell the story

The pitch to the judges is really important. You don’t need to explain the problem as the judges will be aware of that, but what is key is how your solution helps solve the problem.
If other teams are doing the same problem, you’ll need to be clear on what the key features are that differentiates your solution. This will help the judges in picking winners.

3. Explain the journey as a team

The judges will have likely done a hackathon in the past. Introduce the backgrounds of the team members and what their skill sets are. Typically it’ll be a mixed bag of skills and often showing what you’ve learnt during the hack will impress the judges.
For instance, at a previous hack, the teams had NEVER used Outlook add-ins before and had built a whole solution in Outlook to translate the bodies of the emails within 1 hour.

4. You only have 24’ish hours

The important part to remember is…you can have the sexiest back end APIs and database schemas…but if the user interface doesn’t tell the user experience you will not WOW the judges. Prioritize on the user experience and add as much polish to this as possible.

5. Its a hack…not a product

The demo doesn’t have to be concrete…you’ve had 24 hours, so if there is a bunch of band aids in the background to get things working…so be it. You’ve seen enough keynotes to realize that a lot of it is smokes and mirrors, so judges won’t expect polish.

I look forward to seeing what people have built in 24 hours!

New SharePoint CSOM version released for Office 365

[Cross posted from my mate Vesa]

We are happy to announced availability of new SharePoint CSOM package version for the Office 365. This release is done now using a NuGet package release. You can find the latest CSOM package for the cloud from the NuGet gallery with an id of ‘Microsoft.SharePointOnline.CSOM’. We will also update the redistributable package in upcoming weeks, but you can already right now get access on the updated CSOM for your solutions.

Notice that the version for these assemblies is 16.1.3912.1204, so that they do not overlap with the redistributable package, which will continue using 16.0.x.x style versioning. This way updated assemblies added to the NuGet packages will be used by your applications regardless if you had also installed the redistributable package. We are also planning push more frequent updates with the NuGet package in the future. When you use the NuGet package, you will always get the latest versions for you in your app. We have also included these assemblies to the assembly folder of Office 365 Developer Patterns and Practices, where you can always find latest CSOM assemblies for on-premises and cloud (currently in Dev branch and will be merged to master in May release).  We do however recommend using the nuget packages, rather than referencing these assemblies where possible.

Key updates with the assemblies

Here’s the key changes in the released assemblies. Main changes are related on level up with the on-premises CSOM which has been gradually updated during previous CUs.

  • Manage regional settings of a site
  • Manage language settings of a site
  • Manage auditing settings of a site
  • Control advance settings for document sets
  • Support for upcoming enhanced migration APIs
  • Control sandbox solution settings in site collection level
  • Secondary contact in site collection level
  • Sharing settings

We have not yet updated our Office 365 Developer Patterns and Practices samples, but the API usage is demonstrated with the samples which were originally developed for on-premises. These will be updated with the latest cloud CSOM in upcoming days now that the updated CSOM assemblies are available for broader usage.


How to get started with the nugget package?

Let’s do this step by step, so that there’s no doubts.

1. Start up Visual studio and Choose the project type you want to use. In below example we will use console application.


2. Right click project properties and choose Manage NuGet Packages…


3. Search for “SharePoint Online Client Side Object Model” or “Microsoft.SharePointOnline.CSOM”

  • Notice the Created by and version information for the package.


4. Click Install for the package so that it will be installed on the VS project.

  • You can alternatively open up Nuget Package Manager and execute following line: “Install-Package Microsoft.SharePointOnline.CSOM -Version 16.1.3912.1204

5. Verify that the references of the project has been changed


6. You are ready to get started with your code. Here’s just simple code snippet to get access to Office 365, which you could add to your console application to test that everything works accordingly. You will obviously have to change the connectivity details accordingly to align with your own tenant.


Full list of changes in this release

Here’s the full list of changes in different assemblies compared to the previously released CSOM version. We will release samples in the Office 365 Developer Patterns and Practices for these gradually and are absolutely also open for contributions from the field for samples, which demonstrate these new APIs.

Those members which have existed before, but have been now changed are marked with *-character. These are the regional settings related properties which now support also updating those properties in site. We also do absolutely understand that this is not the best method or format to share the latest changes and we are working internally for better process with future releases. We did not also want to delay release notes on this, since we know that many from community have been waiting for these new APIs.


Here’s list of properties and new classes from the Microsoft.SharePoint.Client assembly.

  • public property Microsoft.SharePoint.ApplicationPages. ClientPickerQuery.ClientPeoplePickerQueryParameters.AllowOnlyEmailAddresses
  • public method Microsoft.SharePoint.Client.AppCatalog.GetAppDetails()
  • public method Microsoft.SharePoint.Client.AppCatalog.GetAppInstance()
  • public method Microsoft.SharePoint.Client.AppCatalog.GetAppPermissionDescriptions()
  • public property Microsoft.SharePoint.Client.AppInstance.ProductId


  • public class Microsoft.SharePoint.Client.Audit
  • public enum Microsoft.SharePoint.Client.AuditMaskType
  • public class Microsoft.SharePoint.Client.AuditPropertyNames


  • public property Microsoft.SharePoint.Client.CreatablesInfo.CanCreateFolders
  • public property Microsoft.SharePoint.Client.CreatablesInfo.CanUploadFiles
  • public class Microsoft.SharePoint.Client.DlpPolicyTip


  • public method Microsoft.SharePoint.Client.File.ExecuteCobaltRequest
  • public method Microsoft.SharePoint.Client.File.GetImagePreviewUrl
  • public property Microsoft.SharePoint.Client.Folder.Exists
  • public property Microsoft.SharePoint.Client.Folder.IsWOPIEnabled
  • public property Microsoft.SharePoint.Client.Folder.ProgID


  • public class Microsoft.SharePoint.Client.IngestionTaskKey


  • public property Microsoft.SharePoint.Client.List.CrawlNonDefaultViews
  • public method Microsoft.SharePoint.Client.List.CreateDocumentFromTemplateStream
  • public property Microsoft.SharePoint.Client.List.FileSavePostProcessingEnabled
  • public method Microsoft.SharePoint.Client.List.GetSpecialFolderUrl
  • public method Microsoft.SharePoint.Client.List.GetWebDavUrl
  • public property Microsoft.SharePoint.Client.List.MajorVersionLimit
  • public property Microsoft.SharePoint.Client.List.MajorWithMinorVersionsLimit
  • public property Microsoft.SharePoint.Client.List.ParserDisabled
  • public property Microsoft.SharePoint.Client.ListItem.Client_Title
  • public property Microsoft.SharePoint.Client.ListItem.GetDlpPolicyTip
  • public method Microsoft.SharePoint.Client.ListItem.OverridePolicyTip


  • public property Microsoft.SharePoint.Client.MountedFolderInfo.HasEditPermission
  • public property Microsoft.SharePoint.Client.MountedFolderInfo.ItemId
  • public property Microsoft.SharePoint.Client.MountedFolderInfo.ListTemplateType
  • public property Microsoft.SharePoint.Client.MountedFolderInfo.ListViewUrl
  • public property Microsoft.SharePoint.Client.MountedFolderInfo.WebUrl
  • public class Microsoft.SharePoint.Client.MoveCopyUtil


  • public property Microsoft.SharePoint.Client.ObjectSharingInformation.CanBeShared
  • public property Microsoft.SharePoint.Client.ObjectSharingInformation.CanBeUnshared
  • public method Microsoft.SharePoint.Client. ObjectSharingInformation.CanCurrentUserShareRemote
  • public method Microsoft.SharePoint.Client. ObjectSharingInformation.GetObjectSharingInformationByUrl
  • public property Microsoft.SharePoint.Client. ObjectSharingInformation.SharedWithUsersCollection
  • public property Microsoft.SharePoint.Client. ObjectSharingInformationUser.IsDomainGroup
  • public class Microsoft.SharePoint.Client.ObjectSharingInformationUserCollection
  • public class Microsoft.SharePoint.Client.ObjectSharingSettings
  • public class Microsoft.SharePoint.Client.PickerSettings


  • public property Microsoft.SharePoint.Client.RegionalSettings.AdjustHijriDays *
  • public property Microsoft.SharePoint.Client.RegionalSettings.AlternateCalendarType *
  • public property Microsoft.SharePoint.Client.RegionalSettings.CalendarType *
  • public property Microsoft.SharePoint.Client.RegionalSettings.CalendarType *
  • public property Microsoft.SharePoint.Client.RegionalSettings.Collation *
  • public property Microsoft.SharePoint.Client.RegionalSettings.FirstDayOfWeek *
  • public property Microsoft.SharePoint.Client.RegionalSettings.FirstWeekOfYear *
  • public property Microsoft.SharePoint.Client.RegionalSettings.LocaleId *
  • public property Microsoft.SharePoint.Client.RegionalSettings.ShowWeeks *
  • public property Microsoft.SharePoint.Client.RegionalSettings.Time24 *
  • public property Microsoft.SharePoint.Client.RegionalSettings.TimeZone *
  • public property Microsoft.SharePoint.Client.RegionalSettings.WorkDayEndHour *
  • public property Microsoft.SharePoint.Client.RegionalSettings.WorkDays *
  • public property Microsoft.SharePoint.Client.RegionalSettings.WorkDayStartHour *
  • public method Microsoft.SharePoint.Client.RegionalSettings.GetGlobalTimeZones *
  • public method Microsoft.SharePoint.Client.RegionalSettings.Update *


  • public property Microsoft.SharePoint.Client.RemoteWeb.CanSendEmail
  • public method Microsoft.SharePoint.Client.RemoteWeb.GetFolderByServerRelativeUrl
  • public method Microsoft.SharePoint.Client.RemoteWeb.GetGroupById
  • public method Microsoft.SharePoint.Client.RemoteWeb.GetListByServerRelativeUrl
  • public property Microsoft.SharePoint.Client.RemoteWeb.ShareByEmailEnabled
  • public property Microsoft.SharePoint.Client.RemoteWeb.ShareByLinkEnabled


  • public method Microsoft.SharePoint.Client.RequestContext.GetRemoteContext
  • public property Microsoft.SharePoint.Client.RequestContext.List
  • public class Microsoft.SharePoint.Client.SharePointSharingSettings
  • public class Microsoft.SharePoint.Client.SharingResult
  • public class Microsoft.SharePoint.Client.SharingUserCollection


  • public property Microsoft.SharePoint.Client.Site.Audit
  • public property Microsoft.SharePoint.Client.Site.AuditLogTrimmingRetention
  • public method Microsoft.SharePoint.Client.Site.CreateMigrationIngestionJob
  • public method Microsoft.SharePoint.Client.Site.CreateMigrationJob
  • public method Microsoft.SharePoint.Client.Site.DeleteMigrationJob
  • public method Microsoft.SharePoint.Client.Site.GetMigrationJobStatus
  • public property Microsoft.SharePoint.Client.Site.SandboxedCodeActivationCapability
  • public property Microsoft.SharePoint.Client.Site.SecondaryContact
  • public property Microsoft.SharePoint.Client.Site.TrimAuditLog


  • public class Microsoft.SharePoint.Client.SPInvitationCreationResult
  • public class Microsoft.SharePoint.Client.TenantAppInstance
  • public method Microsoft.SharePoint.Client.TenantAppUtility.GetAppDetails
  • public method Microsoft.SharePoint.Client.TenantAppUtility.GetAppPermissionDescriptions
  • public method Microsoft.SharePoint.Client.TenantAppUtility.GetTenantAppInstance


  • public method Microsoft.SharePoint.Client.Web.AddSupportedUILanguage
  • public method Microsoft.SharePoint.Client.Web.CreateAnonymousLink
  • public method Microsoft.SharePoint.Client.Web.CreateAnonymousLinkWithExpiration
  • public method Microsoft.SharePoint.Client.Web.DeleteAllAnonymousLinksForObject
  • public method Microsoft.SharePoint.Client.Web.DeleteAnonymousLinkForObject
  • public method Microsoft.SharePoint.Client.Web.ForwardObjectLink
  • public method Microsoft.SharePoint.Client.Web.GetFileByLinkingUrl
  • public method Microsoft.SharePoint.Client.Web.GetObjectSharingSettings
  • public method Microsoft.SharePoint.Client.Web.IncrementSiteClientTag
  • public property Microsoft.SharePoint.Client.Web.IsMultilingual
  • public property Microsoft.SharePoint.Client.Web.OverwriteTranslationsOnChange
  • public method Microsoft.SharePoint.Client.Web.RemoveSupportedUILanguage
  • public method Microsoft.SharePoint.Client.Web.ShareObject
  • public property Microsoft.SharePoint.Client.Web.ThirdPartyMdmEnabled
  • public method Microsoft.SharePoint.Client.Web.UnshareObject


  • public property Microsoft.SharePoint.Client.Sharing.UserSharingResult.DisplayName
  • public property Microsoft.SharePoint.Client.Sharing.UserSharingResult.Email


  • public class Microsoft.SharePoint.Packaging.AppDetails
  • public class Microsoft.SharePoint.WebControls.ModuleLink
  • public class Microsoft.SharePoint.WebControls.ResourceManifestInformation



Here’s list of properties and new classes from the Microsoft.SharePoint.Client.Publishing assembly.

  • public property Microsoft.SharePoint.Client.Publishing. ImageRendition.Group


  • public property Microsoft.SharePoint.Client.Publishing. SpotlightChannel.TileHtmlColor
  • public property Microsoft.SharePoint.Client.Publishing. SpotlightChannel.Title
  • public property Microsoft.SharePoint.Client.Publishing. SpotlightChannel.VideoLibraryServerRelativeUrl
  • public property Microsoft.SharePoint.Client.Publishing. SpotlightVideo.Url


  • public property Microsoft.SharePoint.Client.Publishing. VideoItem.OwnerName
  • public property Microsoft.SharePoint.Client.Publishing. VideoItem.PlayerPageUrl
  • public property Microsoft.SharePoint.Client.Publishing. VideoItem.Url



Here’s list of properties and new classes from the Microsoft.SharePoint.Client.Search assembly.

  • public class Microsoft.Office.Server.Search. Encryption.CertificateService
  • public class Microsoft.SharePoint.Client.Search. Administration.PushTenantServiceInfo
  • public class Microsoft.SharePoint.Client.Search. AzureBroker.PushTenantManager
  • public class Microsoft.SharePoint.Client.Search. ContentPush.CertificateService
  • public class Microsoft.SharePoint.Client.Search. ContentPush.PushTenantManager
  • public class Microsoft.SharePoint.Client.Search. ContentPush.PushTenantServiceInfo
  • public property Microsoft.SharePoint.Client.Search. Query.KeywordQuery.TimeZoneId



Here’s list of properties and new classes from the Microsoft.SharePoint.Client.UserProfiles assembly.

  • public property Microsoft.SharePoint.Client.UserProfiles. FollowedItem.IsHybrid
  • public method Microsoft.SharePoint.Client.UserProfiles. UserProfile.CreatePersonalSiteSyncFromWorkItem



Here’s list of properties and new classes from the Microsoft.SharePoint.Client.DocumentManagement assembly.

  • public class Microsoft.SharePoint.Client.DocumentSet.AllowedContentTypeCollection
  • public class Microsoft.SharePoint.Client.DocumentSet.DefaultDocument
  • public class Microsoft.SharePoint.Client.DocumentSet.DefaultDocumentCollection
  • public class Microsoft.SharePoint.Client.DocumentSet.DefaultDocumentPropertyNames
  • public class Microsoft.SharePoint.Client.DocumentSet.DocumentSetTemplate
  • public class Microsoft.SharePoint.Client.DocumentSet.DocumentSetTemplateObjectPropertyNames
  • public class Microsoft.SharePoint.Client.DocumentSet.SharedFieldCollection
  • public class Microsoft.SharePoint.Client.DocumentSet.WelcomePageFieldCollection



Here’s list of properties and new classes from the Microsoft.SharePoint.Client.Tenant assembly.

  • public class Microsoft.Online.SharePoint.SPLogger.LogExport
  • public class Microsoft.Online.SharePoint.SPLogger.LogFileInfo
  • public enum Microsoft.Online.SharePoint.TenantAdministration. SandboxedCodeActivationCapabilities
  • public property Microsoft.Online.SharePoint.TenantAdministration. SiteProperties.SandboxedCodeActivationCapability
  • public property Microsoft.Online.SharePoint.TenantAdministration. Tenant.AllowedDomainListForSyncClient
  • public property Microsoft.Online.SharePoint.TenantAdministration. Tenant.IsUnmanagedSyncClientForTenantRestricted
  • public property Microsoft.Online.SharePoint.TenantAdministration. Tenant.IsUnmanagedSyncClientRestrictionFlightEnabled
  • public property Microsoft.Online.SharePoint.TenantAdministration. Tenant.ShowAllUsersClaim
  • public property Microsoft.Online.SharePoint.TenantAdministration. Tenant.ShowEveryoneClaim
  • public property Microsoft.Online.SharePoint.TenantManagement. Office365Tenant.AllowedDomainListForSyncClient
  • public property Microsoft.Online.SharePoint.TenantManagement. Office365Tenant.IsUnmanagedSyncClientForTenantRestricted
  • public property Microsoft.Online.SharePoint.TenantManagement. Office365Tenant.IsUnmanagedSyncClientRestrictionFlightEnabled
  • public property Microsoft.Online.SharePoint.TenantManagement. Office365Tenant.ShowAllUsersClaim
  • public property Microsoft.Online.SharePoint.TenantManagement. Office365Tenant.ShowEveryoneClaim


You need additional APIs in CSOM?

imageIf you have any specific needs for the APIs you need, please let us know using User Voice in below address. We will address these requests and feedback where we can.

Please be patience on the requests, we will address those APIs which we can as fast as possible, but we do not have infinite resources, so we cannot provide any schedules related on the timing for addressing the feedback. Your input will be still highly appreciated and highly valuable for us to align the resources on the most needed capabilities.

Office 365 Developer Patterns and Practices

Office365PnPLogoRed_thumb1We will provide updated samples and scenarios based on these APIs in the Office 365 Developer Patterns and Practices guidance, which contains already more than 100 samples and solutions demonstrating different patterns and practices related on the app model development together with additional documentation related on the app model techniques.

Check the latest updates in our program from Please join us on sharing patterns and practices for the community for the benefit of the community.

“From the community for the community” – “Sharing is caring” has moved homes

You may have noticed a little change at First off I wanted to say a huge thank you to FPWeb for providing FREE hosting for this web site running on a SharePoint Server 2010 Farm for the last few years. The community has benefited tremendously from the wealth of information shared by the community headed up by myself (Jeremy Thake @jthake), Mark Miller @eusp and Natasha Felshman @teameusp. I would also like to thank all of our sponsors over the years that have helped to pay for expenses to keep the site running and the editorial effort running, without the sponsors this site wouldn’t be what it is today.

I have spent quite a bit of my own personal time writing up a migration script to get the content out of SharePoint Server 2010 Publishing Site lists and libraries into WordPress. I’ve used all the tricks in the book to get ALL of the content over including all the comments, images, authors and categories.

As you are probably aware, I have moved to Seattle to take a role as a Senior Product Marketing Manager role in the Office 365 Developer team. I wrote a post on this back in March when I joined. I would encourage you to go see what our team has been up to at I would just like to say a personal thank you to everyone involved in the community, I wouldn’t have been able to achieve my dream of working for Microsoft without all your support and help over the years!
Mark has also been busy forming a new community around the Nexus product.  You can check out what Mark has been doing over at the Sonatype blog. No doubt that community will benefit immensely from his passion for building strong collaboration across the globe like he did with and then

Rather than let the content disappear off the Internet when the SharePoint Server’s were switched off, I thought it was important to keep things going and accessible. I’ve already had quite a few questions over the last few months around the future of the site.
The site has over 160,000 page views a month purely through search driven referrals. There has been no content updates on the site since November 2013, but if there are people who want to contribute to this site I am more than happy to open the doors again.
The web site is currently hosted on my personal Azure tenant. I am not looking to make this a commercial site and will only source sponsorship to keep the lights on. Truthfully, I have no idea what it’ll cost to run WordPress on Azure Web Sites and Azure SQL with the audience it has.

If people are interested in contributing, I will be looking for some volunteers to act as editors for content in the End User, Developer and IT Pro spaces respectively. I am also looking for someone with some Photoshop skills to skin this site from the default theme with a nice top banner.

So, feel free to chime in below in the comments and lets see what we can rustle up!

My own thoughts on the Office 365 developer vision

It’s been an extremely busy few weeks for me, and everyone at Microsoft, working on Office 365 developer extensibility. We made some very big announcements around: building Office everywhere, connecting to our APIs and building on an open platform. Personally for me, this was my first major launch. I joined weeks after the SharePoint Conference 2014, where our team made some other major announcements like the Office 365 APIs Preview.

To summarize, the announcements this week are:

We had presentations to explain what was new at TechEd Europe 2014 in Barcelona, which are available on demand at The kick-off session also included some bits on our Vision too where we demoed the Microsoft Graph, extending Office for the iPad and hover cards in Outlook. I also recorded a podcast with Brian Jones, Group Program Manager for Office Developer Program (ODP), which you can listen to right now. We also have over 30 hours of FREE on-demand training and accompanying hands on labs available at already.

It’s been really exciting to see the pick up on this with a variety of technology outlets writing about the news like: Apple Insider, eWeek, etc. I’m really looking forward to the developer community getting their hands on the new APIs and extending the My Apps page. There have already been a bunch of questions on Twitter, StackOverflow and Yammer around the news. I figured I’d respond to a few of these here as I fly back from Austin to Seattle after a great weekend of race cars at the Formula 1 😉

Is this yet ANOTHER App Model with My Apps extensibility?

This was actually the first question I got after we revealed this in the Developer Foundational session where I demoed this with Jay Schmelzer, Partner Director of Visual Studio, on day 1 at TechEd. Extending the My Apps page requires you to register an Azure Active Directory Application in the Microsoft Azure Management Portal. You simply define the web site address that clicking on the icon on the My App page directs you to after an authentication flow occurs and grab the client id and secret the page gives you and use that to make calls back to the API. This is very similar to the flow for the SharePoint Hosted and Provider Hosted app model, where the icons land on the Site Contents page of a SharePoint Site. The main difference is that the SharePoint app model uses Azure Access Control Services (ACS) auth flow, which are registered via appregnew.aspx. The engineering teams are working on converging the auth flow used by both and we’ll have stuff to show in the coming months.

The way to look at it as a developer is that you can extend at the: Office level; SharePoint level; or Organization wide. There were many scenarios where developers were using SharePoint Provider Hosted apps and deploying them to a Site Collection just to get the auth flow hooks even though it didn’t leverage the parent SharePoint site at all. Some organizations even deployed the same app to every site collection for discoverability. Essentially now you could just adjust the web site to make these appear in the My Apps page. I also believe that some business solutions will have a combination of every approach: Office, Site and Organization wide.

Can I call SharePoint CSOM/REST APIs using Azure AD auth flow?

In actual fact, you can also call the SharePoint CSOM/REST APIs by posting the same Azure AD access token, as long as when you register your Active Directory Application you request for permission to SharePoint Online. The new Office 365 Files API that connects to SharePoint Online, only works against Document Libraries so there is still a need to use the SharePoint CSOM/REST APIs to connect to SharePoint Lists, Workflow, Managed Metadata, BCS, Search etc.

Can I get an app-only token with Azure Active Directory auth flow?

One of the neat bits about Apps for SharePoint is that you could request different types of auth flow: user; user and app; or app-only. This allowed my app to interact with the parent SharePoint site and where it created things in document libraries or lists, the auditing would show the app had modified it and NOT the user. Azure Active Directory auth flow does not support app-only at this time.

Can I use the Office 365 APIs with an elevated user account in my web sites?

For many ISVs this scenario is very common, for instance those ISVs building back up and recovery solutions where they have to use an elevated administrator account that has access to everything. The purpose of the Office 365 APIs is really from a “me” use case, as indicated by our RESTful endpoint URLs. These APIs are not intended to use elevated or impersonated credentials at all. If a user is accessing your web site and the web site is calling the Office 365 APIs, it will only have access to their own Mail, Calendar, Contacts regardless of whether that user is a tenant admin or not. The exception to this rule is SharePoint Online, where you can request “Full Control” of all SharePoint Site Collections that the user has full control over. For these elevated scenarios the existing Exchange EWS API and SharePoint CSOM/REST APIs should be used.

Can we submit to the Office Store extensions for the My Apps page?

The team is actively working on the ability to support not only Office level and SharePoint level apps but also My Apps extensibility in the Office Store. Right now, the only way for you as an ISV to land in customers tenants is through:

  • Dedicated – providing them with your web site to host and getting them to manually create the Azure AD application and drop in the client id and secret into the web.config of the web site; or
  • Multi-tenant – configure your Azure AD application to be multi-tenant and point them at your web site and go through the consent flow. This was actually demoed in the kick off where we showed both SmartSheets and Xero acquisition process.


The announcements this week were really to enable web developers to extend the My Apps page and to call the Office 365 APIs. In the old world of 3 year releases, we would have shipped this with the whole story completed, but with milestone releases every 6 months and continued improvements every month we have taken a different approach. We do know that web developers will use these APIs against Office and Site level right now. So below are a few common questions we are hearing already:

Should I use Office 365 APIs or continue to use SharePoint CSOM/REST APIs in Apps for SharePoint?

The main benefit of using Office 365 APIs in Apps for SharePoint would be the fact that once registered you could also call Mail, Calendar, Contacts and User and Groups APIs too. In the future as we add new API endpoints there, for example Office Graph, Yammer, and Lync this will become more compelling.

Apps for SharePoint natively work with Azure ACS auth flow and you can use the access token you receive on launching the app to call the SharePoint CSOM/REST APIs.

The new Office 365 APIs cannot be called by the ACS access tokens. Right now, if you deploy an App for SharePoint that uses the Office 365 APIs, it will not register this in Azure Active Directory Application register so that you can get an AD access token. So, right now you’d have to register this manually in the Azure Management Portal and plug in that client id and secret, therefore having two in there…one for Azure AD auth and one for Azure ACS auth. As mentioned above, there is work being done to converge this.

Should I use Office 365 APIs or continue to use SharePoint CSOM/REST APIs in Apps for Office to talk to SharePoint Online?

There are a lot of scenarios where you extend the Office client and want to call into SharePoint Online or Exchange Online. We’ve had some great samples out there to request on the fly permissions to SharePoint Online using Azure ACS auth flow and registering the application in appregnew.aspx and getting the ACS client id and secret. There were already samples of how to call the Office 365 APIs using Azure Active Directory auth flow and registering the application in Azure Management Portal and getting the AD client id and secret. I would encourage the use of Azure AD auth flow here rather than ACS auth flow moving forward for SharePoint Online scenario due to our focus on Azure AD.

Should I use Office 365 APIs or continue to use Exchange EWS APIs for Exchange Online?

Although the Office 365 APIs gives great coverage of Mail, Calendar, Contacts there are still things that the EWS API has coverage over. So it would make sense to call these from your application. Typically this would require capturing the user name and password to use to call these endpoints directly via REST or using the Exchange Client. One of the main advantages of calling using the access token is reducing the need to store the user name and passwords or even request them off the user. I have blogged previously about how you can call the EWS APIs using the Azure AD access token.

How does the Office Store acquisition flow work for Azure AD applications?

If you are an ISV building an App for Office or Apps for SharePoint that uses the Office 365 APIs, you will need to register your application in Azure Active Directory and mark it as multi-tenant. When the user gets the app from the Office Store, they will prompt the user to “Trust” the app, which grants the app an Azure ACS authorization token. The first use of the app where it calls the Office 365 APIs will result in a user being asked to consent the app, regardless of the fact the user would have already “Trusted” this app from the Office Store. The reason for this is because the “Trust” flow from the Office Store is trusting the app for Azure ACS, not Azure AD. As discussed in our kick off session, there is work being done to streamline this too.


I look forward to sharing more with you in the coming weeks as we get more feedback on all these things!

Musings from a Senior Product Marketing Manager at Microsoft focusing on Office 365 pro developer platform.

%d bloggers like this: