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 $40 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.


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 10 Build 2015 recordings not to be missed on Office development!

It has been a long few weeks with Sydney, London, San Francisco and Chicago. I thought I’d just put down my favorite sessions from Build 2015 and I’ll do another one on Ignite once they are up too next week.

1. Build 2015 Day one keynote

This is not to be missed with Rob Lefferts on stage with our CEO Satya Nadella demoing Outlook add-ins like Uber, SAP and our Unified API using the Graph Explorer.

2. Office 365 development…why it matters

This was my only session of the week with Rob Lefferts and we did a demo palooza of all the new announcements.

3. Integrating Web Apps with Office 365

Todd Baginski and Dorrene Brown did a great job of demoing the Property Manager hero demo and how it was put together. Its a great project to show case what can be done with the Office 365 APIs in a real world scenario.

4. Supercharging Your Custom Solutions with the Office 365 Unified API Endpoint

Yina Arena has been spear heading the Unified API endpoint efforts and she does an amazing job of explaining what its all about in depth.

5. iOS and Android Apps with Office 365

Todd Baginski and Josh Gavant showcase how to build native iOS and Android apps against the Office 365 API SDKs.

6. Connecting to OneNote in the Cloud with Office 365 APIs

One of the most exciting announcements for me was the fact that you can call the OneNote APIs with an Azure AD token!

7. Building Multi-Device Apps with Xamarin with Office 365 APIs

These guys did a great job of demoing Xamarin and Office 365 APIs together. Chaks and James are a pleasure to watch!

8. Building a Single-Page App Using Angular and TypeScript Using Office 365 APIs

Andrew is one of my favorite presenters and he killed this session on Angular and TypeSCript.

9. Building Office Add-ins using Node.JS

Another one by AC, I really want to personally get plugged into Node.JS and this was a great intro.

10. Get Your Hands Dirty with the Office 365 APIs, Authentication and SDKs

Rob Howard totally blew away the crowd with his Fiddler skills explaining the auth stack on Office 365 and Azure.

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!

The Smarter Inbox system

If you aren’t follow Scott Hanselman on Twitter you are doing something wrong in the first place. But I saw a tweet from his last week on an inbox system he was using.

I have been running zero Inbox since joining Microsoft a year ago last week and can’t believe I’ve managed it. Travelling to conferences does make it hard to keep on top of but its the only way I can stay on top of things.

I have been trialing this approach for a week now and love it! i’ve tweaked it a little and wanted to explain what I’ve done.



  • Vendors
    I have various vendors I work with on a bunch of projects, so I essentially added a rule that if any emails come from them to move it to a Vendors folder. I then treat that as a top priority folder to check.
  • External
    I get a lot of external questions, that I do treat with priority but not as highly as my core work. So I have a rule set up that any email not from ‘’ gets put into this folder.
  • CC
    Email is nuts at Microsoft…if I’m on a cc on an email, I file it to this folder. I usually check this folder once a day in the mornings and most I just delete or file, very little are actionable.
  • Invites
    I get a lot of meeting invites, so been able to see these immediately is really important and act on them.
  • Yammer
    The Office 365 Technical Network has a lot going on and the only way I can keep up is via e-mail ironically. The Yammer Inbox is just unmanageable. So I file them all here and try and get through this at least once every other day.

This means that my action inbox is everything else which is the highest priority. So far its been great. I try and keep the folders as empty as possible and action on the spot like I did with Inbox Zero OR create a task and schedule it.

Task management

I’ve been through various Task Management systems:, Wunderlist, OneNote. But I am totally in love with and a paid up subscribe of Their Windows app is great and their iPhone app is awesome too. I forward emails on to various lists I have configured and it plans out my day to day task list perfectly.

How do you manage your inbox and tasks?

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!

Top 10 tips for preparing for the shift to the SharePoint app model

Last weekend I went to Branson, MI for SharePointalooza which was organized by Mark Rackely and a bunch of very dedicated community members. I was then at SPTechCon Boston and the same questions came up. Essentially people are seeing all the messaging we are communicating from Redmond around the Office 365 Developer platform and wanting to know how they can prepare now where they are still on SharePoint Server 2007, 2010 and 2013.
The biggest misconception was that the app model only worked in SharePoint Online on Office 365, mainly due to the messaging saying the “cloud app model” when it was first launched. This is not true and the app model does work with SharePoint Server 2013.

Continue reading Top 10 tips for preparing for the shift to the SharePoint app model

Apple’s biggest mistake today was locking the stream down to Safari

I sat at work today, looking forward to watching the keynote by Tim Cook, CEO of Apple Inc.  I was very disappointed to  find out that it was blocked to all browsers except Safari…ie. to iOS and OSX. Apparently this isn’t a new stance. Now I have a MacBook Pro at home which I use all the time for my digital photo editing…but at work I’m running Windows 8.

What was my experience trying to follow the announcements? I followed TechCrunch live blogging notes, which was actually surprisingly good. I also followed along on Twitter, where it was a mixed bag of apple fan boys and apple haters. I did “try” and follow Apples very unstable card like notification page which showed if you didn’t have the stream.

announcementWhich often showed this page:

Throughout the day I followed updates from various tech blogs and peoples opinions on Twitter that were also a very mixed bag of “no innovations” to “this thing is amazing”.

When I got back tonight, I turned on my Apple TV and watched the 2 hour show on my 60″ TV in full HD. My first impression based on my consumption all day was TOTALLY adjusted once I watched the whole thing…regardless of the comments throughout the day.

If you haven’t watched the presentation…I highly recommend you do. Hats off to the Apple crew, they certainly do know how to put on a show and present an amazing set of products! As a marketer at Microsoft, there is a lot to learn from these guys in Cupertino.

It’s a great lesson for Apple to invest the money in the infrastructure to stream the live announcement to everyone…regardless what platform they are using to ensure they control the message.

Here are some things that I thought were very impressive. When I asked the fan boys “what was impressive” they didn’t mention on my Facebook threads so I wasn’t aware:

  • Metal – the game demonstration graphics were very impressive…i’m sure it’s going to kill your battery life, but certainly a big market out there for this. I’m not a big gamer at all so not a killer feature for me.
  • Camera advancements – although its only a 8MP camera, the image resolution is amazing. The photo samples they showed were amazing, as someone who loves photography. I’m not sure how this is technically different from Nokia Lumia 1020 40MP camera, but producing a 40Mb file can’t be bad! I do miss my 1020 camera, now having a giant 1520 phablet.
  • Apple Pay – so the Apple haters were chiming on about NFC being available on Google Wallet for a while now…but in app purchases and the security around this with banks was very impressive.
  • Apple Watch Dial – the dial is extremely natural and very Johnny Ive in being very much like the traditional watch dial.
  • Apple Watch straps – the amount of customizations available also make this a lot more flexible than others on the market.
  • Apple Watch Quick Board – the intelligence in quick replies based on the message that was sent to you was a nice touch for the watch.
  • Apple Watch notifications – all the support from major app vendors is very impressive. Twitter went nuts on opening the hotel room door by waving it in from of W Hotels. Going to be funny if your battery runs out on the device…no details on battery other than “a day charge”.
  • Apple Watch compatibility – the fact it’ll support 5s, 5c and 5 is simply amazing! That’s a lot of existing devices that will support it.
  • Health and Fitness – I was impressed with the depth of the integration. The hype that they just wiped out FitBit etc. is certainly not accurate when the watch “starts at $350”. It’ll certainly hurt the Garmin type products in the same price range.

The one thing that boggles me with smart watches is that it is tied to the phone, much like Google Android Wear. I always saw those Samsung ads where the hand held the smart phone and was twisted to look at the watch face rather than just use the phone! It’ll be interesting to see how people use this form factor. I’m sure it’ll be a lot less awkward than Google Glass!

Apple were serious innovators with the  Apple II, iMac, iPod, iPhone and iPad. Apple may not always be the first to market these days, but being first isn’t always the best (Microsoft SPOT watches). You can see with the watch they’ve really thought about this.

I’m guessing they’ll be some comments on this post…what were your most impressive features? and for those Apple Haters….be nice 😉

Top 5 things I’ve learnt in 5 months at Microsoft

“Time flies when you are having fun” Anon

Just sitting on the sofa tonight and looking back at the calendar its nearly the end of August and I started at Microsoft March 31st, nearly 5 months ago.

I think anyone who joins Microsoft corp without working in the field is going to have a unique experience in their first year. Microsoft as a company is also going through changes with the Mobile First, Cloud First directive from the new CEO, Satya Nadella, who joined in February. The division I’m in as a Technical Product Manager, Office 365, is also going through significant change by moving a extremely successful “box product” with a 3 year cycle to a subscription service.

Continue reading Top 5 things I’ve learnt in 5 months at Microsoft

Using the Exchange Online EWS API with Office 365 API via Azure AD

In my normal day to day job in the Office 365 Developer technical product management team I’ve been doing more and more work with the new Office 365 APIs that call into Exchange Online, SharePoint Online, and OneDrive for Business and use Azure AD for auth flow. These new end points are all OData 4 and very much focused around the mobile device application and standalone web application “me” space…e..g as the logged in user accessing services related to that user. There is plenty of information on (our nice shiny new one!) on these APIs and I’ve also shipped a podcast (I do these weekly so please check them out!).

Continue reading Using the Exchange Online EWS API with Office 365 API via Azure AD

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

%d bloggers like this: