Custom Issue Collectors with MS Forms, Power Automate, and Atera

Custom Issue Collectors with MS Forms, Power Automate, and Atera

The Atera support portal is handy, but sometimes it can be hard to get people to fill in everything for issues the first time. I also have run into a few clients that want to approve any issues before they hit our support team at Cage Data.

While working with a particular client recently who runs a call center, they wanted a way to collect issues from the call center staff, route them through the call center administrator and then they would route the issue between us for computer issues or their phone vendor for calling issues. With Microsoft Forms and Power Automate it took me about an hour to build a form for staff to submit issues through and then have them route to the correct location.

The Form

I'm not going to go into much detail about  the form, since it's pretty easy to build the form. If everyone has a 365 account at the organization, you can create the form on the customer tenant and only allow people inside the organization to respond to it. That will make it so that you can access the information about the submitter later for when the ticket gets created. Beyond that, my form simply collected information about the date and time of the issue, station information, and information about the type of issue and call they were on.

Power Automate

Now for the fun part. Power Automate is similar to IFTTT and Zapier, in that it lets you connect different applications to automate processes for moving data around. In this case, we use Power Automate to move data from Microsoft Forms to Atera with some steps in between.

When you create your Flow in Power Automate, you can pick an Automated Cloud Flow and for the trigger, you'll use the "When a new response is submitted" Microsoft Forms trigger. After that, you'll get dropped into the Flow builder where the first thing you'll do is pick the form you created earlier to start with.

The next step is where I always run into an issue. My assumption is always that the trigger will include the information submitted to the form, but it doesn't. You actually need to add a step to get the response from the form. So add a new step using the "Get response details" action and set the Form Id and Response Id. You'll notice that when you click on fields, you'll have access to select Dynamic content on a fly out window to use content from other parts of the flow.

For the next part, you've got options. Depending on how you built out your form, you can use a conditional statement to route things. For example, if a user picked "Call can't connect" for the issue type, maybe just have the flow generate an email to the phone vendor. In my case, I just want to send the information to the call center administrator and give them the option to let the issue submit a ticket to Atera, or they'll handle it some other way on their own. So with that, add an Approval action to the flow. I'm going to send the issue to a couple people for approval and we just want it to be that the first person to respond can approve or reject the issue, so I set the Approval type to "Custom Responses - Wait for one response".

Now that we have the Approval, we need to handle the outcome. Since I am only working with 2 possible outcomes, I added a Condition as the next step looking for the Outcome equal to "Send to Cage Data"

Sending the Ticket to Atera

Now for the last step of our flow. In the "If yes" branch of the flow, we need to add an HTTP action to make our request into Atera.

The only part that's interesting is the Body. As you can see I built a JSON object with all of the API values. The POST /tickets API in Atera will accept the End Users First Name, Last Name, and Email and try to look up the contact or create one. The functions are there to take the name submitted and split it into 2 parts (I know it's not good UX given that there are lots of countries that don't have simple First Name Last Name formats, but this was built pretty quickly. The 2 expressions are:

First Name: split(body('Get Response Details')['Your Name'], ' ')[0]
Last Name: split(body('Get Response Details')['Your Name'], ' ')[1]

The description of the issue is very similar to the approval email, but this time it has to be built with some HTML to format the content.

Wrapping Up

That's it. Now you can save and test your flow by submitted to the form and then send this out to staff. It's a super easy way to customize the customer experience with Atera and create ultra customizable flows. For example, how about creating a form for new employee onboarding that can trigger a flow to get approvals and create user accounts.

I'm really new to using Power Automate but I see huge potential for automating a lot of processes with it for customers.