Implementing ChatOps using Microsoft Power Platform || Power Platform Virtual Conference
Nov 6, 2023
Want to take your DevOps strategy to the next level? How about managing your backlog, deployments, and work status by chatting to your environment? This is where ChatOps comes in!
In this session, we will see how we can use the Microsoft Power Platform in combination with Teams to implement a ChatOps strategy. We will use intelligent bots to easily automate our daily tasks, get notifications of the status of our environment, and execute commands, all by chatting in a natural language. Come and learn how to set all this up with minimal effort and maximum benefits for you and your users.
About Speaker:
Eldert can be described as an Azure MVP, Cloud Solution Architect, blogger, public speaker and technical author. He can regularly be seen on conferences and user groups, speaking on Cloud related topics, with a strong focus on Azure. His experience with the Cloud comes from his daily work with these technologies in many innovative projects with various clients, as well as his drive to further dive into the latest developments in his spare time. Eldert enjoys sharing his knowledge with the community, and believes this is the best way to each other obtain more and better opportunities.
Conference Website: https://www.2020twenty.net/power-platform-virtual-conference/
C# Corner - Community of Software and Data Developers
https://www.c-sharpcorner.com
#chatOps #powerplatform #virtualconference #csharpcorner
Show More Show Less View Video Transcript
0:00
So first of all, thank you everyone for being here today
0:06
Thank you for having me here today. So today I'm going to talk about how we can implement chat apps using the Microsoft Power platform
0:13
But before I start on that, I will first give a quick introduction of myself
0:17
So I'm El Troteboer. I work at Motion 10 as a cloud solution architect and as a technology lead on the Azure and integration unit
0:26
I'm also an Azure MVP, so I love working with the community
0:30
So I do a lot of speaking, writing, blogging, events. Basically, I just love working with the community
0:36
and I just love sharing my knowledge. If you have any questions, please let me know
0:42
You can always contact me on my Twitter. So if you have any questions, any remarks
0:46
just feel free to reach out. And with that, let's go to chatops
0:51
So first of all, what is chatops? So chat ops is about conversation-driven development
0:59
So we are in chat room, the team members are there, and everyone just chats commands to a chat bot
1:05
This chat bot then execute some scripts or some plugins. And this way we actually are going to do our events like code deployments
1:12
like responding to events, like notifying members. And so basically what's about is evolution of DevOps
1:24
So everything we do in the DevOps lifecycle, so our build, our deployments, our initiating tasks
1:31
all those kinds of things, we now do using a ChatOps interface
1:37
So ChatOps is about conversation driven collaboration. So it's really about that
1:45
I'm talking to a chat bot, that chat bot responds back to me
1:50
I can then say, okay, do this for me, do that for me. And the chat bot will then execute these things for me
1:55
So basically I'm just telling the chat bot, okay, do these things for me. And it will come back to me, maybe ask some questions
2:01
maybe do some actions, but we'll come back to me like, okay, I did this for you
2:06
And so we can take actions by interacting with chat bot. So we can say, okay, start my deployments
2:12
create a work item, notify me my colleague of this incident, those kinds of things
2:19
And like I said, it's really that evolution of DevOps. So everything we do in DevOps, we just do to a different interface
2:26
basically bringing together all those different parts of DevOps experience into one single location and just making it easier without having to go to all
2:34
different applications and without me enough, no, okay, which application do I do what I can just tell the chatbot instead
2:41
So why should we use chat ops? First of all, is that simplified UI
2:49
So instead of having all those different applications that go to and understanding
2:52
those different applications, I can now just go to this, my case teams
2:56
environment and tell this chat bot, okay, do this for me. And allows for a lot of easy automation
3:03
So I can automate a lot of my different things and just, and have the chat bot do
3:08
this for me. So for example, what we'll see later on for deployment, I might need to deploy some different resources
3:14
I can now just tell the chatbot, okay, deploy this for me. I don't have to know how to use ARM templates
3:20
I don't have to know how to use GitHub to do these deployments. I just tell, I need this resource, please create this for me
3:27
And this is just one of the examples, like there's a very many different things
3:31
Of course you can automate and just give a user more control of what they're doing in
3:35
their DevOps environment and their DevOps experience. And finally, it gives visibility into what's happening
3:43
Because we are now all working in this Teams environment, we can actually see what people are working on
3:48
what's being done by this chat bot, what people are creating, if they are creating issues or stuff like that
3:54
Because we are now working on the same location, we can just know of each other what's happening
3:59
So we're going to use the Microsoft Power Platform to implement this
4:05
So the Microsoft Power Platform basically consists of these four components. So Power BI, Power Apps, Power Automate, and Power Virtual Agents
4:18
And each of these we will see today in our chat apps environment. And what I really like about the Power Platform is that it's really easy to get started with
4:27
It's a no-code, low-code environment, and just so much easier to get started than when we have to do something like Azure
4:33
which is more like the fusion devs or the pro devs, or I don't know what's his name to these days
4:39
basically just like the high code devs that are going to create everything for us
4:43
We can now actually empower everyone to do this for themselves. And this is what I love about this platform
4:48
because it just makes it so much easier for anyone to implement their own orchestration
4:53
to implement their own applications. And so we can today are going to use Power Platform
5:00
to implement chat ops. For example, we are going to see how we can use power
5:05
virtual agents to interact in a human language with our DevOps chatbot chat ops environment
5:14
So we are actually going to use power virtual agents to say some sentences and to actually start interacting
5:19
with our chat ops environment. We are going to use power automate to create processes
5:26
where we are going to go out to different environments to different applications and go to execute actions
5:31
in an automated way. We are going to use data first to store our data
5:38
in our own entities. And we are going to use Power BI to actually show some insights on this
5:44
We are going to react to our environment by using once again Power Automate
5:48
to actually be triggered when something happens in our environment. And what we are going to see today
5:52
is that when something happens in Azure, we can actually bring this into our Power Automate platform
5:58
and from there go back to our chat ops environment. And finally, it allows us to gain better insights
6:04
Once again, by using Power BI, we can actually see what's happening in our environment
6:08
how many issues we are having, how often these issues happen, maybe in which timeframes
6:14
so we can actually start learning from what's happening around us. So let's go to some demos
6:20
because I think chat ops is best explained by using demos. So the first demo we are going to look at is task management
6:28
And task management really allows us to create those sticky tasks that we know
6:34
And everyone that has done DevOps, and I think these days everyone has done DevOps knows this
6:38
Like I understand in front of like a physical board where you have the stickies
6:43
Or what we see more and more, of course, actually people just saying I'm using something like Azure DevOps or maybe GitHub or Kanban board
6:51
And like a digital representation of the sticky board where you just create tasks and move them around as you go through our process
6:58
So how can chat ops help us here? Chat ops allows us to easier acknowledge and assign issues
7:08
So by using chat ops, we can create new issues, new work items
7:12
We can assign them to other people. They can then acknowledge this like, okay, I now know this is actually assigned to me
7:18
And by using teams for this, in our case, it just makes so much easier
7:23
easier because you don have to go out to GitHub for one thing to Azure DevOps for another thing maybe to another kind of Kanban board We just use Azure DevOps to do all of this in one environment
7:36
What we are going to see today in our demo is that we are actually going to automate
7:39
other things as well. Like we are going to automate our Git setup. So we are going to
7:45
create a branch and we are going to just push this out to our users
7:49
We're also going to see, okay, so we created something in an external system
7:55
How are we going to bring this back into our chat apps environment? So we're going to see when a pull request is being approved
8:02
that we actually are going to go out, check for that approval, and then bring that back once again, once it's approved
8:10
And finally, once again, we have this collaborative space where we are working on this
8:14
So we can see who's working on what. we can see when the issues are being assigned or being created
8:20
And just gives it one place for all the logging of our conversations, so we just know what's happening all around us
8:30
So let's have a look at this demo. And so first what I'm going to do in this demo
8:35
I'm first going to go through the user experience. I'm just going to show you what the user will be doing
8:40
when he's working in this chat box environment. This, by the way, is something we have set up with
8:44
there are many different clients. And so this is actually something that you can set up
8:48
in your own environment as well. And so what they will do is
8:53
they will go to their Teams environment. In this case, I have this virtual assistant over here
8:59
And what I can tell to this virtual assistant is something like, I would like to create a work item
9:06
So this, in this case, I might be a manager or a program manager, or maybe a product owner
9:11
and I want to create a new work item or maybe just as a developer that wants to create new work item for himself
9:17
And in this case I want to create a new work item. So we're going to tell this chat bot
9:22
like, okay, please create a work item for me. Now, as you can see, it comes back to me
9:27
Okay, I will now walk you through this. Like what type of work item would you like to create? Bug, task or impediment
9:32
I could now type task or I can click this button over here
9:36
That will then allow me to say, okay, I want to create a task. It's going to come back with some other things
9:41
like I need to create the title. So let's say PPPC. So it's easy identifiable description update to read me file
9:53
And now it's going to go out to Azure DevOps and actually create this task for me
9:57
and come back to me like, okay, your item was created. Here's the ID
10:02
I could of course not bring in link or things like that, but let's just start simple
10:05
Just okay, something was created. So we go over to our environment over here
10:12
So this is my Azure DevOps environment. Let me just zoom in a bit more
10:15
There we go. And in this environment, as you can see, I have different tasks and just created that PPVC task
10:23
So if I open this, I can now see, okay, I need to update the readme file
10:27
So now a developer can come in. They will now know, okay, I need to update the readme file
10:31
And I can see already this link to a branch over here. So if I click on this
10:35
I will actually notice that I already have a branch called PPVC that has been created for me
10:41
So as a developer, I don't have to do those tasks like create a branch, pull it in
10:47
This is already done for me. So as a developer, I can immediately start
10:51
on this specific use case. So in this case, we have to update the readme file
10:57
because over here we have chat oops instead of chat ops. So let's go and actually fix this
11:05
So it would say chat ops. We are going to commit this to my own branch. And now, of course, in real life
11:13
this will probably take a bit more work. Like I would probably not just have one thing
11:17
that like one letter I have to fix. But at some point I have made my fixes
11:22
I have implemented something. And at some point I'm going to say, okay, I'm done
11:25
I've tested it. Let's bring this back to the main branch. So I'm going to create a pull request over here in GitHub
11:32
I'm going to say compare and create. It sees that I can merge this
11:38
I'm now going to create a pull request. And what's going to happen now is, like I said
11:44
we are now going to go back into our chat box environment because I've now created a pull request
11:48
but then my manager or my product owner, he doesn't want to come out to GitHub and look at this
11:53
He wants to stay in his own little chat box environment. So what happens over here is that actually in my general
12:00
channel, like where we are all working together, it actually tells me, hey
12:04
if someone has created a pull request, they have updated readme file
12:08
I can of course view this, So I can actually go out, just see, okay, what did they do
12:12
So I can see, okay, which files would change. I see, you can see the commits
12:17
So I can actually click on this. I can see, okay, what changes were being made
12:21
So it just gives me a very easy way. Okay, so someone created pull request. Let's just check this
12:27
And then maybe like a lead developer or a product owner can say, okay, this looks good
12:31
Let's merge this. I could also reject this, but then of course
12:35
in this case we are going to merge this. I can say, okay, I want to add a comment
12:39
So let's say, okay. We are going to approve this. At this point, I've now approved my pull request
12:48
I can see it has been approved and merged. And if we go back to my environment over here
12:52
I should indeed see, yes, it has been merged. I can see that it's been merged
12:57
I can now just lead the branch. And now my work has been implemented
13:05
So, okay. So we have now seen how this works with the user
13:09
Now let's have a look at the background. Like what did we actually do in the background
13:13
Because there we have seen that for the user, it was very easy to do this. Well, let's see how we implement this
13:21
And so we started by creating that work item. And so this work item just said, okay, what did I say
13:28
I would like to create a new work item. So what I am using here is a Power Virtual Agent for my bot
13:36
And this bot, as you can see, it has some different phrases
13:41
Actually, this is not the one I want. I want this one
13:44
I'll actually show you that in a second because I have another bot. But what I just did was I said
13:49
I would like to create a new work item. Actually, that is what I have over here
13:52
I could also have said, and just to show you, I could also have said something like
14:01
just, oh, there we go. Just to show you that actually doesn't have to be
14:05
the phrase from there. So if I would have said, please create a new work item
14:10
it would actually have done the same thing. And I could just have said once again
14:15
let's just create a bug in this case. I just quickly go to this just to show you like, okay
14:23
I'm not going to go to the whole GitHub thing, but just so that my bot actually went through this
14:27
There we go. So as you can see, I could do not have to one of these trigger phrases
14:32
I can also use a different trigger phrase. And what it actually does, like give it some different
14:37
trigger phrases and uses AI to actually understand. Okay. So if you say, please create new work item
14:42
you probably want to do create a new work item. It then goes through some messages like, hi
14:48
I will help you. It comes back with a question like what type of work I would you like to create
14:53
You had those three options. And that why we get those three different options that I actually can actually click on because I use this multiple option choice here I have what is the title of my work item I guess my response back as a title
15:06
It asks a question about the description. So I get the description back
15:09
And finally it goes out to create that work item and it goes out to go and power automate
15:16
So in power automate, so let me just show you this one. Actually I can go over here
15:21
So in this power automate actually what it does, it triggers, it's getting triggered by that virtual agent
15:29
Okay, there we go. So it gets triggered by the virtual agent. It got the type description and the title for my answers
15:35
And then going out to my Azure DevOps. As you can see, this is just an out of the box connector
15:41
I don't have to program anything for this. I just say, I want to connect for Azure DevOps
15:47
As we will see, Azure DevOps. So if you don't go after look at Azure DevOps
15:54
we will see that there's too many different things we can do like create work items
15:58
we can create releases, builds, we can list queries, so we can do a lot of different things over here as well
16:07
So in this case, I create a work item, I just say, okay, this is my project I want to do this on
16:12
these are my different fields I want to fill. And as you can see, that's the only thing I do so far
16:18
So it just starts with this. So it's just creates this first and that's going to check
16:24
Okay, what type of work item do you actually want to create
16:27
So if I would have created impediment, I would have been done. But in this case I created a task and a bug
16:35
So for the task, what we just saw when I opened that task was there actually there was link in there to get up
16:40
So what I do in the case, if it's not impediment, I actually get my main reference
16:44
So my main branch, and from that main branch, I create a new branch
16:49
So I make sure I have like my text set to, in this case, it will be PVC
16:54
So that they create my branch in that name. And then finally I come back to my work item and I say, okay, update this now
17:02
So I updated this with my branch name and with that link, I cut back from my, over here
17:09
So this link I got back from my, when I created this, so this is what I'm looking for
17:18
So by creating reference, I got back to this body URL. And then I know there's like a standard thing over here
17:24
that I need to add to actually get to the repo. So that's how easy it was for me to actually start this
17:31
I then returned a value. In this case, I returned the URL and ID. I actually didn't use this
17:36
Like I said, I could actually have to get back to URL because I do get it back here
17:40
This case, I just got back like the ID. So one more thing I want to show you here is actually
17:47
So I create new work items. Then my developer might actually say
17:50
okay, what do I have to work on today? So he might come back and say, okay
17:56
please get my tasks. So in this case, I can say, okay
18:04
I want to have the top five tasks. And then this will come back to me and say, okay, these are your top five tasks
18:10
And these are the tasks that are currently open for you. So it doesn't retrieve the box at this moment
18:15
like I would have to do a different filter. So that's why you don't see the bug I just created
18:19
But it will get me by top five tasks. As you will see here, like these are the tasks that are just
18:27
over here, just like these ones. So it cut the top five over from here
18:32
So we use another power virtual agent for this. In this case, like, please get me by task
18:39
Once again, it use same practice. Like it goes out and asks me some questions
18:44
It calls out to power automate. And as you can see here, in this case
18:49
because what you will see over, not over here, but over here, it actually brings the list nice table back
18:56
Like it has a nice format, a table. So what actually does with this, like it goes out
19:01
it gets my information from my query. It goes out, it does a query on my Azure DevOps environment
19:10
It tells me, okay, this many query results. And then I do this select like I just want the ID and title
19:17
because I actually get back a lot of information from this. I just get back the ID and title
19:22
I create a HTML table of this and I get this PowerFuge agent
19:26
Just to show you what I actually got back from this query, because of course I get back a lot more
19:32
than just that single ID and title. So there we go. So as you can see, there's a lot of information
19:40
get back here, but I'm just interested in this ID and title. I don't need to work out in type and iteration pass and stuff like that
19:46
So I can just give a nice projection. Say, okay, please just give the ID and title back
19:50
create a nice HTML table out of this. And that's what I finally got back
19:57
So with that, we have now seen how we can actually create some tasks
20:02
So next up we are going to use this chat ops environment to actually do some self-service deployments
20:07
And self-service deployments is really about empowering your users. So what we are going to do is we are going to use chatops
20:15
to have the users create their own resources. So for example, if they want to have a database
20:21
or a storage account, they can just go to the chatops environment and tell the bot
20:25
hey, I want to create a storage account or database or whatever
20:32
So what is the advantage of this? First of all, it allows for much quicker allocation
20:37
because I can now just go to my chat bot, say, okay, please create this for me. And then my chat bot can just go out and create this
20:43
There might be an approval step in there, but it can just create this for me
20:47
Instead of me having to, for example, go to top desk, create a ticket
20:51
wait for someone in the operations team to actually pick up this ticket
20:55
wait for them to actually have time to say, okay, I'm now going to create this. They have them to create them to write scripts
21:00
and stuff like that. And at some point they might come back to me in my ticket, like, okay, we finally created this for you
21:06
So I've seen this in real life. It can take up to normally it will take about hours
21:12
but I have seen this go up to days or weeks even. So what we want to do is just say, okay
21:17
within a couple of minutes, you will have your resources. And so once again, it's a lot more transparency
21:25
because they can just see, okay, what resource can I create? What information do you need for me
21:30
Instead of them saying like, okay, create a virtual machine for me. Then operation team come back
21:34
okay, I need this information from you. So this thing just takes like
21:38
it just makes much easier, or maybe even the team coming back, like you cannot create this type of resource
21:44
This gives us a lot more transparency. Like I can just see what resource can I create
21:48
I really get all the questions I like, okay, this is information I need, and then just doing this
21:54
And it plays a user in control. So actually user is in control. The user can just say, I want a resource
22:00
but still makes the operations team happy because they just now create scripts
22:04
created templates for this, and they make sure that everything is under governance
22:07
and under security. And so instead of actually spending time on those repeating tasks and waiting for stuff
22:16
we can just focus on actually doing my important work. So let's have a look at what this looks like
22:23
So if we go to our Teams environment if I go out to my Teams environment I can go over here And in this case I using this action
22:35
I should see, there we go. So I have this create Azure resource action
22:40
So as a user, I can now click on this and it will come back to me. Okay. What type of resource do you want to create
22:46
I can really see what resources are available to me. So in this case, I can create database storage account or virtual machine
22:51
So we are going to create a storage account. I'm going to submit this
22:55
And it will then come back to me immediately, like saying, okay, if you want to create a storage account
23:00
this is the information we need. So let's just call this PPVC
23:07
There we go. Submit. And this will now start the process to say, okay
23:13
you want to create a resource. We are going to contact the manager saying, okay, is this actually allowed
23:18
So I could do this like with Power Automate approvals. I could do this through some other actions
23:24
but what I'm actually going to do is just send out an email to my manager saying
23:28
this is the resource by Aude Gotenboer. They want to create an actual resource
23:32
a storage account named PVVC. Is this okay? In this case, I'm going to say yes
23:40
And then I said, yes, there we go. And then this will start my provisioning
23:45
And while we wait for provisioning, Let's have a look at the backend again. So if we go over here
23:53
actually not this one, this one. So what's happened over here is for select message
24:03
So that's what I actually got that dropdown. So that is because I have this for a select message over here
24:10
And as you can see the create as resources actually named we just saw. So it actually was the name of the power automate flow
24:16
that we just saw. And here I have this adaptive cart. And adaptive cart allows me to create a nice user interface
24:22
where I can add images, I can add dropdowns, I can add date and times and stuff like that
24:28
In this case, I have this text over here with a dropdown and this dropdown, I have these three different options
24:32
that we just saw. So whenever I click that action, it would show me this dropdown and I can then say
24:41
okay, this is what I want to do. I initialize some variables And then we go out and check, okay
24:47
what do you want to create? Do you want to create a database storage account or virtual machine
24:50
Because as you can imagine for a virtual machine, I have completely different things that I need to know
24:54
than for a storage account. For a storage account, I need to have my account name
24:58
and my container name. For a virtual machine, I might need to know which subnet has this us be in a name
25:04
maybe which OS has to be on that, things like that. So I would have gotten different questions
25:10
So in this case for storage account, I set a card definition
25:14
So once again, this is an adaptive cart. And if we copy this and push this into here
25:21
So this is another adaptive cart. This is the adaptive cart that you just saw like with those two questions
25:25
like storage count and container. Now, like I said, for a virtual machine
25:28
I would have a different card definition. I'm also setting my ARM template
25:34
which I will need to use later on because I'm now using a storage account. Once again, for virtual machine
25:38
I would have different ARM templates. So what goes then it goes gets my input like it uses that card definition that I created
25:48
over here. It uses that to come back to my channel saying, okay, please fill in this information before
25:54
we can actually do this. And then does another check. Okay. For storage account, I will need to get like my account name and my container name
26:03
So I have to parse those two fields for virtual machine. I would have done it past different fields
26:09
And then go to set up this approval description saying, okay, these are the things that we have
26:13
So I have the storage kind of being created, this name and this container. I send out the email to my manager
26:19
I'm using this approval description over here. I'm using the user from my teams environment
26:26
So I know who's coming from. And then if he says, no, it would have done nothing
26:31
It would just post reject the message. In this case, I said, yes
26:35
So I actually went out, I went out to Azure, created a resource group in Azure
26:40
It's then told me, okay, I'm starting deployment and then use that arm template over here
26:45
So this arm template over here, it uses that to create my storage account
26:50
So if I go over to my GitHub environment, and as you can see, this just linked my GitHub environment
26:55
And if I go over here in my GitHub environment, I have the storage account to Jason, and this is something that my operations team
27:01
would create for me. So as a user, I don't have to know about this. I just have to know, okay, I can create this
27:06
but my operations team, they now know whenever a storage account is created
27:11
it will have the standard LRS queue, it will have a HPS only
27:16
it will have things like encryption on my file and blobs. So they now know that all my security
27:23
my governance is set up correctly. So instead of my users actually going to the portal
27:27
clicking this for themselves, maybe forgetting about all these kind of things
27:31
This way I always know that everything is under the right guidelines and the right security
27:36
and governance that we want as an operation team. So as you can see, I now created this
27:44
I passed in those values. And finally, once it's finished, it will post this message like here's your resource
27:51
So it should be finished by now. So let's have a look. And indeed I have this message over here saying
27:57
hey, your deployment has been finished. So let's click on this. will bring me out to my Azure environment
28:05
And here actually I can see, yes, I have this new resource over here
28:09
The storage account is this PVVC. So I create like a storage account name, PPVC
28:18
and then a unique name because every storage account name has to have a unique name
28:22
So that's all handled by my ARM template and I don't have to think about this
28:27
And in here, it should actually say in my containers that yes, I do have this container PPVC as well
28:35
So by just selecting this one dropdown, giving two names, it just created all this for me
28:40
So it was much easier for me to do this instead of having this myself
28:45
which might mean that we might not follow the right security rules and right to governance rules
28:51
I also didn't have to wait for my operation team to wait till they have some time
28:56
It just makes it so much easier for me to actually do this. So as a user, I can now create my work items
29:05
I can work with my work items that are assigned to me. I can create my resources
29:10
So this is taking a lot of things out of my hands as a user. So next, let's have a look at what happens when an incident occurs
29:20
So I now created my work items. I created my application. I deployed it
29:25
I created all my research around this. It's now running in production. And now an incident occurs
29:31
So when an incident occurs, and I have been in some of these situations where it kind of looks like this
29:37
So everyone is just like, oh, shit, an incident is occurring. What procedure do we need to follow
29:44
Who's on standby? Who's the owner of this resource? Is this something that is because there's actually an outage or is this maybe some planned maintenance
29:53
Like all these kind of things where everyone is just like screaming, maybe not screaming, but at least a little bit panicky like what's
29:59
We do. So what if we could actually use chat ops to streamline this process
30:06
So, but using chat ops, we can actually have fast acknowledgement of those incidents because we will
30:12
push it into the environment where everyone is already working in like in teams
30:16
in our case. So we just get the notification and they will actually get notification on their
30:20
own name. Like, Hey, you are the owner of this. Look at this because something is happening with your resource
30:25
When once its owner says, hey, this is something that should not be happening
30:30
he can then say, okay, this is an incident. ChatOps can then bring in the incident team, so that emergency response team
30:37
to say, okay, you need to look at this. So we'll bring in the owner, we'll bring in like maybe expert on this specific resource
30:44
We might bring in the standby team, things like that. And once again, we are automating things
30:52
So we are bringing more control to those people to actually focus on what they want to focus on
30:57
So they can focus on troubleshooting an incident instead of having to do all those status updates
31:03
And everyone that has been in an incident knows about this. Like an incident occurs and the first thing that happens is a manager coming to you like, can you give me an update
31:11
Well, you don't want to give an update. You want to work on an incident. So you can actually automate this to say, okay, we are working on this and this is what we are doing
31:18
and then send out to all the managers, maybe to like a dashboard somewhere
31:23
maybe to the not a channel saying, Hey, there we know that something is going on
31:26
We are working on this. And finally, when you have resolved this
31:31
you can actually capture all the data like that we have been talking about, like, okay, I'm not investigating this
31:37
Hey, I found this, I'm trying this. Okay, that didn't work. I'm not trying this
31:41
Hey, this did work. Okay, this was solution and it's now resolved
31:45
We can have that entire conversation, capture it, store it for later on
31:50
And then later when another incident occurs, we can look back at this to say
31:54
Hey, last time we saw something like this, we had this and this, let's have a look over there as well
32:01
So let's have a look at what this looks like. So in this case, we actually not going to start
32:07
in a chat environment because they are just doing their work. They're just doing their daily business
32:13
creating tickets, creating work items, creating resources. So what will actually happen
32:19
Let's go over here. So what I have in my environment, I have a logic app that I created
32:27
And so for those that don't know logic apps is very much like Power Automate
32:31
just like the big brother of Power Automate. So Power Automate actually built on top of logic apps
32:36
and logic apps are a bit more like the enterprise way thing for this
32:41
So as you will see, like it looks like, it looks quite a bit same as the power automate
32:46
So what I'm doing, whenever I can receive a HP request, I will check the status and it's status is not a success
32:54
Then I will terminate with the failure. Probably not something that you will build in production
32:58
but for my demo, this is perfect. Because what I'm not just going to do
33:02
is I'm going to send something into this logic app, send a request that status failed
33:07
If I then go to the ones on my logic app, let me just refresh this
33:13
There we go. So as you can see, I exterminated with a failure
33:19
because I received the invalid input. And what this will do is this will trigger an alert
33:24
because in over here in my alerts, so I set up an alert
33:29
manage alert rules. So I set up alert saying whenever I have total runs failed
33:34
is greater than one, I'm going to trigger an alert. Now this can take like a minute or two, three
33:41
So I'm not going to wait for that. Instead, I'm just going to trigger my own alert
33:46
I'm just to show you quickly. So I'm using this over here
33:52
So my action group, so I'm in this action group. Actually I can, not this one over here
34:00
There we go. So in this, what this will do, it will call out the web hook for power automates
34:06
And this web hook is actually under web hook I just going to call out now directly using this Azure Montecomus alert schema So this is actually the alert that will be fired whenever my alert fires
34:17
Like I said, I don't want to wait two or three minutes. I'm just going to send this request instead. And as you can see, I'm just calling out to my Power Automate endpoint
34:25
And as you can already see, I'm getting a notification over here. So this is my own resource owner
34:32
I'm just getting a notification saying, hey, something is going wrong with one of your
34:36
resources. So actually let me go over here. Uh, this one. So I have received an alert and this is saying, Hey
34:45
we have received an alert for the resource, blah, blah, blah. So that's that logic app I just showed you, uh
34:50
for which you are the owner. Please, uh, choose what you want to do. So it already identified me as the owner of this resource
34:57
And now it's asking me, should we ignore this? So maybe you are just running some maintenance. Should we notify team
35:03
like, okay, we noticed this about it's okay. We know there's something going on
35:09
or should we actually create an incident and start the investigation? So let's create an incident
35:15
Once again, I have to create a name. So PPVC, so we can find it back later
35:22
And now has created an incident for me. What it will now do is it calls out to me again
35:28
If I go over here. So actually what it did, it created a channel for me
35:32
So this is my incident channel on this date for this specific incident
35:37
If I open this, it will say, hey, Aldert, please acknowledge that you are starting
35:41
investigation on this. So once again, it called out in this case to me as the owner
35:46
Of course, it could also have called out to different people, like I'm not the only one
35:49
in this tenant, but if I had more people in this tenant, I could have like an incident team
35:53
So I could actually look up, okay, who's on standby, bring them in, maybe look up like the expert on logic apps
35:59
in our environment, bring them in as well. And then they would all have to acknowledge
36:04
to start my instant resolve for. So if I now acknowledge this and I'll say, okay
36:10
it has been acknowledged. This case I'm the only one that has acknowledged this. So it will now say, go out to my general channel
36:15
and say, hey, an incident is going on. We are already working on this
36:21
This is the incident channel and we are working on this and we will update you
36:25
Now this case I just sent out a message to my team's environment
36:29
but I could also send like emails to my managers. I could push it up on dashboard
36:34
I might log a ticket and top desk. I could do all can direct different things on here
36:39
Just to make sure everyone is notified that yes, we are working on this, please leave us alone
36:47
So then I can start my conversation. Like I could say, okay, looking into this
36:53
I might have found something at some point. And then at some point I might say, okay
37:01
I want to update my company because we found something, we found the issue
37:08
So at that point I would say bank status, and that's why I'm going to switch over to the backend
37:13
because this takes a little while to respond. So let me, while we're waiting for this
37:17
let's go over here in the backend. So, so like I just said, when we created that logic app
37:26
I added the alert on that, And the alert is calling out to my web hook
37:30
and that's the web hook we see over here. So whenever HP request is found
37:35
and this is that alert object that I just showed you. So I my alert ID alert rule, those kinds of things
37:41
I want to initialize some variables. And the first thing I do is actually go out to dataverse
37:45
and go out to my research owners entity or my table. So if you go out to my
37:52
my dataverse, You'll see I have this resource owner table over here
37:58
And in this resource owner table, I have this resource, the logic app I just showed you
38:02
and it tells me this is the email and this is name of this resource owner
38:06
So I can now actually know, okay, so when this logic app comes in
38:10
whenever this comes in, I now know this is the owner that I need to contact
38:15
So what I do over here, so I have this resource equals my resource over here And this will just tell me like get me the resource owner of this logic app It then comes back and I could have multiple resource owners
38:30
maybe, but in this case I have one, so I don't just do this one, but it will actually loop over the different resource owners
38:35
and then brings out this action to be taken. Like it tells me like, okay, what do you want to do
38:43
So that was the notification we just saw, like we received an alert, please tell me what you want to do
38:47
And then we have the three different options, create an incident, notify team or ignore
38:52
So if I would have said ignore, it would have come in default, but we would have done nothing
38:56
If I would have said notify my team, it would have sent out notification to the team
39:00
But in our case, we actually did this incident. So first thing it did was create a channel
39:06
for this incident. So actually I actually created an incident channel for this specific incident
39:13
So if you have multiple incidents going on, you will all have their own channel. And so they can all work in their own channel and work in their own with their
39:19
own people. Then we got this mentioned token. So it actually got the mentioned token of the person that actually was, uh
39:26
of this user. And so what does that it asks for acknowledgement. So it went out and asked
39:33
Hey, are you here in this channel? Please let me know. So it actually
39:36
actually mentioned me. So it actually mentioned me. So I got a pop-up. So it's saying, Hey, you have to be here. Um
39:42
And because I clicked it submit, or clicked acknowledge, it will have to actually submit
39:49
At that point, it comes back to my logic, my power automate flow saying, okay
39:53
we have now, it has been acknowledged. Next step is we send out that message to general channel
40:01
And now comes the really interesting part, I think, which is actually saying
40:06
we are going to create some new flows. So I'm going to create a new flow
40:11
And this flow actually over here uses a workflow definition. So for those that have worked with logic apps
40:18
this is the logic app definition that how we also create logic apps
40:23
and the same works with power automate. Now, we're not going to explain everything
40:27
that's going on here. Basically what I just want to show you like with this
40:31
what I'm doing here is just create a new power automate flow
40:36
saying this is channel ID, stuff like that, creating expressions. Basically I can just dynamically create a new flow saying
40:43
okay, this is information about this specific incident, create a new flow for this specific incidents
40:50
I can then use the flow action to say, okay, create a new flow for me
40:55
And in this case I'm creating flow status updates and I'm also creating a archive channel flow
41:01
and updating that same flow. So you can see I create some connections over here
41:05
I can use that, that workflow definition over here to actually create a flow
41:10
And so to show me what it actually created, so when I refresh this, it should have two new workflows
41:16
So for my one workflow, I actually created two new workflows. And so the first one is the status update
41:22
And this is the one I'm now going to show you, edit. And what this does, it just gets my channel message
41:28
So whenever I say bank status, it will trigger this specific workflow
41:36
And what this will do, it will just post a death card
41:42
Let me just make sure it actually triggers. It will post a death card and then one for
41:49
oh, okay, so triggered. So let me just show you the triggered over here
41:54
So that will just show this death card over here. I can now say, what are you doing
41:58
In this case, I might say, is this issue identified? So DNS
42:04
So I can now submit this. So we now know that problem was DNS
42:08
and we'll then post it back to the general channel and all those other channels that we might have
42:15
Now next up I can say, okay, so I'm not notified. We are now doing the fix
42:19
And at some point we said, okay, we have done the fix. Everything is okay now
42:24
We are now going to archive. So we are going to archive but this one actually is one channel we need to argue this channel because that actually one for our incidents Archive So we are going to archive this channel
42:41
because our incident had resolved. If we go back over here, over here
42:48
that's where I go here, my flows. So that's the second channel
42:54
the second, not second channel, the second flow that was created. And this one
42:59
just like we just showed how we can actually create channels and create workflows
43:03
This one will actually break everything down again for the specific incidents
43:06
So when I get this bank archive, I'm going to get all the messages
43:11
So I'm going to get all the messages that were set in this conversation for the specific incident
43:18
I'm going to get out all the information and then I'm going to just append this
43:23
all those string variable. Like I could make some very nice of this, but in this case
43:27
I'm going to create a long string that has all this information about the specific incident
43:32
I'm going to create new record in my dataverse. So in my dataverse over here
43:36
I'm just going to create new incident discreate in here, and then I'm going to delete the channel
43:42
So I'm going to delete that specific teams channel, and I'm also going to delete both of my flows. So from flow, once again
43:49
from flow, I created new flows and from flow, I'm going to delete flows
43:53
And this is a thing. I think I bring, it's very powerful because that means that you can actually
43:57
create and delete flows for specific use cases and create short living flows that can just be deleted
44:03
later on. So if I test this, so it should not say my bank archive
44:11
it should pick this up in just a second. And in just a second, I should see this incident channel disappear
44:16
So let me just check. I actually have to test this
44:26
There we go. So now in a few seconds, it should actually disappear
44:33
Because what's now going to do, it's going to delete this channel. It's going to lead those two workflows
44:38
It's going to store all that information like the looking into this, things like that
44:42
It's going to store that in Dataverse. As you can see, it's now been deleted
44:47
So my channel is already deleted. If I switch back to over here
44:52
do I say, okay, this flow has also been deleted. So if I now go back to my flows
44:56
it will once, if I refresh this, like these two have now been deleted as well
45:01
So those two flows only lived for the duration of this incident
45:07
So just one final thing I want to show you because we're almost done with this
45:12
One last thing I want to show you is just like, I said we have this data first
45:19
that we just put some information in and now next time something occurs, like I could look for that name of the specific logic app
45:26
I could maybe look for DNS or something like that. I can get all this information back here
45:31
I can see, okay, we found the issue. We are looking into this
45:35
and we can also see over time how many incidents occurred. Like I can see how many incidents of curse over time
45:41
because I pushed everything into the data first. So we have now seen how we can create work items
45:47
We have seen how we can create resources. And we have now also seen how we can actually handle incidents
45:53
all using the same chat environment. So like I said, we're almost done
45:59
I do want to give a quick recap. Because we have seen how easy this is, but it's also very powerful
46:06
because by just using Teams, we can actually see, yes, we can now do this and we can empower our users
46:12
users. It's very extensible, so it enables a wide range of scenarios. And by using Power
46:19
Platform, it's very easy to set us up. So by using Power Platform, it's just very easy
46:25
to empower our users to create those automated experiences and just give them a nice environment
46:30
in Teams to do this. And so it just makes it much easier to do this. So with that, I
46:36
would like to say thank you
#Computers & Electronics
#Software
#Business & Productivity Software
#Development Tools
#Intelligent Personal Assistants


