Michael Stephenson explains how Microsoft Flow can simplify DevOps processes like user onboarding, particularly in a large multi-business and multi-geo CRM implementation case when multiple parties are involved.
Integrate 2018, June 4-6, etc.venues, London
Hello everyone. So our next speaker is well known to our community. He’s a highly experienced integration and cloud architect who has worked on Microsoft Azure technology since they first came out. So please welcome Michael Stevenson.
Michael: Hi guys. So this is, I’ve kind of got the tough slot this morning I think, because Richard and I have both got the honor of third morning early start, a couple of people seem to have kind of been lost in the journey and a few casualties, but we’ve got to tee you guys up to get through the third day. So the other thing that’s happened is with Johann’s session being moved, that means I’ve as well as following Richard I’ve now the biz talk automated deployment session after me, which we know from Integration Mondays was the most popular session, so I’m kind of sandwiched between two of the best sessions, so I’m going to have to up my game a little bit to keep up with this, but…I’ve got a little bit of a change to my session.
So originally I was going to do a talk about C.R.M, but I kind of felt that 40 minutes wasn’t really enough to cover all of the things I wanted to say about the different options for CRM integration, so we’ve done a little bit on Integration Monday about that in the past, and we’re going to do some future stuff. So I have this idea about a different session around DevOps, which it does include an element of CRM in it anyway, but I thought this particular session I had some really good feedback when I did it recently. And what I’m hoping is it will kind of inspire everyone with a few ideas, that you’ll all get a takeaway and possibly do something on the back of what I’m going to do today that will make everybody’s life a little bit easier at work.
So it’s going to be about DevOps, it looks like twist on DevOps but we’re going to look at how we can use Microsoft Flow to empower our DevOp processes. So for all you guys who might not know about me, so I’m cloud integration architect, I’m one of the guys who helps organize and run Integration Monday, there’s my Twitter, I’ve been an MVP for quite a long time. Something that you might not know about me as well, is I’ve actually been roped into doing the UK Truck Pulling Championship this year for charity, which is not something I’m probably built to be able to do but we’re going to be trying anyway.
So it’s for a really good cause and I’ve put something on Twitter, so if anybody wants to follow our journey through the next four months of training or would like to sponsor or maybe see the event, there’s a bit more about it. That’s a little video of me training, I think just to big myself up there’s about 300 kilos on that thing we’re pulling and pushing, so we’re, you know we’re working pretty hard on this.
So what I want to talk about today is a real-world scenario, to set the context a little bit is I’m working on a project for a while now where it’s kind of a company that has multiple businesses around the world, we’ve got a head office, we’ve got regional businesses in most countries. We’re trying to build, I guess in the past if you imagine all the businesses worked in isolation, we’re trying to build global solutions that work for multiple businesses at the same time. So it’s really like a multi-tenanted solution and we’re bringing on each business as we go through this journey. Now a large part of our architecture space around dynamic CRM is a really strong integration element, as you can imagine because every business has different technologies, different capabilities, and the fact that we’ve got Azure and Biztalk and all the, you know, Service Plus and all the good stuff in the cloud that gives me a lot of options for how I deal with these different companies. So within this project, one of the interesting bits is how we do the authentication. So we use Azure AD to do the CRM authentication, but each business actually has their own AD tenant. But we need to bring all the users into a shared CRM environment, so there’s a B2B element of that.
And what I want to talk about is really the onboarding of users in this scenario which I think you guys might find quite interesting. Now what the I guess the background of the talk is a few months ago I’m sitting in a Agile retrospective, and I’m sure anyone who’s working on scrim teams and Agiles seen these retrospective diagrams before. And one of the elements that they talk about is what are the things that kind of slow us down and get in our way, and the idea on this diagram is that’s represented by the things hanging off the anchors of the ship. And I’m not going to go into all the spiel about how this agile bit works, but the thing that I noticed in the meeting was as our project went through releases and we build more features, a lot of the things that pull us back tended to be ad hoc support processes that suddenly became something we had to deal with as a side-effect of the project we were building.
So if you imagine one of these things, we hadn’t really planned upfront about all the on-boarding and off-boarding of users because we were really focused on business features, whereas that tends to be a bit more of a behind the scenes thing. And what kind of happened is all these processes just slow the team down, because you’re spending time dealing with these, not delivering things of business value. So what I was thinking was, you know, some kind of investment in automation around these would be a really good way of freeing up our team to do things that we want to do rather than things that get in the way.
So if you think about DevOps with that in mind, I kind of threw up there a Cool Wall for DevOps, so you know most people will be familiar with all the things I considered to be the usual DevOps practices, like automated tests and automated deployments, automated build, all those sorts of things that people like talking about. But the one that people never really talk about is your DevOps team always has these other processes it has to deal with. Often they’re ad hoc, they’re very different from company to company, maybe team to team, but these are the things that you end up spending quite a lot of time doing and they’re difficult to do something about.
So what you really want to do is either get your lower level support teams doing them, or try and get rid of as much of the manual work out of them as the counsel, you’re focused on doing high-value tasks and that’s what we’re going to look at today.
So going into the context of the project a little bit further. I mentioned that there was this Azure AD B2B setup, so if you imagine here we’ve got a scenario where three of our businesses all have their own Azure AD, they all have their own Office 365, they all have dynamics possibly themselves, some do some don’t but they’re all on their own kind of cloud journeys doing what their business needs to do. Now when we come along at group level and we add this thing on top, the group business doesn’t really have employees as such, it has some kind of auxiliary employees, but it doesn’t really have front line customer facing people that tends to be in all the regional businesses.
But we wanted to build a solution that everybody can share because there’s a lot of commonality between the businesses. So what we did is we created a group level Azure active directory, created some Office 365 off of that, created dynamics. But actually really all of our users don’t live in that tenant, they live in other tenants, so if you think about the authentication journey, what we would have is a user would come into CRM, and they would try and access it, the authentication practice would push them back to the group level Azure active directory, but that would recognize that the user actually lives elsewhere and it would federate back to the local tenant to authenticate them. So the security of like password changes, joiners and leavers is managed regionally, but we can still allow these people into the group level solutions that we built. So, you know, that’s quite a really good scenario that Microsoft empowers for us there so we can build lots of solutions following this model.
Now as we go through our journey, the big challenge from a user perspective is this kind of getting people set up in that model because there’s quite a lot to it. Now when we do, when we do major releases, so when we onboard a new business we’re quite lucky that there’s a good kind of batch way of doing this. So what would normally happen is somebody who was the Azure AD admin can get a spreadsheet, can use some Power Shell, and he can load a whole bunch of users into that global Azure AD tenant. And what that does is you’re using a special feature called Invite User, so you’re inviting the user from another tenant. Which pings out a whole bunch of emails to all the users saying “come and join us in this global solution” they basically click a button and they’re all set up.
So that’s quite easy. That’s only part of the problem though, the second part of the problem is the Azure AD admin has to then give a high five to the CRM admin, and he has to go and set up these users so they would be assigned to a business unit, they would be assigned to a number of roles and a few other bits and pieces in CRM, and then once that’s done we can have those users set up and from a batch perspective that’s quite an easy thing to do with a little bit of Power Shell etc. on a release by release basis.
But the problem is it’s much harder once you’ve gone past that release and you’re into business as usual of your solution, and you’ve got, you know, every few days you get a new user who joins or leaves, that’s where the problem comes in because who’s responsible for that. and the big challenge is that if you think about this bit here, the privileges of setting people up you need quite a reasonable skill set to do the Azure AD bit, but you also need quite a bit of privileges as well, so I would be very reluctant to let somebody who didn’t really know what they were doing come into Azure AD and start fiddling around. You always think about a lot of the time you know Richard talked about some of the problems before about systems going down, but actually sometimes is not the systems it’s somebody who doesn’t know what they’re doing, goes in and breaks the system for you. At the same time the CRM admin side, again this requires a quite highly privileged skill set and quite a lot of experience to know what you’re doing. So the challenges here when we come to the real world, you know, we want to offload this task because it’s quite low value, but we can’t give it to somebody outside the team because of the privilege requirements and the skill set requirements. So really if you think quite often what would happen is your support team will be complaining saying “I don’t want to take this process because nobody’s really covering how I should do it. I’m concerned about security of it, our team is reluctant to offload it because we don’t trust the team to be able to do it in a way that we’d consider safe,” so there’s just a whole load of problems about this kind of process being taken away from the DevOps team into a sort of more front-line support area.
So this is where we came to Microsoft Flow, and the first thing you kind of think is, “Well, how can we automate that?” The problem is there’s a human element to it so you can’t really do a Power Shell script, and, you know, because the people I want to give that script to, one, they’d need the privilege to run it but they probably don’t know how to use Power Shell, but also there’s different technologies involved here so while Power Shell is quite good with Azure AD, it’s not so great with CRM, so you’ve got a few technology challenges.
Now the great thing with Flow is it brings the user into a workflow process, so I can kind of look at doing stuff with Flow to integrate doing some of these different texts together, and then use a combination of Flow and Power Apps to offload that back to the support team, so they can run my highly privileged process without needing all the technicalities of how it works. So to me, Flow is a really good candidate for that ad hoc support process when I want to automate some of it. I think Kent talked the other day about some of the approval features in Flow as well, so that’s one of the really good things where what I might do is go from actually executing the process myself, I might have somebody trigger it and I as a more privileged person might just approve it, and then I’ve got rid of instead of maybe 20 minutes every now and again, I go from just a tick in an email or something.
So what I wanted to think about was what is the process that I need to automate? So to set these users up the first thing I need to do is capture some details. We quite like the idea of a little bit of audit and of what we’re doing so we want to record and share point all the users we’re going to set up. We’re then going to do this invite from Azure AD, so it’ll do this send an invitation email to the user, they’ll accept that, we have to add the user to a couple of AD groups, so by adding them to groups that makes them magically appear in CRM the way we’ve got it configured.
One of the things that’s a little bit of a twist there’s a delay in the synchronization between Azure AD and CRM, so you can’t just do one task and go and do the other one straight away, you’ve quite often got to wait a while until that synchronization happens in the background, and then go and do the next step. In CRM we have the set things like the business unit, in Azure AD we have to assign licenses, we have to set your location, in CRM, we’ve got security roles and then at the end what we probably do is something like update the share point list to see that we’ve actually processed that user.
Now when, if you think the organization that I was in at that point didn’t have any flow or power apps stuff, so this to me was a couple things here. So number one it was an opportunity to introduce a new technology in a nice safe way on a quite low-risk thing. You can show the benefits, and this is one of the things I think a lot of people could have an opportunity when you take away stuff back home, is you want to be this I.T. hero that’s been mentioned a couple of times. So if you go back and you show a process that you’ve put together that suddenly saves you an hour a week, people will start eventually noticing that and go, “Well, how are you doing it, can I do something similar?” And before you know it everyone is looking to automate stuff and get rid of these mundane tasks. I don’t know about you guys but I find, you know, some of the tasks I’ve got to do at work some of them are really boring and not interesting, and they actually take ages to do because you just don’t want to do them, I like the things that are a lot more interesting.
So to give you an idea about how the architecture worked, this was part one, so I did this in multiple phases, so I’m going to show two pictures and then we’re going to do a little bit of a demo. Part one was really about I created a power app to give to a support user, so that was a superuser in the office who goes around and they can actually work with end users and help troubleshoot some of their problems. And that user would go “I’ve got a new person to add, so I’ll capture some details,” saves it to Share Point, that on the back of it triggers a Microsoft Flow, in this case I’m going to use Azure Automation so that lets me put some power shell in the cloud.
The good thing is the power shell in the cloud, it means as a privileged person. I can go and put that in a sandbox in Azure where I can set some credentials in a nice safe place in the Power Shell run books, and there’s some features to securely store them. It can do the Azure AD bit, but I don’t need to give that highly privileged stuff to the end user, I just let them execute it with a couple of layers of indirection in between from the power app. That basically automated my part of the job of doing the Azure AD bit, it sends the invite email, and then the first task is that the flow would go and send an email to the CRM admin basically go right, after my bit, your bit’s manual go and get it done and that was me happy because now I don’t have to do anything.
Quite quickly the CRM guy noticed that I was doing this and he’s like, “Well, hang on, I don’t like the idea that I still have to do this by hand, we need to go to the next level,” you know? Because he doesn’t, he’s lazy as well. So the great bit is that that’s exactly what I wanted him to say. so we then go in and have a look at how do we take it to the next level? So we modified the flow and we stuck some Azure functions in there. Now as I mentioned earlier with CRM, it’s not that easy to do a lot of stuff with Power Shell, but with functions, I can use the CRM SDK, so that’s really powerful and it lets me use .net code and I can do some really fancy stuff with that.
So what you’ve got to remember here is as well from your DevOps team perspective, in this solution what we’re starting to do is we’re bringing the IT pro coming in doing a bit that really fits in his world with his skill set, with his tools, we’ve also brought a developer into the C Sharp skill set, who’s writing some C Sharp code to do the CRM stuff, but we actually just track them as little widgets that we connect together with Flow and we’re making the team play to their strengths if that makes sense. So we’ve got the IT pro doing what he’s good at, developer what he’s good at and we just make it available for the support person. So at that point, we can then all this manual role set up and stuff, that’s now just done by a function that we call from the flow.
So now we’ve got to do a demo. So I don’t know if people were, you know if you were here a few years ago. I got asked to do something like what I did a few years ago with a bit of Minecraft in the demo. Kind of just for old time’s sake really, but the problem is I’ve kind of, so the last time people really liked that demo and I can’t just do the same thing again, so I’ve got to up my game a little bit. So this time I’ve now got a beautiful assistant at the back who’s going to play Minecraft with me. So Steve John is sitting over there, he’s the, just play a little bit of role play here, so Steve John’s the angry boss, he’s got a user who can’t get into CRM, And Steve John’s, he’s elsewhere in the game at the minute, I’m kind of over here I’m just hanging out, I’m hanging out near the Coke machine. Steve John’s the angry boss somewhere in the office he’s going to ping me from Minecraft, and I’m going to get a phone message which should come up any minute because right on cue. So Steve John’s sent me a message that said, “Help Mike,” we’re going to check what it says, “Help Mike, I need help fast, things are falling apart. Ahh!” with an exclamation mark, so sounds like Steve’s in a lot of trouble here. So we better go and find him. It sounds like this is going to be quite a painful bit of stuff, and I know Steve’s quite an aggressive guy, so I need to have a quick bit of caffeine I think before we go and sort this out. So I’m just going to get a quick, excuse me, I’m going to get a quick drink from this Coke machine, if I can just work that button so I’m going to get my little drink there. So we’ll take that with for now. Anyone who remembers the previous videos and demos that I did? you might remember the train demo.
Now what I want to, just a complete tangent for a minute, that train demo basically back in the day that used to stream telemetry of where your train was going as your event hubs, and we did some power BI stuff with that we had a bit of fun with it. But just to show how easy some of these services are to plug into, when we were at the conference at lunchtime on Monday, Dan Rosanova was like, “You really need to change that over to event grade.” So I took the challenge on and by the end of lunchtime that’s now talking to event grade instead of event hub. So the thing is if I can make that Minecraft talk to event grade while eating lunch in under an hour, you know, there’s not a lot you can’t do in the Azure world these days without a little bit of work.
So we need to find Steve, I know Steve’s over in that big office block in the background. Now bear in mind that we are an integration superhero, there’s a little bit of a distance there, so most superheroes can fly so I think we’ll fly there instead of walking just so it’s a bit quicker. So we’ll whip over here. And we’ll go and have a look in this office. So we’ve got a little bit of a magic door to go in, so it should open for us, and as you can see we’ve just come into the Fabricam office, now here’s the boss’s desk, and Steve Jahn would normally be sat at that desk with his feet up, I’m sure you know living the life and the fact that he’s not at his desk is not a great sign. So we know we might be in a bit of trouble so we better go and find him.
I think Steve Jahn looks like he’s over here, so you see he’s nodding his head angrily. So what we need to do now is we need to check why this user can’t get into CRM. so the first thing we’ll do is we’ll run a program here, so basically these computers I’m basically going to do exactly the same stuff that the power apps that our users do, but I just thought rather than show a newer, you know I’m not really one for making pretty applications so rather than showing a power app, I’ll just do it in Minecraft instead.
So we’ll have a check, spell it right, so we’ll go check CRM access. I’ll need to give an email address, so let’s have Steve and we’ll have my company. So ping that away. Now what that’s did is that company now executes an Azure function, and that function is going to go and check to see if that user exists in CRM, it takes a little bit different because it has to go through all these users, see who’s there, who’s not there and it’s doing a check based on email addresses. I’m waiting to see well the problem is he’s just not in CRM, so we better go and set them up.
Now the thing is and I’ll just show you guys around the office a little bit, because we’ve got a little bit of time to kill. So here’s all the hard-working, you know, probably the code it guys working away in their office with Steve Jahn, you know, doing a project of some kind. Now if I’m a real user and I’m using a power app I’m probably on a mobile device or a tablet so I’m not going to use a computer, I think we’ll just use a tablet instead. So here’s my Minecraft iPad I guess. We’ve got a little program on here called Add User and what we need to do, so we start off with the user’s email address so…okay so please supply the user’s name. Steve and there we go, so that’s starting a Microsoft flow to add a new user. It takes a little bit of time to do it so we’re going to check back later.
So at this point, I’m going to drop out of Minecraft and show you guys a couple of things. So over here we’ll see the flow should start kicking off in a minute. Now if you remember what I actually did is the Minecraft bit kicked off a slightly different flow and it writes to the share points list, which means I can kick this next flow which does the real work can be kicked off from that list, which means there’s multiple ways I can write to that list which is quite cool for demos and stuff. But what you’ll see in the background here is it picks up the triggers off a list, I initialized a variable, I’m going to do some check in later whether it’s in CRM. the first thing I’m going to do is execute the Azure Automation runbook. You see I’m going to pass some details in there, now that takes a few seconds to run. But problem is after that I need to do a bit of a delay for a period of time to let the CRM and Azure sync up so it’s going to take longer than my session, so rather than wait for this to run through I’m going to just jump into the design mode.
So the great thing, you know, one of the things when you’re looking at this, people probably think, “Well, there’s a couple of different ways I can execute these technologies.” One of the common questions is why didn’t you put the Power Shell in functions instead of the runbook? Well, one of the things, you know I played around with both, and one of the good things is the automation connector straight out of the box has all the designer stuff to support parameters and point into the runbook I want. In Azure I’ve got the gallery of run books, so if like me you don’t do Power Shell all the time, so you’re not the best in the world in it but you’re competent enough to get by, what you might do is go to the gallery, pinch somebody else’s Power Shell and then just modify it.
I also found that functions needed to do a little bit more stuff to set up the Power Shell stuff, so I just my personal preference was the automation account but if you were doing it and you chose functions that’s absolutely fine. Next we have to do, so as well as the delay, so I give it a little bit of time I also have a little bit of a loop here which calls out to a function, and all that does is just check whether the user exists, so it’s the same function I’ve just called from Minecraft, and I’m just using it in the flow to do the same check so I can see do you exist or don’t you, and if you don’t I’ll just wait a bit longer.
Then I’m going to call another function to set the user up, so if we drop in, we just drop into the Azure portal. so here you can see I’ve got the function code here. So one of the great things when you’re doing this, I’m automating me, I’m automating my team, I’m doing a DevOps thing. The thing that I really don’t want to do is be creating loads of cost for the business or having to spin up servers or anything, because suddenly it becomes not just a trivial thing, it becomes a real project that you have to justify and kind of do, you know, jump through loads of hoops, where here I don’t even really even need to do anything other than just put some code in the browser. It’s like that simple, I take advantage of all the serverless features Jeff talked about the other day.
It makes it really easy for me to create these functions. Likewise the Power Shell and the run books, so maybe we’re an integration audience so we might not be quite as familiar with run books, but it’s a great place to keep Power Shell, and you can execute it from here. and like functions although it’s not classed as a serverless product, still a consumption-based price model so I pay per execution, I’m not paying for a power shell server or anything like that, so it’s a really great way to kind of get these widgets set up, dead easy and there’s no kind of upfront hard work.
Now if we go back to the slides. So that thing over in the background I’ll get an email, I’ll be set up later and I can go and test it out, as I say it takes a bit longer than today’s session to run. But at that point, I’ve now automated the Azure AD admin and the CRM admin, so I’m kind of looking pretty good here. And what I’ve found is that in the organization people really start taking notice of what we were doing and asking questions, you know, what else can we do with this? I have the UK business who’ve been doing CRM for a few years, and they were saying, “Well, we’ve had such pain with this, it’s such a drain on our resources setting up these users constantly, because we can do the AD bit,” because they’re not the global services set up there in the UK, so they’re synced to an on-prem AD but to still have to do this, this manual set up of the CRM stuff, and they never really figured out how to do it. Well, actually do you know what? It took me about an hour with a bit of C-shop code, it’s really not difficult, the problem that they have is they just haven’t got anywhere to run the code, that’s easy and kind of makes sense. So what you can do when you start finding people take interest in it.
This is where you know adoption takes hold, people start doing other stuff for us. the next logical step after what we’ve got people, you know, people want to take it a bit further, and actually maybe the end user doesn’t even need a power app. what we could do is as a service now user we could just have a type of service now ticket, and that ticket could automatically trigger the flow if it’s got the right data in. And then we go from not even really having users involved at all. we can just do it all from the service now ticket and maybe just do an approval step. So somebody will request access, we might get a, maybe the AD admin and the CRM admin both get an approval, they tick it off and the rest of the process just happens behind the scenes. And then we’ve kind of almost fully automated which is really, you know, quite powerful then.
Now I guess you know the key question in this is we’ve automated a process, we’ve made our lives easy, we can be a bit more lazy than we were before, but where’s the real value? So the key things here in a few areas, so one, security. So I’ve got, you know, reiterating some of the things I might have said a little bit already, but I’ve taken a highly privileged task that was very security conscious in two key areas, CRM access and AD access, but I’ve been able to offload that task to somebody who doesn’t even need an IT skill set, they can just use my function and my thing as little services that contribute to a process that we can give to the support team.
So that’s pretty cool about there’s a lot of things we could do like that where, you know, the security element means you can’t offload the task to anybody. Cost saving wise, so I think I’ve probably spent, I don’t know, if you take away the stuff that I’ve done for the demo, I think it costs about 100 quid worth of man hours to set up originally. Well, 200 quid maybe will say, probably saves about 100 pound a month if you think about the amount of time we spend actually doing that admin task. The running cost of the function and the power shell stuff less than a pound a month, flow is pretty much free on the plan we get, you might pay more if you’re a bigger flow user but for us, we’re just starting off on the flow journey.
Probably from user experience one of the biggest ones is there’s not a bottleneck anymore, so what used to happen is they’d make a request for access, I’d be sitting there going, “I’ve got a million things to do and the least important one to me is setting up some random guy having access to CRM. I’ve got like things people are shouting at,” so often that wouldn’t get done until somebody had nagged me at least two or three times for it. And then it would get done. From my perspective, I’ve just got things that other people need more importantly but from the user’s perspective it’s pretty rubbish to be fair. Now the experience is much more seamless, these users are going to be set up within about an hour. The hour’s really just about delay and synchronization, but we’ve made that a much better experience for users.
And generally, you know, all of them, if you think of all the personas involved in this scenario, everybody went from a position where they’re quite frustrated because some people can’t do the job they want to do, other people are being asked to do really menial tasks that they feel are kind of not good use of their time. There’s frustration previously because people are kind of being asked to do, you know, we want to offload it to the support team, they don’t feel like they’re competent to do it. Now we’ve gotten to a place where it’s just something we don’t really think about anymore, it’s just done. You know it’s quite a good place we’re at now. And so if I think about the takeaways that I hope you guys get from today, so number one, we can automate repetitive tasks with Flow.
Everybody here probably has Office 365, everybody probably has an element of Flow free with it. so I would say jump in and try it. We you know I’ve shown how IT pros and developers can all be involved in this, so there’s no reason, you know, if you’ve got a bit of Azure, there’s no reason you can’t do really complicated stuff, I mean that was a moderately complicated one but you could take it to whatever degree you need, and it’s all about you know save yourself some time, make your life easier, make your team’s life easier. I hope that sort of makes people think of some things they can do back at their offices, and just thinking about the technologies used, so just to reiterate on a few. So we used, we didn’t really use Power Apps, but normally I would have shown it in Power Apps instead of Minecraft.
We used Flow for the workflow piece, so if it’s then that type of automation but with a benefit that the Flow is kind of bound in the enterprise, so we’ve restricted it just being users who have permission in the enterprise rather than just some random widget that’s outside of IT. We’ve got the power of bringing the IT pro in with Power Shell and all of the really good things that they can do in that space. But at the same time if you can’t do it in Power Shell, we can bring a developer in and anything you can do in C-shop, you combine those two things together there isn’t many things you probably can’t do. In our case, Azure AD B2B was really relevant because we’re doing this cross business authentication scenario, may or may not apply to your case, but hopefully, with at least the top four, there’s something everybody can do in some space back at home.
So just like to invite if you have any questions. I think we’ve got a few minutes left at the end, and otherwise, I think I’ve left a little bit of time for Johann, because I’m sure his sessions going to be a good one to fit in. Thank you very much though.
Fill the form below to get all the presentations delivered as a single zip file in your mailbox.
byJon Fancey & Matt Farmer
byMicrosoft Integration Team