Want to know which of your leads/customers are using Office 365? Try the MX Lookup Excel Add-in

Have you got a list of leads, potential customers, or existing database of people and want to identify or target those that are using Office 365? I can think of one or two scenarios where this would be handy!

Microsoft have a free modern Excel Add-in called “MX Lookup” (available in the Office Store) that takes a list of email addresses and will perform a lookup for each email address and will tell you if the backend mail system is Office 365 or not. Pretty handy right?


I’ve been using this add-in in demos and have recently noticed that it now identifies Outlook.com accounts as being Office 365 (where it originally identified these separately) so be aware that you may get a mix of Office 365 and Outlook.com users.




Microsoft Graph API, Throttling & SharePoint Lists/Libraries – HTTP 429 Error Code

When developing against the Microsoft Graph you may find yourself experiencing  HTTP 429 Error Codes now that resource throttling is being implemented in different areas of the Graph.

I came up against a strange and somewhat misleading one this week which is worth being aware of if you are using the Graph to access SharePoint lists and libraries using the /sites/ area of the Graph.

I had a service running which started reporting HTTP 429 error codes. I read through all the latest published documentation to try a figure out how the throttling has been implemented and what the limitations are to see what part of the code could be triggering the throttling. As you’ll find the documentation is very non-committal and mostly serves to justify why there are no specific limits and rather algorithms that dynamically determine the throttling based on a large number of dynamic criteria. All of this sounds really fancy and advanced but is not very helpful when trying to identify what could be causing the throttling issue, or what limit your code is hitting.

Here’s the Microsoft documentation links which are well worth the read:

Microsoft Graph throttling guidance

Updated guidance around SharePoint web service identification and throttling

Avoid getting throttled or blocked in SharePoint Online

(Azure) Throttling pattern

Most of the above advice is summarised in this section I took from one of those official documents on handling throttling with the Graph API (Feb 2018)

Best practices to handle throttling

The following are best practices for handling throttling:

  • Reduce the number of operations per request.
  • Reduce the frequency of calls.
  • Avoid immediate retries, because all requests accrue against your usage limits.

When you implement error handling, use the HTTP error code 429 to detect throttling. The failed response includes the Retry-After field in the response header. Backing off requests using the Retry-After delay is the fastest way to recover from throttling because Microsoft Graph continues to log resource usage while a client is being throttled.

  1. Wait the number of seconds specified in the Retry-After field.

  2. Retry the request.

  3. If the request fails again with a 429 error code, you are still being throttled. Continue to use the recommended Retry-After delay and retry the request until it succeeds

This advise all makes sense so that if your code is making a lot of calls (think migrating SharePoint items or doing bulk updates) that the Graph may tell you to slow down. When I was investigating my scenario however, it just didn’t make sense that the code was generating enough traffic to worry the Graph (Office 365 service). The telemetry was telling me the code had made around 2,500 Graph calls spread over a period of 24 hours and this was also spread across more than 100 users from a number of different Office 365 tenants.

Diving deeper into the telemetry a pattern quickly emerged, the 429 errors were being returned in response to a Graph call to get a list item based on a column value. Something along these lines:

https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?filter=Fields/Title eq 'testitem'

This call didn’t fail all the time, if fact it only seemed to get the 429 error in less than 10% of the cases.

Having spend many hours over the past few years ‘working with’ SharePoint thresholds and query limitations on large lists and libraries, my mind started to move towards thinking that maybe the 429 error was a bit misleading and was actually failing due to the Graph API hitting SharePoint threshold limitations.

Off to prove my theory, I’ve got a library with just under 5000 items (which is the SharePoint list threshold)


Using the Graph API Explorer I can make a call that queries this SharePoint library for a specific item matching on the Title column value being equal to “upload.log” (a file which I know exists in the SharePoint library).


As expected  the item is found and a Success code 200 is returned along with the JSON payload in the response body shown above. Time to prove the theory, what if I now add 2 more files to the same document library and repeat the process?

After uploading 2 more files, the library settings now indicate that we have exceeded the list view threshold.


Now executing the same query in the Graph API explorer gives us the 429 error code. Inspecting the response body we can see the additional error code of “activityLimitReached” and message of “The application or user has been throttled”


Why was this error misleading? Neither the error code or message specifically indicate the issue being related to SharePoint thresholds. The documentation and best practice articles (linked to at the start of this article) regarding this 429 response are written on the premise that the volume and frequency of calls is responsible for the error and hence the guidance to handle the error should be to incrementally back-off and keep trying until you get success. This guidance is totally misguided in the case of hitting the underlying SharePoint threshold limitation as the call will always fail and has nothing to do with the volume or frequency of calls you are making. It will fail if it’s the only call you make all day and no matter how many times you retry, it will always fail.


How to edit Markdown files in VSCode with live preview of changes

Visual Studio Code (VSCode) is a great tool for editing Markdown files. It’s not immediately obvious that VSCode comes out of the box with the capability to preview Markdown files and even provide a side by side live preview view so you can see the result as you are modifying the file.

In VSCode opening the file will provide the standard file editing experience (as shown on the right hand side of the image below). Without having to remember VSCode keyboard shortcuts, you can simply right click the markdown file and select Open Preview.


This will result in the preview of the markdown file being opened in a new tab.


We can go one step further using the Split Editor button in VSCode to get both the editing experience and preview side by side.


You now have a live preview, any changes made in the editor (left side) are immediately reflected in the preview (right side)


5 reasons why email is still king for business communication


The last few years have seen an explosion in the number of tools available for us to communicate not only at a consumer level, but also in the context of our workplace both internally within companies and externally between companies.

I primarily work with Microsoft technologies, but even within that small sphere the options are plentiful:

  • Email
  • Yammer
  • Microsoft Teams
  • Skype for Business
  • Skype
  • Office 365 Groups
  • LinkedIn

Outside of the Microsoft world it’s not uncommon to encounter these popular options as well:

  • Facebook
  • Slack
  • Google Hangouts
  • Twitter

I’m actually a fan and regular user of many of these other than email. I use Microsoft Teams internally quite heavily, along with Yammer for cross company communication and Twitter for more widespread public broadcast and consumption. I’m also not unknown for shooting off a quick message on Skype or sharing something or reaching out to someone on LinkedIn.

I think each of these messaging platforms has a particular area in which it shines but other areas that let it down (which is why many of us use multiple platforms). Much has been said about what platform to use for the different types of communication and what you are trying to achieve:




I’m still of the opinion that while email is by far the oldest of the communication/messaging platforms it is still the backbone of business communication and this is for some key reasons that I don’t see changing in a hurry (mainly due to commercial interests!)

1 – People want to feel in control

outlook-rules-stay-organised-cameron-dwyer.pngIts natural for people to want to be in control, to be in their comfort zone. If we take a mature rich email client such as Outlook, the user has many ways in which they can organise, arrange and maintain their communication that makes sense to them and allows them to feel in control. Since the email that resides in the users mailbox is not shared, the user has ownership (and hence a sense of control) over the email and is free to manage it without affecting others. Outlook has the following features that allow a user to gain control and stay on top of email communications:

  • Folders – Users can create a folder structure that makes sense to them for organising email. They are not locked in to only viewing messages in the order and “buckets” it’s presented to them in, which isn’t the case for many other platforms where it’s usually a case of one shared view that has to fit everyone.
  • Categories – Users are free to create and assign categories to emails to assist with later retrieval or to mark that they need to do something in response to the email
  • Followup actions with reminders – Emails can be flagged for followup at a specific date/time because often communication is requested something of us or requires a reply or some action in return.
  • Rules – Users can create and apply complex rules to assist with organising emails

In contrast, most other message system provide rigid ways of viewing messages and unless requests are dealt with in a short time frame, they are easily and quickly lost in the noise. The users have very limited options for organising the messages in a way that suits them.

2 – People want to protect themselves and their data

With email, the sending party and the receiving party both have a copy of the email that they can govern according to their information management policies. This becomes particularly important when that email contains information that needs to be treated as a record, or if important information is stored as an attachment.

The attachments on an email can be both an advantage to email and it’s Achilles heal. Too often people send around a document (that is a work in progress) and you end up with no version control and people working on multiple different copies of it. A much better scenario is to have the file stored in a central system (e.g. SharePoint or OneDrive) and share out a link to the file so everyone can work on the same file. Once the file is completed though, and especially if it is an important document or deliverable to an external company – that document is of high importance as a record to both parties. By sending the file via email both parties have their own copy to retain for their records. Imagine if you were issued with a project scope document which you agree to (which is stored in the sending companies Document Management system) – you view and read the document via a link into their system. Now it comes time to deliver the project and they fall short on delivering to the agreed scope. You go back to look at that project scope document only to find you no longer have access! Not a situation many businesses would allow themselves to get into. So while external sharing works during the collaboration process, I don’t think it would satisfy the document management or records management requirements of both sides involved.

3 – People want to get the job done, not think about which tool to use

social-media-mess-cameron-dwyer.pngYou can rely on anyone you want to communicate with having an email address. The same can’t be said for any of the other platforms. Unless you communicate with someone regularly, you probably have no idea what messaging platforms they use, and it’s a large burden to put on someone to force them to create an account and join up to a messaging platform or social network just so you can communicate with them.

Knowing that not everyone is going to be on the same messaging platform implicitly means that this is not going to scale and you are either going to have to use multiple messaging platforms or fall back to a common platform that everyone has at times – which is email.

4 – People want simplicity and their time back

scoail-notifications-overwhelming-cameron-dwyer.pngMost people I speak to would love to have more time in their day. They struggle to process all the information that is thrown in their direction and to stay on top of what they need to action and respond to. Take myself, I get messages and information coming at me from email, Yammer, LinkedIn, Teams, Facebook, Twitter (and I’m sure their are others). If I had all the time in the world I would proactively go to my email client, Yammer app, LinkedIn app, Teams app, Facebook app and Twitter app to check those unread notifications and unread messages in feeds. This works if you’ve got time to “do the rounds” constantly and respond immediately, but that’s rarely the reality. What I find happens with most people (myself included) is that for each of the messaging platforms I go into the settings and I get it to notify me of any direct messages by sending me an email, and maybe get it to send a summary email every day/week of the top things I’ve missed (if the platform supports this). Now I just have to monitor my email inbox and I’m not going to miss anything important (like a direct message to me) and I have a rich toolkit to set followup flags, categories and reminders. If I’ve got time then I might go to the individual apps and use their beautiful interfaces to stay on top of things, but the majority of the time I’m content that anything important will come to me in my inbox.

5 – People don’t want to be locked in

locked-in-cameron-dwyer.pngThis I feel is probably the biggest issue underpinning the success of the current wave of messaging platforms. They are backed by companies that want to lock you in to using their service. This makes sense, at the end of the day they are running a business! This means it is in their best interest to behave in the following way:

  • Once you have your data stored with them, make it hard for you to take it and leave
  • Closed to members only – they want you to get the people you are communicating with to “join” their platform thus trying to steal users from their competitors and win more market share
  • Don’t integrate with other messaging platforms – how great would it be if a Facebook user could send a message to a Twitter user or Teams user? One standard for messaging between platforms? Great I don’t have to join a heap of different providers and setup all these accounts, sounds wonderful; But what do these companies stand to make out of that? It’s not going to increase their active user count.

To the contrary, no company “owns” email. A lot of companies provide email services, but the email protocol is well known and these system will all happily talk to each other and we enjoy an email environment where we can send a message to someone else without having to consider the email provider they are using. It is usually possible to export email and take it with you should you want to change email providers or systems. This type of export or change of provider just doesn’t make sense in most modern messaging platforms.

For these reasons, if I were forced to only keep one messaging platform and had to throw away the others, email is the one that would stay.

I recently spoke with Jeremy Thake in an interview that discussed the place of email in the Microsoft ecosystem that discusses these topics and more.

Microsoft MVP Award 2018-2019 Office Development

Cameron Dwyer MVP Office Development Award

Excited, proud, honoured, humbled, grateful, stupidly happy…. all emotions that hit me simultaneously as I opened the email that gave me the news that I had been presented the Microsoft Most Valuable Professional (MVP) Award for my work in Office Development.

I’ve been incredibly fortunate to work with some really awesome people both in the community and at Microsoft through my time at OnePlace Solutions. I love sharing knowledge and hearing what others go on to do with that knowledge. While I started this blog very nervously many years ago, it has been a very rewarding effort through which I’ve received a lot of feedback and gratitude. I’m honoured that so many people subscribe, read my blog and see value in it. A big thank you to all those that have given me support, feedback, advice or simply read one of my articles 🙂

MVP LogoThis award is given to exceptional technical community leaders who share their remarkable passion, real-world knowledge, and technical expertise with others through demonstration of exemplary commitment.



Photos from the European SharePoint Conference 2017 (Dublin)

Newcastle Coders Group talk on Transitioning to Modern Office Add-in Development November 2017

imageI had a great time on my first visit to the Newcastle Coders Group this week. It was nice to meet some passionate developers and hear what people are up to outside of my usual Microsoft sphere.

Thanks for having me talk about modern Office add-in development. Here’s the slide deck from the evenings talk.



Sydney SharePoint User Group – The Transition to Modern Office Add-in Development

sharepoint-user-group-community-sydney-cameron-dwyerI had the pleasure this week of speaking at the Sydney SharePoint User Group on the topic of transitioning to the modern Office Add-in development model.

We discussed:

  • The existing COM/VSTO Office Add-in development model
  • The reasons and drivers for needing a new development model
  • What the modern Office Add-in development is and how it works
  • Benefits of the modern model
  • What this transition means for Office developers
  • A look at the typical modern add-in technology stack and discussing some of the options
  • The wider Office Developer Vision (Extending Office through add-ins + accessing Office 365 data via Graph)

Thanks to those who attended and as promised here’s a link to the slide deck from the nights presentation.

Transitioning to Modern Office Add-in Development (slide deck)


I’m talking modern Office add-in development at this months Sydney SharePoint User Group

cameron-dwyer-circleThe Transition to Modern Office Add-in Development

Microsoft SharePoint is developed by the same team responsible for the Microsoft Office desktop applications. There has always been a strong connection between these products. Up until recently, developers who wanted to integrate Word, Excel, PowerPoint with SharePoint would use the COM add-in model. But now Microsoft has a new Modern Office Add-in development model.

In this month’s session, Cameron Dwyer – CTO at OnePlace Solutions – will discuss the high level architecture of this modern add-in model, the new technologies and choices involved, transitioning developer skillsets, advantages / disadvantages of the modern model. We will mix in a bit of Azure, Angular, TypeScript, Office 365 APIs, Office UI Fabric, Authentication, and maybe some Applications Insights and DevOps.

OnePlace Solutions is a local success story. Based in Sydney, they have developed products using Microsoft Office COM add-ins.  They are one of the first companies globally to have launched add-ins based on the new model for the desktop, iPhone and Android platforms.

For more details on attending this free event in Sydney on 17 October


Microsoft Ignite 2017 Highlights for the Office & SharePoint Developer

What a massive week in Orlando for Office developers. So many sessions, so much new information, it really was a case of drinking from the fire hose!

Thankfully most sessions were recorded and are progressively being made available along with the relevant slide decks on https://myignite.microsoft.com/videos

If you only have time to watch one session my pick for the SharePoint/Office Developer would be Accelerate your digital transformation with SharePoint and OneDrive presented by Jeff Teper, Dan Holme, Omar Shahine, Naomi Moneypenny. This session was just non-stop announcements on what’s new in SharePoint, Office and OneDrive. Some of the announcements:

  • Office 2019 is coming (Office clients, SharePoint, Exchange, Skype for Business servers – all servers to be available on-prem) – preview due mid 2018
  • A SharePoint specific conference (backed by Microsoft) is coming back in 2018 – and yes it’s going to be in Las Vegas
  • SharePoint hub sites to group related sites together, share branding and navigation and provide rollup of some information
  • SharePoint site provisioning model to allow for scripted customizations during the provisioning process
  • SharePoint Company Theming and an online tool to help (https://aka.ms/spthemebuilder)
  • SharePoint File Preview webpart (supports over 270 file formats)
  • SharePoint Migration tool to move SharePoint content from on-prem to the the cloud (Office 365)
  • Improved external link sharing
  • OneDrive – deeper integration into Windows 10
  • Improved large list support
  • New version of the SharePoint mobile app

Going one level deeper into the Office/SharePoint developer world, here’s some of the news that came out regarding:

Microsoft Graph (Build smarter apps with Office using the Microsoft Graph (Yina Arenas))

  • Generally Available
    • SharePoint Lists
    • File Versions
    • People API
    • App-only support for OneDrive
    • Access to Outlook shared calendars, contacts and mail folders
  • In Preview
    • Graph Extensions for Azure Functions
    • Outlook Categories
    • Outlook Rules
    • Outlook Email Headers
    • Outlook Rooms

Office Add-ins (What’s new and what’s coming for Outlook add-ins (Wey Love, Harshit Kumur))

  • Generally Available
    • Outlook Add-ins for Android
    • Single sign-on API (Web clients)
    • Auto-open task pane
  • Preview
    • Single sign-on API for Outlook
    • Centralized Deployment for Outlook Add-ins
    • Adaptive card support in Outlook (OWA)

SharePoint Framework and Patterns and Practices

  • SharePoint Framework became available on-prem with SharePoint Server Feature pack 2 (this was released a couple of weeks before Ignite)
  • SharePoint Framework Extensions – custom snippets on every page (aka delegate controls) context buttons/actions, customized field rendering
  • Reusable controls and Office Fabric Core

One of the more complex areas of doing modern Office development is authentication and authorization (especially when connection back into Office 365 services). This story is becoming a lot simpler if you can go exclusively through the Graph API. Vittorio Bertocci did a very entertaining session (Office development: Authentication demystified) that really shows you an on-rails experience for how to accomplish this from many different technologies and context. It is well worth a watch and has the potential to save you a lot of time and head scratching. This area of Office development has changed drastically over the last couple of years and there is a lot of conflicting information on the web and much of it is out of date.



Yina Arenas



Vittorio Bertocci



Wey Love

%d bloggers like this: