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

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

August catch up on Office 365 Development news

It’s been a busy few months for our Technical Product Management team, in Building 1 in Redmond, focusing on Office 365 Development. It’s month four for me personally in the team and reflecting back it’s been a great ride! it has been a really exciting time working with the team with our core focuses: Chris Johnson leading the team and driving our vision with management; Sonya Koptyev focusing on the Information Worker developers and the new; Dave Pae focusing on our ISV NDA program and DX (formerly DPE) cross-over including Dev Camps; Jim Epes working on the Office Store; and myself on the new content for ramping up developers and Microsoft event track ownership. Naturally we all have lots of other stuff we work on each day to keep us all busy of course!

Continue reading

Come say hi at SharePointalooza Sep 12th and 13th Branson, Missouri

I’m going to be speaking at SharePointalooza next month and would love to meet you guys there too…sounds like its quite the party as well as full of great sessions around Office 365 content. So what are you waiting for???

And now to the marketing fluff…


SharePointalooza is less than two months away! SharePointalooza is a TWO DAY conference offering sessions and technical workshops on all things SharePoint, Office 365, and Yammer.  SharePointalooza takes place at Branson Landing in Branson, Missouri on September 12th and 13th.

Please allow us to take a few minutes to explain to you why you  should consider attending SharePointalooza.

PRICE – Most multi day SharePoint conferences cost at least $1000 in registration fees. Our registration starts at just $30. In addition, We worked out special rates with the Hilton Convention Center to offer a discounted rate of $139 per night. Other hotels in the area cost as little as $39.99 per night making SharePointalooza the most economical choice for your training dollars while bringing you the highest quality content.  SharePointalooza is a NOT for profit event and every dollar goes towards giving you a world class experience. However, we understand that money can be an issue, that’s why we are proud to offer FREE registration to those that need it. If you would like free general registration, just enter the code “SPSOZARKS” on the registration page:


OUR SPEAKERS - To put it simply, you will not have another chance to see this group of SharePoint/Office 365 experts in this type of intimate setting. We are truly blessed to be hosting the greatest experts in SharePoint and Office 365. You will not find a more world class list of speakers anywhere else.  These awesome SharePoint MVP’s and talented speakers from all over the world are coming down to support the community and have a great time.  We cannot stress enough how much we’re truly humbled by their experience and skill. This alone sets SharePointalooza apart.

WORKSHOPS- In addition to standard sessions we also offer more in-depth workshops that you will simply not find at other conferences.

LOCATION, LOCATION, LOCATION – The event is being held at a great location in Branson at a world class convention center. Directly across the street is Branson Landing which boasts of many shops and restaurants.

LIVE MUSIC – We’ve found some amazing bands from Chicago and Nashville and we are bringing them in to play on an awesome outdoor stage at night to give the attendees and speakers a chance to unwind after a day of learning.

SUPPORT – By attending SharePointalooza you are supporting efforts to continue to bring high quality technical conferences to the area. Without your attendance and support these events are not possible.

Registration is open! Register today at

and we’ll see you soon!

For more information and a list of sessions check our out website at

The SharePointalooza Organization Committee

Using the SharePoint CSOM and REST API with Office 365 API via Azure AD

It’s been really exciting to see ISV’s and the community start playing with the new Office 365 APIs. I’ve presented on these at TechEd North America with Thorsten Hans in the SharePoint Power Hour session.

In a nutshell, the Office 365 Developer platform has: the App Model to surface up your business solutions directly within the user interface of the products; and then the Office 365 APIs for you to consume our services from your own standalone web applications or device apps.

Continue reading

Office 365 Developer Podcast rolling…

I’ve been busy getting a new Office 365 Developer Podcast started over on our Office 365 Blogs.

It’s been a very successful two weeks with our first how where I talk to my immediate team mates (Chris Johnson, Sonya Koptyev minus Dave Pae who was away at a conference). Check it out here .

The second show was with Radi Atanassov and we discussed in depth the OAuth flows in Apps for SharePoint. It’s a must listen for all Office 365 developers out there. Check it out here .

Next week I have Bill Ayers talking about the journey SharePoint developers have had moving from a managed code World over to a hybrid one that includes much more JavaScript. In two weeks it is a recording of a panel of amazing peeps from the European SharePoint Conference in Barcelona around the App Model.

I’m trying to encourage some good discussion around the Podcast at the Office 365 Technical Network Yammer Group. So please hop on over and ask your questions and give your feedback. What do you want to hear about? Got something to say and want to get on the show? Check it out here


How the Office 365 Developer community can work with us

I’m currently in week number 10 at Microsoft, working as a Senior Product Manager in the Office 365 Division focusing on the Professional Developer Audience.
For those who’ve followed me prior, I was an architect in the Product Management division at AvePoint Inc for three years and a SharePoint Development Consultant in Australia since around 2006. Before joining Microsoft, I was also recognized as a SharePoint MVP for my work in the community mainly around my blogging, speaking at conferences, social engagement and open source contributions.
The reason I point this out, is that I’ve been in your shoes…not being behind the curtain and trying to find answers whatever way I can. Google/Bing was, and still is, my best friend when it comes to finding my answers! Most of these come from the MSDN Library, Blogs and StackOverflow.

Continue reading

Office 365 Developer YamJam 6th June 9am PDT

The Developer YamJam is almost here! Join our team at Microsoft from 9:00am-10:00am PDT, (UTC -7) Friday, June 6th in the Developer YamJam group. This is a great opportunity to connect directly with Microsoft engineering and get your questions answered.

To participate:

1. Join the Developer YamJam group.

2. Read the Developer YamJam Flow & Etiquette Note that is pinned to the sidebar BEFORE posting.

3. You can post questions separately before the YamJam begins. The TOP 3 questions (judged by “Likes”) posted BEFORE the YamJam begins will be answered.

4. Come back to the group this Friday at 9am PDT to take part in the live Q&A.

Hope to see you there!

My TechEd NA 2014 Sessions available to watch

I’ve just returned from TechEd North American in Houston and already the sessions are available over at Channel 9. I had three sessions last week on Office 365 development which you can check out here:

SharePoint Power Hour with Thorsten Hans

Deep Dive into Developing Advanced Microsoft SharePoint Applications Using Third-Party JavaScript Libraries

Setting Up Your On-Premises Environment for App Development with Fabian Williams

I was also the track owner for Office 365 Development and there were some amazing sessions that you can also check out here too.

European SharePoint Conference 2014 Slides

It was great to speak at the European SharePoint Conference this week in Barcelona. I have embedded my slides here from both of them.



SP24 AngularJS and Apps for SharePoint Presentation & Code Samples

Thanks to everyone that attended my #SP24 session today. I was super impressed by the online turnout and the amount of quality speakers and sessions that occurred over the 24 hour period. The organized certainly looked a little tired 20 hours in when my session started…truly dedicated souls!

Continue reading

Office Dev Power Hours from Build conference

I’ve been digging deep into the new Office 365 API’s (in preview) and new Contextual areas and APIs of the whole Office platform (Office Client, Office Online, Office Apps, SharePoint, Exchange, Lync, etc.) this week. There are some great sessions that you can watch for FREE from the Build Conference 2014.

Check out the sessions from the engineering side of the house actually building this stuff:


SharePoint 2013 Apps with AngularJS from Build Conference 2014

Microsoft have published my session from yesterday in less than 24 hours to Channel 9! If you were not able to attend this, or when I presented this topic at SharePoint Conference 2014 please take some time and check it out.

I have uploaded my code that you can check out too. I’m looking for more feedback on this session and also my Complete Me demo app.

I’d also highly recommend checking out these sessions from the rest of the Office Division here:

SharePoint Power Hour – New Developer APIs and Features for Apps for SharePoint – Rob Howard

Build Connected Productivity Apps – Brian Jones

Office Power Hour – New Developer APIs and Features for Apps for Office – Rolando Jimenez Salgado

Developing Office 365 Cloud Business Apps – Beth Massi

Captivate Consumers with the OneNote API – Gareth Jones

Apps for Outlook Power Hour – Andrew Salamatov

Building Enterprise Social Apps with Yammer – Jose Juarez Comboni

Top 5 day one //Build announcements for Office 365 customers

1. Office Windows 8 Apps

The new Office Apps (Word, Excel, PowerPoint) for Windows 8 were demonstrated at the day 1 keynote. These apps will bring Office to the Windows 8 and Windows Phone 8 Store. No release date on these yet, but there are some cool new features focused on Touch and Stylus use. officedirectx

2. Windows Phone 8.1

I’ve been very critical in the past of Windows Phone, with the addition of the Action Center this really makes it easy to keep up to date, There were quite a few features like WiFi Sense that are unique to the platform and not available on iOS or Android phones. There is a great overview of the new updates to 8.1 on their blog. wpactioncenter

3. Cortana – Personal Assistant

The newly announced Personal Assistant called Cortana will certainly allow you to do things using voice commands that will really change the way you use your phone. I used a device at the device bar and was really impressed that she understood me on various things I tried! I’m not personally sure I’d use it much, but it will be interesting to see how more productive this can make you with Outlook Calendars, Mail and Tasks. cortana

4. Universal apps

I presented on Windows Phone 8 apps at TechEd NA/Europe last year on Building Apps that connect to SharePoint. One of the questions I got was around writing the app once for Windows Phone and being able to leverage the same code for a Windows 8 app. Back then this was not possible, but with the new Universal Apps you can! This is going to be HUGE for building apps once and using it across multiple platforms…including Xbox!

5. IFTTT Preview actions for Office 365

In Brian Jones session at 2:30 on Wednesday, he demonstrated some new preview IFTTT channels. These channels allow you to support Office 365 events, such as “if an email from X is in my inbox, then create a OneNote page in my Unfiled Notes”. I’m already using the other OneNote Channels that are available in IFTTT and looking forward to these ones to be published! It’s been a great first week for me at Microsoft. I highly recommend you check out the on-demand keynotes

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

%d bloggers like this: