I joined 365 Days of Cloud podcast hosts Rabia Williams and Mark Powney to discuss the journey Office Add-ins has taken over the last 10 years and why I’m so passionate about the role add-ins play in joining our systems together and delivering real productivity and efficiency gains for our workforce.
- Why I believe Office Add-ins are the underrated productivity enabler
- Microsoft Docs – Developing Office add-ins
- Microsoft Learn Module – Introduction to Office client customization with add-ins
Transcript (auto-generated for your comic relief)
Speaker 1 Cameron Dwyer is our guest today. He is chief technology officer at one place solutions. He's also an MVP and great contributor to the dev community here in Australia. Welcome and thanks for joining us here on 365 days of cloud camera. Great video. Thanks for having me now you work at one place solutions. It's basically been a long history of developing customizations for office apps. Speaker 1 Is it fair to say you've seen a lot of changes in the approach to developing customizations for office? Speaker 2 Yeah, I'd say that you can definitely say that. I've been sort of in this space since around 2007, so well over a decade. And in that time we've seen certainly a lot of change in the way that. Speaker 2 We can develop office add-in's cool. Speaker 1 And you know it all started I guess with like everyone knows of the product called one place Mail right? It started with with that as an outlook add-in. As I understand it is. What was it like back then with with that add-in? Speaker 2 Yeah, that's that's where our story started. As a product development company. And in those days it was. Speaker 2 An outlook addin adjust for outlook on windows and we're really trying to solve the problem of people getting information into SharePoint quickly and easily. Speaker 2 And Microsoft really didn't have a story around how email plate, part of that story up inside of SharePoint so will out will really about getting email attachments off emails stored up into SharePoint where they could be stored essentially in play, part of a bigger solution that people were building up inside of SharePoint. So that's sort of where OnePlaceMail started. Speaker 2 And that was done in those days as what were referred to as com or VSTO Visual Studio for tools for office add-in's. Speaker 1 And I was going to say the the development story back then was quite a different one to what we're used to today, isn't it? I I remember distributed common com plus and all those kind of client side very. Speaker 1 Library heavy technologies, right? Speaker 2 Yes, that that was very much the world we were living in. It was wasn't the ideal development platform by any means. It was it was. It was tough to developing a lot of this was unmanaged code, so a lot of the memory handling had to be taken care of. And yeah, the. Speaker 2 It was tough. It was tough development in. Speaker 1 Pre net even. Speaker 2 Some of it was, yes. The extensions Visual Studio tools for office was based on net, but all of the object model of Outlook was all unmanaged code, so if you didn't release objects and get rid of them, they would say hanging around and this would lead to you know badly developed addons would lead to sort of hanging performance issues, glitches in the host application. Speaker 2 And that's that's why the cool reasons that we that we've moved away from that development model because it was. Yeah, it just could have some bad outcomes for users. Speaker 1 Yeah, right, and it was a bad old days, wasn't it? I mean, we've we've progressed A long way and I think that the API set that you work with today. I mean in the office space broadly, I mean. Speaker 1 Personally, I've I've mainly stuck with the web development side of things and SharePoint framework and very much you know browser based code which you know you have to sit within the rules. But then there's obviously the API's that we can call to integrate into office and work with teams or work with outlook or. Speaker 1 The male experience, perhaps, is it? Is it a different sort of perspective that you have to have now on on how these solutions get developed, do you think? Speaker 2 OK, well let's let's walk back in history. I mean because we were developing addons, the addons would end our integrating with SharePoint. The addons would be remote from SharePoint, so we were having to talk. Speaker 2 To SharePoint with the code not running on a SharePoint Server. Now in the early days of SharePoint that wasn't what SharePoint Development was about for doing SharePoint development you were developing full trust code which was you would write things that would compile to DLL's. You would install those on a SharePoint Server and you'll be communicating with SharePoint from the SharePoint Server itself. As we were writing addons we didn't have that luxury because our code would be running on client machines inside of outlook. Speaker 2 We had to communicate with that SharePoint Server remotely and within those early days it was the the API's that were available to us were very minimal and we're doing this through front page server extensions. We're doing this through generic protocols and some of the early APIs from SharePoint where web services. Speaker 2 But if we. Speaker 2 When we force Fast forward to today, we're still doing this remote development. We're still communicating with SharePoint remotely, but that has transitioned when you look at the SharePoint framework is that this is also how SharePoint development is being done today, and part of this is driven by the way that SharePoint is hosted in the cloud. For us, it's no longer safe. Speaker 2 For us to be writing code, deploying it to a SharePoint Server that maybe that Microsoft's running in the cloud and could be shared with others. The model just doesn't work. So today SharePoint development you really are using these remote APIs you're talking to share point even though even though your extension is running on a SharePoint page, you've really gotta think about that development methodology as your. Speaker 2 Writing code that could be running anywhere and it just happens to be able to call into SharePoint so it's it is a remote API and we can leverage those same remote APIs when we're developing office add-in's as well. Speaker 1 For the office add-in side of things is that is that where it's migrated to? I mean, do you work today with with anything that actually hits? Speaker 1 The client app at all in in any addons development today. Speaker 2 We still we still do. We have almost like the different strands of products that we develop. We have a long history of doing these, adding developments well over a decade, so we still have some very feature rich applications that run on those old VSTS. Com add-in. Speaker 2 Development technology. And then there's a richer API that's available there where some of their more modern products where we're leveraging the more modern development architecture. Speaker 2 And, uh, those ones aren't aren't integrating directly with the client side of things, they're more integrating in using back end API's to give you an example of how that really is is transitioned and change like in the. Speaker 2 In LVS to sort of addons. We talked to the outlook. API's and really the synchronization of things going back up to a server is based on the exchange back end, so that that allows us to do things on the desktop client in outlook because you can connect in things like a a Google Mail or even local PST files were able to do integration between those and SharePoint. Speaker 2 Because we're just talking to a a client outlook object model and that client in outlook knows Ken connecting to different sorts of Mail system. So our software offerings under that model can can work in a broader spectrum of scenarios. The modern modern one. Can we just sort of bound to the Office 365 mile? Speaker 3 Talking about APIs, I'm just curious for your addons. Speaker 3 I because you're using outlook outlook products, one drive SharePoint. How? How much are you using the graph API's for this and are there any gaps that needs to be filled? Speaker 2 In sure we've very much work on the on the vision that we want to be graph first so whenever we're looking at a new piece of functionality. Speaker 2 We will try to use the graph if that's possible. Now the graph is is maturing and really when you look at the graph there's there's different product teams within Microsoft underneath the graph beneath the graph. So what was traditionally an Exchange Server that you would be integrating with that is forms part of the graph? So we've got sort of slash main slash Mail. Speaker 2 And that's really hitting an exchange workload under the covers. If we look at SharePoint, that's sort of slash sites within the graph, and that's the SharePoint workload underneath, and similarly drives get you through to your one drive, so there's all these different workloads of Microsoft that are sitting behind the graph and the maturity of it. You can really look at the maturity of the different areas of the graph are really based on the workloads that are underneath and how much. Speaker 2 If it is being done by Microsoft to bring that workload through to the graph, and how much of the functionality have they brought through so as the different workloads come onto the graph, you see it's more a basic sort of integration or surfacing or functionality. And as they've been with the graph for longer, more functionality is brought up to it and is leveraged. Speaker 2 Some of the newer workloads that didn't exist before the graph are coming on in the graph. Easy on the API to them. So the sort of the coverage of the feature set that you get varies depending on what you're trying to access the graph or. Speaker 1 Yeah, I'd imagine part of that is, you know there's there's a bunch of I was about to use the word legacy, but it's probably not the right word. It's a bunch of existing capability in the Office 365. Speaker 1 Ecosystem plus new functionality. New capability. I can imagine, sort of herding that all together into a single API experience that is, Microsoft graph is quite a challenge when you think about it right? Like it's, it's not. It's not a small ecosystem, is it? Speaker 2 It's it's not an I think particular products with their history. Speaker 2 Have a harder time than others? Um, and some services. 'cause if you think about some services only exist online they only make sense as an Office 365 offering. But if you take something like SharePoint there is a SharePoint Server 2019 that lives on premises now. Graph is not going to be available to that. They needed development story on premises SharePoint. Speaker 2 Needs an API that's not graph as well. Yeah, so it's it's very hard for for when you look at that perspective in that they can't just get rid of their own API, they still need to provide an API for on premises standalone server implementations, as well as exposing that through the graph so it it can get quite challenging and quite complex. Speaker 3 Yeah, also with regards to integration from from. Speaker 3 Office addons do. Do you have products that integrate with teams as well? Speaker 2 Yeah we do. So the integration that we have with teams in the moment I talk you through the just a brief overview of the one place Mail scenario there. So we have the ability as well as saving email and attachments into SharePoint. We have the ability to save into teams into channels within teams, so moving that conversation from email. Speaker 2 Moving that across the teams, maybe it's an internal conversation that you want to have in this much quicker to have that through teams and it is over email, so being able to to move the the whole email and attachments or attachments off it into a teams channel and start a conversation or from within your outlook client. Now all that that's not a teams app because we're not surfacing new features and functionalities inside of teams. Speaker 2 But rather, it's one of these remote APIs that we're remotely doing things inside of teams from the addons are sitting inside of outlook. Speaker 3 Yeah, and it kind of makes sense because you want the these conversations to happen in one place, not just switch context between the male and the teams. So it kind of makes sense, and it's really useful I guess. Speaker 1 These scenarios it takes us back to that that I guess that concept that you're describing earlier, Cameron around what we're doing now, is developing addons that sort of filling a need to. You know there might be a PowerPoint plugin as as you described that that allows you what's built into the product. Now it allows you to adjust your slide to make it look. Speaker 1 More for the presentation at hand. Speaker 1 Um, that's sort of the model. The way we're moving to now is as developers, where we're providing just simple add ONS on top of things to fulfill. Speaker 1 User stories right user scenarios. Speaker 2 Perhaps and then yeah, that's that's exactly how I how I see it, and that's how I've seen it for a long, long, long time. And that's why I'm so passionate about addons. Because when as developers were tempted just to crack something open and build something from scratch. But the last thing users want is another application that gotta start up. Speaker 2 But they've got to have the presence of mind to think, oh, I'm achieving these tasks. So I've gotta start up three separate applications to get these tasks done. The whole value of addons is that people are already trying to achieve a task in an application. Bring that functionality that you're trying to develop to the users in the applications that they're already using. If you can do that. Speaker 2 You're going to minimize these context switching that the user has to go through an I think like it's. It's been said a million times about this context, which you can how unproductive it is, but I often like to just bring it back to someone else. I've got slide decks that I sometimes go through just to to show this scenario, but you might be trying to create like an invoice in Word or something like that. Speaker 2 But if I actually step through you sort of, you start word up and then it's like, well, I'm not going to start the first of these from scratch, so I'll go and I'll open up windows Explorer. I'll I'll open up a web browser to SharePoint. I'll go on search where I've stored other invoices, and then I'll open up maybe three or four because they're all slightly different. I want to get the closest one that matches, so I don't have to waste my time. Then I'll copy that. I'll paste it into mine. OK, we got a starting point. I've now got. Speaker 2 To SharePoint browser windows, open Windows Explorer. I've got three instances of word open, but I've got a template that starting point. I cut some stuff out. Now I need to put our product line items in, so I'll go off to my product list somewhere in some other system, or fire that up. I'll get the values of them and I'll put them in there and would actually start up Calculator app on the machine to. Speaker 2 Figure out you know on a 10 at this price 12 at that price. By this stage we got 15 applications open on my taskbar and then it's like, well I've got to address this to a customer. We get that from we're gonna open up my CRM system. You got all of these windows open on your desktop and then someone comes to your desk or you take a phone call and you come back to it at the end of that. If your brain works. Speaker 2 Anyway, Neil like mine does. I look at all those tasks and all those windows and I think what on Earth was I doing and I start closing them down until I get my brain gets back into these comfortable zone and then you start the whole process again. It is really, really inefficient. Imagine and this is the power of addons. If users are going through like process is in your organization and that are repetitive. Speaker 2 Didn't rather than them being forced to go to all these different applications that look at that use case from start to finish, and if there in that example they were living inside of word, imagine if we could bring the product list in sidebar and adding imagine we can bring the CRM data environ add-in. So you could just insert all the customers data and it's it's. It's even worse than that. Like if you take a CRM record. Speaker 2 I've never seen a CRM system yet that I could just do one copy paste to get the details. You've gotta select the first name, copy, paste, switch back and word paste, go back to your CRM last name. First line of the address, second line leaders. Thirdly addresses. Just this shovel control C Control V Control C Control V Alt tab. Speaker 3 It's like when you talk about it that way. It feels like this should be the first priority when you think about developing custom solutions, right? Speaker 2 So exactly as you're saying, Mark what you've really got to have in your mind is put yourself in the user's shoes. An look at a use case scenario from start to finish and think of what can I develop and what do I need to bring in to make that user's job easier to streamline and keep them focused on the job that they're trying to achieve. Speaker 1 I think that that really summarizes. Speaker 1 Quite well, the maturity of the IT industry and how you know we think about back in the 90s or the early 2000s. You know it was all about bringing technology to people and thinking about all that might be possible, but now we've kind of got to the state where so many things are possible. Speaker 1 It's just a matter of how to apply those technologies in the right way, and it's set once a human centric design, or I think that's a That's a term that's bandage around a bit, but it's kind of thinking about what, whatever, what your users actually have to do to achieve their goal. Speaker 1 It's like this is where it's at now. Speaker 3 Empowering them to do their work well rather than confusing. Speaker 2 Yeah exactly, you know, I think we've never been as a firm from a developer's point of view as far as the Microsoft 365 ecosystem goes is we've never been in a better position to be able to do this. And the reason I say that is that. Speaker 2 With combined things, because most people are in the cloud now you have one single identity across the different things that you're going to be trying to integrate. Speaker 2 Um, so you can leverage that identity to go and fetch information on behalf of the user. And if if the product that you're looking at integrating between our Microsoft products, then it makes this so much easier and less and less. Do you have to concern yourself with or are they going to have SharePoint? What version is it going to be? Are they going to be running these different applications? Speaker 2 Be cause it's one coherent system out there and this is what's allowing Microsoft to do these sorts of integrations themselves. Now is because they know what what services are available to a customer, because in the old days you couldn't just assume that they would have an Exchange Server of this version of SharePoint Server. If this version is search server of this version. Speaker 2 They're gonna have this skew. Speaker 2 Of the different desktop applications, all of that now is known, and it's a given and that makes integration so so much easier that as an ISV is was one of the real big challenges and one of the big values that we provide as an ISV. Specially when you got this stuff running on premises. Is this just myriad of different version combinations? Speaker 2 That we just dynamically detect and handle, but a lot of that, and that's why I say it's never been a bit of position from a developers perspective to be able to do these types of integrations because it takes a lot of the variables out. Speaker 1 It's interesting you're referred to the identity. You know, it's all about knowing who the user is, his his working in in, in front of their PC. Speaker 1 And you know, knowing what they actually have available to them and an being able to centralise that in a in a singular way is actually really, really important, because if we're designing a solution that is human centered, we need to know who that human is, right? We need to know what they, what they can do, and what they have access to and. Speaker 1 I think as well as as some element to this like it's great in the Microsoft ecosystem, but it's starting to expand beyond that as well. When we've got identity. Speaker 1 Available to talk to other vendors capabilities. You know you start to see that expand and expand, and so again, it's all centered on this. This the concept of identity and bringing those together in whatever form that. Speaker 2 They might be. Yeah, I I totally agree. And when you look at things like the power platform. Speaker 2 And that's sort of. This is what's being underpinned by being able to take your identity and sort of use, or connect the different Microsoft 365 products, which is what you're doing with the with the power platform you you're moving data between your leveraging different pieces of the of the stack, and the only reason you can do that is because it knows who you are from identity perspective. Speaker 2 And then being able to connect that to external systems. That's how we're getting these being able to users to be able to create flows on their own that works with different workloads inside of Microsoft 365. All of this is 100% underpinned by identity. Speaker 1 Now, um, you're obviously I said at the beginning of this conversation, you're quite prolific across the community. You're a great member of the community from the Australia, so you're representing Australia or I guess in in a great way as being one of our MVP's, of course, and the upcoming events. Have you got any any? Speaker 1 Interesting things to lookout for in the coming weeks months. Speaker 2 Well, with ignite on top of this, There's going to be a wealth of information coming out of ignite from a sort of a business features and functionality in Microsoft 365, this is the biggest conference of the year to hear those announcements and this year it's being delivered virtually so. Speaker 2 You know it's it's never been more iaccessible to you know stay stay relevant with the new announcements that are coming out from your land room or bedroom or wherever you have set up and bunkered down. Speaker 1 Hopefully it's on demand as well. We can. We can always look back at the sessions that were made available at some knew innovation. I guess with the gnu normal, that is where we're at. Speaker 2 Right now, yeah, so it's. It's certainly the ignite is gonna be it's it's going to set the future for the next 12 months. It's gonna set the vision for what we can expect to land. Speaker 2 And sort of. Outside of that, from a developer perspective, there's some Microsoft 365 developer boot camps that will be running all around the world there hosted in different cities, and those are coming up in October and November of this year. Speaker 2 And I'll be participating in the European SharePoint Azure Conference in October as well, so there's there's plenty coming on this. This end of the year is traditionally conference heavy, and so there's there's a few big ones that I'll try to get to. You can't do them all, but for us living in Australia, we're often. Speaker 2 Distant from it, so being virtual at the moment, I am able to actually participate in more than what I normally work. Speaker 3 Yeah, that's interesting, and one of the main topics you are discussing. If it's OK to share with us. Speaker 1 Yes, a quick teaser. Give us a quick teaser coming, yeah? Speaker 2 OK, so at ignite I'm on a table talk and I'm going to be talking about security, which Interestingly, isn't topic that I would normally be speaking about, so it's a It's an interactive talk where we really want to hear from attendees as well. It's not a traditional presentation where the audience is being spoken to. If you like it, but it's more. Speaker 2 Unmute yourselves, come off and let's talk. Have an open conversation about security and there's five of us Co hosting that and we all come from different backgrounds. Now my background isn't security, my my background is development but you know, cloud world developing software as a service application. Security is paramount and having trust in your vendors is paramount as well, so it's a It's an area that I've. Speaker 2 Increasingly, we had to become more and more involved with, and I think a lot of people, especially developers, starting out, would struggle with, and there's a. There's a lot that is available to us that helps us out inside of Azure and in sort of inside of the Microsoft 365 admin sort of portals and areas to do with compliance and how we can ensure that our services are secure. Speaker 2 Anne Anne Anne help keep our customers protected. So I'm going to be participating in it from that regard and I'm really looking forward to it. As I said, it's not something that we typically do, but I'm really looking forward to engaging and speaking to people about it and hearing what the challenges are. Outside of that, I'm probably doing more more typical talks, so I'll be talking at. Speaker 2 You're paying chip with an Azure Conference or building office add-in so going through all the extension points across all of the different office applications? What you would use them for what vendors are using them for what it makes capable but it's very high level. Sort of very little, if any code. It's really just demos and what are the building blocks once you understand them? Speaker 2 You could start to conceptualize. OK, I could build this or that means that I could light up these scenarios. So that's The talk I'll be doing there and then I'm involved in the Australia, New Zealand globe, part of the global boot camps. So we're doing that across four different days, and we're going to be doing each day is going to be targeting a different area of technology, so. Speaker 2 Like one day on SharePoint Development, one day on teams development I'm leading the one on graph and graph toolkit development. And what do we want to power platform as well? Speaker 1 Nice keeping very busy for this. This end of the year. Even in these covert times where we can't travel as much it's. Speaker 1 Great to see. Do you think it's you have been able to do more? Actually in in these, you know, working from home times or is it being pretty much the same in this season or? Speaker 2 It looks from a human perspective. I've found it very different from I've actually found a more inclusive. Speaker 2 If you take away the time zones, yeah, because a lot happens in the middle of the night for us. But what? What is being a leveler is that? Speaker 2 Everyone is been bunkered down at home, so everyone's been connecting in remotely and I think that is being a bit of a leveller because at times we can feel a little left out being over here in Australia when a lot of the activities happening in in America or attacking in Europe, but all of a sudden everyone is connecting from their own home and it doesn't matter if I am. Speaker 2 Just across the street in Seattle, or if I'm sitting at my home in Sydney, everyone's in that same boat, so it's it's it has been a little more inclusive like that and I don't have to waste two days trying to travel over the other side of the world to be included in something I can't do it from home and then go make myself a sandwich. Speaker 1 As fun as a travel is, I mean, you know, depending on your. Speaker 1 Desire to get into a tin can and fly, you know? Speaker 1 24 hours, you know. Some people like it, but uh, more than others. But yeah, yeah, it's an interesting sort of way an you are. I've experienced the same thing. It's been the leveler is it's a great way to put it. Actually is is everyone else is connecting remotely to each other. They're not necessarily having meetings in the same room so it's easier to get in on that conversation and. Speaker 1 Time zone permitting. Of course, to be to make yourself available for it. So thank you very much, Cameron, for joining us on 365 days of cloud. Appreciate it. And as you've listed out, there's a number of things you can we can keep up to date with your latest thinking and your latest musings and. Speaker 1 You know, experimentation into the security field that through the through through these ignite sessions. So thank you very much for taking the time out to join us on the podcast. Speaker 2 So you're very welcome. It's been great to chat.