We wanted to build out an employee recognition program. It had to:
a. be easy to use -intuitive
b. Integrate with Microsoft Teams
c. Be trackable (who sent what, to whom, when)
d. Easily output metrics for use by management for praise/reward systems.
Someone on my team recommended we use Praise, which is an app build into Microsoft Teams. This is a decent solution, but we need a way to see the praise, and take a look at metrics. If we want to recognize the praise that has been given, or someone who is very good at giving praise, we need to know that data. My research brought me to this post by Dapt.UK.
I love that they built out this tutorial for everyone to see, but it’s a little old, and for a newbie, it wasn’t as intuitive as I wanted it to be, so I’m going to replicate what I did below)
Step 1 : Create a Sharepoint Site with a list. Your list needs 7 columns.
Column Name | Field Type | Column Formatting |
Title | Single line of text | No formatting |
Badge | Single line of text | { “$schema”: “https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json”, “elmType”:”img”, “style”: {“width”: “100px” }, “attributes”:{ “src”: “@currentField” } } |
Giver | People Picker | No formatting |
Recipient | People Picker | No formatting |
Praise Type | Single line of text | No formatting |
Date Received | Single line of text | No formatting |
Reason | Single line of text | No formatting |
You can format the badge column by clicking on the column, going to column settings and then format this column. Then type in the json and click save.

Step 2: Next you need to build an automated workflow.
To do this: Log into flow.microsoft.com Then click on Create, Automated cloud Flow






Trigger 1:
@contains(first(triggerBody()?[‘attachments’])?[‘content’],’praise’)
Trigger 2:
@contains(first(triggerBody()?[‘attachments’])?[‘content’],’AdaptiveCard’)
Now. Add a new Step in the flow:



Add a New Step.



Before you go any further – rename this section to AttachmentsContent !!!
Now,
Now, you need 2 MORE Compose sections. In each one, add in an Expression (same as before)
First Compose expression : outputs(‘AttachmentsContent’)?[‘body’][0]
Second Compose expression: outputs(‘Compose’)?[‘items’][4]
Lets take quick stock of where we are now. You should have 5 steps so far.

Lets keep going. Now we need to add in a variable.

In the Name field – enter in a name. I chose PraiseMessage. Choose String for your Type. Then enter in the following as an expression in the Value field: outputs(‘Compose_2’)?[‘text’]

Add in a new step.





items(‘Apply_to_each’)?[‘Mentioned’]?[‘user’]?[‘id’]



Give this a title.
Then, in the Badge field – add in the following expression
first(skip(first(outputs(‘AttachmentsContent’)?[‘body’])?[‘items’],3))?[‘url’]




first(skip(first(outputs(‘AttachmentsContent’)?[‘body’])?[‘items’],1))?[‘altText’]



That’s it! Your done! Be sure to Save your flow!



Now, go add a message into your Teams channel!

Wahoo! Your flow worked perfectly!
Now, you need to go to your Sharepoint Site and make sure that the flow ran and updated the sharepoint site the way you wanted it to. You also need to test and make sure that when someone gives praise on the site, that it automatically updates the sharepoint site.

**Note** While my script ran and populated my list on my Sharepoint site, the Badge part isn’t working, and I don’t get the people images in front of the names that the tutorial shows that I should get. So, my next steps are to troubleshoot that part. I’ll update this blog when I have found out the solutions!