Building an Anonymous Employee Engagement Survey Solution
Published Dec 01 2021 10:33 AM 4,627 Views
Brass Contributor
Hi! Welcome back to empower series. The goal of this series is to show you all the solutions I have built with Microsoft 365 and Power Platform. I’m Japhlet Nwamu a Gold Microsoft Learn Student Ambassador from Nigeria and an advocate of Microsoft 365, Power Platform, and AI. I'm passionate about building tech solutions that utilize the power of AI.
Did you know that only 15% of employees worldwide are engaged with their work? The survey by Smarp also states that 71% of executives say that employee engagement is critical to their company's success. Employee engagement according to BuiltIn is the degree to which employees are motivated by, passionate about, and invested in the work they do. Gallup found that disengaged employees cost the US between $450 billion and $550 billion each year in lost productivity.
Employee engagement goes beyond activities, games, and events. It is the extent to which employees feel passionate about their jobs, are committed to the organization, and put discretionary effort into their work - Custom Insight. The goal is to understand what needs to change within the organization and most importantly if employees feel valued by your organization. The following tool designed with Microsoft's Power Platform has been developed to allow you to embed surveys in your organization and get reviews from your employees at frequent intervals. This solution can be implemented using either Power Apps or Power Virtual Agents. You can check out the full documentation of this solution here

In this blog, I would show you how to replicate this solution in your organization using Power Virtual Agents and Power Automate. We would use SharePoint for storing the responses collected from our employees. We created a SharePoint List for this purpose. You can check how I created it here.
But first, let's talk a little bit more about our solution. We must know the department the employee works with, so our first question would be "Which department do you work with?". Thereafter, our employee would be asked 4 questions and prompted to drop a rating for each question - 0 stands for lowest and 5 stands for highest.
  • Do you feel good about your current work/life balance?
  • Do you feel like a true part of your team?
  • Do you feel like you are heading in the right direction as a team?
  • Do you feel energized about your job?

Now, let start building our solution. Head over to and sign in with your Microsoft account. You would be directed to Microsoft's Power Virtual Agent home page.




Fill in the above details correctly:

  • Name your bot: Give your bot a name. I would name mine SurveySolution.
  • What language will your bot speak?: Select your preferred language.
  • Select an environment: If you have multiple environments, select the environment you created your SharePoint list and Power Apps application in. I would use my default environment for this.

Click 'Create' when you are done filling in the details. You would be directed to your bot's home page. In the right navigation bar, click 'Topics'. On the page that displays, you would 12 existing topics. A topic defines how a bot conversation plays out. In this sample, we would create new topics from scratch. Topics have trigger phrases — these could be phrases, keywords, or questions that a user is likely to type. We also have conversation nodes — these are what you use to define how a bot should respond and what it should do.


Delete the first 4 topics. To do so, open each topic and click on 'Delete' at the top right of the page. After deleting the topics, you would be left with 8 existing topics. Now let's create a new topic for our survey. On that same page, click on '+ New topic' at the top. Give your topic a name. I would name mine "TakeASurvey". In the section 'Trigger Phrases', input up to 5 possible phrases your employee would type in. These phrases would automatically start the survey.





Next, click on 'Go to authoring canvas'. The authoring canvas is where you define the bot's conversation pattern. You would notice that a blank Message node was automatically added. In the empty box, input your welcome message. Mine is below.


Thank you for taking out time to respond to this survey. We appreciate you!
The goal of this short survey is to ensure that you are enjoying being part of our organization. Please fill in only once!

Add another node by clicking the '+' icon and 'Show a message'. We need to add a message telling the employee a little bit about the survey. Notice that a new empty text box is added to the flow. In that box, input the details below.


This survey consists of 4 questions.
For each question, you are expected to tell us how you feel. 0 stands for lowest and 5 for highest.
Be assured that your anonymous responses would go a long way in making our organization better.

Now we would ask which department our employee is responding from. To add this question, click on the '+' icon again, and this time click on 'Ask a question'. Notice that as you do, a different type of block is added to the flow.

Fill in the details correctly.

  • Ask a question: The question we need an answer to is "Which department do you work with?", so we would input it in that box.
  • Identity: This is a direct question, so we would pick the employee's entire response.
  • Save response as: We must rename our bot variable for each question, so it's easy to reuse. Click on the pencil icon and in the column that pops out by the side, change the bot variable name for this question to department. Bot variables are global variables as they are used to store information that does not change from topic to topic.




Next, we need to add each question and the options. We repeat the steps above. Click on the '+' icon again, and click on 'Ask a question'.

Fill in the details of the block correctly.

  • Ask a question: Our first question is "Do you feel good about your current work/life balance?", so we would input it in that box.
  • Identity: Unlike the question about the department, this is a multiple-choice question as participants have to select from 0 to 5.
  • Options for user: Input the different options. In our case, it would be 0 to 5.
  • Save response as: Change the bot variable name for the first question to question1.

Notice that as you add a new option, multiple condition blocks are added beneath the question block.




After each question is answered by the employee, the bot is expected to ask the next question. To make this happen, we need to add a new node to one of the conditions. Click on the '+' sign and then 'Ask a question'. Fill in the block correctly.

  • Ask a question: Input the next question.
  • Identity: The same as above
  • Options for user: The same as above.
  • Save response as: Give each question a new variable name - question2 for the second question, question3 for the third question, and question4 for the fourth question.

Now we need to connect all condition blocks earlier to the second question. We do this so that whatever the response to the first question is, the second question would still be asked. To do this, click on the '+' sign and instead of adding a node, click on the small circle and connect to the second question block. Repeat this process for all conditions. Your flow should look like the image below.




Repeat this process for questions 2 and 3 - question 2 connecting to question 3 and question 3 connecting to question 4. After the 4th question, our bot should thank the employee for taking out time to fill the survey. To make this happen, add a 'Show a message' node to the flow, type in a short thank you message and connect all conditions to the message as shown in the image below.


You can test your bot to make sure it's working well by clicking 'Test your bot' on the left side of the page. CONGRATULATIONS ON SUCCESSFULLY BUILDING YOUR BOT!


Collecting Employee's Responses and Updating on SharePoint with Power Automate

Now let's connect our bot to our SharePoint using Power Automate. We start by adding a new node to our bot after the thank you message. Remember how to add a node? Just click on the '+' sign. This time we would pick 'Call an action' then 'Create a flow'. Clicking 'Create a flow' would open up Power Automate in a new window.




Notice that two actions have been automatically added to our Power Automate flow. In the first action, Power Automate is establishing a connection with our Power Virtual Agent bot. We need to add each question the bot would ask as input. To add the questions, click on '+ Add an input', then 'Text'. Notice that when you do, a new input box is added. Repeat this step for all the questions and fill in the details correctly.

  • Input: Use the same variable name you assigned to each question in the bot as the name of the input. For example, Department for the question to identify which department in your organization the employee works with, Question1 for the first question, Question2 for the second question, Question3 for the third question, and Question4 for the fourth question.
  • Please enter your input: Enter each question as input. Ensure you input the questions as arranged on SharePoint and in your Power Virtual Agent bot. 

We would head over to our Power Virtual Agent bot now and beneath the last message, we would add a new node but this time a 'Call an action'. You would notice that a new flow has been added to the list "Power Virtual Agents Flow Template". Select it. Immediately you do, you would notice the flow opens up. Something like the image below.


Now we need to select a variable name for each input. Remember we said our variable names would be used later to identify inputs? Now it's time to make use of them. Select the variable name that matches each question as shown below.

  • Department(text) would get it's value from variable department,
  • Question1(text) would get it's value from variable question1,
  • Question2(text) would get it's value from variable question2,
  • Question3(text) would get it's value from variable question3,
  • Question4(text) would get it's value from variable question4.

The second action automatically added to our Power Automate flow returns the values of the first action to Power Virtual Agents. We would need to create an output for each input entered in the first action. Repeat this step for all the inputs and fill in the details correctly.

  • Enter title: Enter each question as input. Ensure you input the questions as arranged on SharePoint and in your Power Virtual Agent bot.
  • Enter a value to respond: Click on 'Add dynamic content' and the pop-up, select the variable name for each question.


Our Power Virtual Agent flow would collect the response from the bot using the variable name assigned and use it as an output which would be used to create an item on our SharePoint list. To automatically create an item on our SharePoint list, we would need to add a new action to our Power Automate flow.


Head over to Power Automate and click '+ New step', search for "Create item (SharePoint)" and select. If you haven't already, you would need to sign in to SharePoint to create a connection. Click on 'Site Address' and select the SharePoint site you created your SharePoint list in. Click on 'List Name' and select the specific SharePoint list you created for this solution. Fill in correctly the Power Virtual Agent output that you want each column of your SharePoint List to work with.

  • Title: Click on 'Add dynamic content' and select the variable name we used to store the question "Which department do you work with?" - department. This would pick the response from that question and add it to that column.
  • Do you feel good about your current work/life balance?: In our bot, this was the first question. To add this as an output, click on the textbox, then 'Enter custom value'. Click the dynamic content question1
  • Do you feel like a true part of your team?: Click on the textbox then 'Enter custom value'. Select the variable question2
  • Do you feel like you are heading in the right direction as a team?: Follow the same process above, but this time select the dynamic content question3
  • Do you feel energized about your job?: Follow the same process above, but this time select the dynamic content question4

In the end, your flow should look like the image below.




Your SharePoint List would check for the response to those questions and update it to the specified column. Now save your Power Automate flow and your Power Virtual Agents bot and test the bot again. When you completely respond to all questions and have received the thank you message, you would notice that a new response would be automatically added to SharePoint.


HOLLA! :woman_dancing::man_dancing::sparkles::sparkles: CONGRATULATIONS ON REACHING THIS MILESTONE!


You can now publish your Power Virtual Agent bot by clicking 'Publish' in the left navbar. Then on the page that opens up, click Publish.

We would need to share our Power Virtual Agent bot on Microsoft Teams so our employees can access it. To do so, head over to 'Manage' and click on 'Channels'. On the new page that opens up, click on 'Microsoft Teams'. Your page should look like the one in the image below.


Click on 'Turn on Teams' so your bot would be turned on. To give everyone in your organization access to the bot, click on 'Availability options'. Select 'Show to everyone in my org' and 'Submit for admin approval' then 'Yes' to complete submission to administrators of your organization's Microsoft Teams if you are not one.


If you are one of the administrators in your organization's tenant, click here to learn how to approve the bot for everyone in your organization. When published, your employees can head over to the 'Apps' section of Microsoft Teams under "Built for your org", find the bot and add.


Here are additional resources for you to check out:

Building a scheduled reminder for this solution with Adaptive Card

Visualizing your SharePoint data with Power BI

Building your anonymous survey solution with Power Apps

Power Platform samples

Introduction to Power Virtual Agents

How to build a basic chatbot

Version history
Last update:
‎Dec 01 2021 10:34 AM
Updated by: