惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
V
V2EX
Jina AI
Jina AI
爱范儿
爱范儿
M
MIT News - Artificial intelligence
量子位
L
LangChain Blog
Google DeepMind News
Google DeepMind News
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
腾讯CDC
MongoDB | Blog
MongoDB | Blog
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss

rss.livelink.threads-in-node

Probably has less bugs than windows 11 | Microsoft Community Hub Quick question about window PC requirements for meta link cable? Is it possible to run ryujinx canary on an administrator account on windows? Why Windows 11 still depends on 1990s code iphone auf pc spiegeln windows 11 – Welche Methode funktioniert zuverlässig? CHERIoT-Ibex: Closing the door on memory safety vulnerabilities with hardware-enforced protection Known issue: Upgrading Microsoft Tunnel version 20260129.1 What's New in Microsoft Entra: May 2026 Carta de validación TSP (aka.ms/TSP_Achievement_Code_Enroll...) restricted across all accounts unable to enroll Class Admin Build observability for scalable AI apps and agents selling through Microsoft Marketplace Inspektor Gadget Completes Its First Independent Security Audit Retirement of Direct Exchange ActiveSync Certificate-Based Authentication by End of 2026 Export mixed text and tabular Excel to PDF Safely Migrating Terraform Managed Disks on Azure Using Stable Keys and Copilot Microsoft 365 & Power Platform Community call Microsoft 365 & Power Platform product updates call Course Retirement Announcement: AI-3022 The End is Nigh for DES and an Update for hunting down RC4 Unable to Access Scheduling Poll Options Title Plan Update - May 8, 2026 Secure Medallion Architecture Pattern on Azure Databricks (Part II) From Observability to Action: Building an AI-Powered AIOps Agent for Customer-Specific Operations General Availability of Mailbox Import and Export Microsoft Graph APIs Why External Participants Can—or Can’t—Join a Microsoft Teams Meeting CRITICAL: Data Loss on Build 26200.8328 - AI Storage Sense deleted 160+ apps with 870GB free space. Why is everyone hating on Windows 11? I was pissed at the Windows 11 context menu so I built this. Windows 11 Shows ASUS LOGO but then goes dark for 5 minutes Windows 11 causes discrete graphics cards to be locked at their base clock speed when idle
Peer recognition program in M365. Has anyone done this wi...
EmmaHastings · 2026-05-21 · via rss.livelink.threads-in-node

Forum Discussion

EmmaHastings's avatar

HR wants to launch a peer recognition program where employees can give kudos to each other. They want it visible to the team, maybe tied to company values, and ideally something that feeds into performance reviews at year end. I looked at Viva Engage but its more of a social feed and theres no way to categorize recognitions by company values or pull them into reviews. Has anyone built something like this using M365 tools or found an app that handles it?

3 Replies

  • ClaireB's avatar

    I honestly love all the creative solutions offered here already, but as someone who has tried this extensively, there aren't any direct Microsoft apps that can help you with implementing a proper employee recognition system. There are workarounds like the ones mentioned above but recognition systems are more complex and demanding than one might initially expect.

    I suggest you look for a Microsoft native third party recognition software. Something that lives inside Teams or Outlook and works seamlessly. I know Teamflect is a good example of that type of software. I'm sure there are some other options in the app store as well.

  • Rob_Elliott's avatar

    You can create something like this just with a SharePoint list and a JSON view formatting. In the example below it's displayed in a list web part.

    The list is fairly basic:

    But the view formatting is pretty long!:

    {
      "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/tile-formatting.schema.json",
      "width": 300,
      "height": 450,
      "hideSelection": true,
      "formatter": {
        "elmType": "div",
        "style": {
          "width": "95%",
          "height": "95%",
          "border": "1px solid",
          "box-shadow": "0 3.2px 7.2px 0",
          "border-radius": "6px",
          "display": "flex",
          "flex-direction": "column",
          "justify-content": "center"
        },
        "attributes": {
          "class": "ms-fontColor-neutralTertiaryAlt"
        },
        "children": [
          {
            "elmType": "div",
            "style": {
              "width": "70%",
              "display": "flex",
              "flex-direction": "row-reverse",
              "height": "30px"
            },
            "children": [
              {
                "elmType": "div",
                "style": {
                  "position": "relative",
                  "display": "flex",
                  "justify-content": "center"
                },
                "children": [
                  {
                    "elmType": "div",
                    "style": {
                      "position": "absolute",
                      "width": "50px",
                      "height": "50px",
                      "border-radius": "50%",
                      "border": "2px solid",
                      "z-index": "2",
                      "display": "flex",
                      "justify-content": "center",
                      "align-items": "center",
                      "font-size": "28px"
                    },
                    "attributes": {
                      "class": "ms-bgColor-themePrimary ms-fontColor-white",
                      "iconName": "[$Icon]"
                    }
                  },
                  {
                    "elmType": "div",
                    "style": {
                      "position": "absolute",
                      "top": "45px",
                      "z-index": "1"
                    },
                    "children": [
                      {
                        "elmType": "div",
                        "style": {
                          "width": "40px",
                          "height": "20px"
                        },
                        "attributes": {
                          "class": "ms-bgColor-themePrimary"
                        }
                      },
                      {
                        "elmType": "div",
                        "style": {
                          "border-left": "20px solid",
                          "border-right": "20px solid",
                          "border-bottom": "10px solid transparent"
                        },
                        "attributes": {
                          "class": "ms-fontColor-themePrimary"
                        }
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "elmType": "img",
            "style": {
              "width": "150px",
              "height": "150px",
              "border-radius": "50%",
              "border": "1px solid"
            },
            "attributes": {
              "src": "=getUserImage([$To.email], 'L')",
              "class": "ms-fontColor-neutralTertiaryAlt"
            },
            "defaultHoverField": "[$To]"
          },
          {
            "elmType": "div",
            "txtContent": "[$To.title]",
            "style": {
              "font-size": "15px",
              "padding": "5px"
            },
            "attributes": {
              "class": "ms-fontColor-neutralSecondary"
            }
          },
          {
            "elmType": "div",
            "style": {
              "display": "flex",
              "flex-direction": "column",
              "width": "85%",
              "height": "27%",
              "overflow": "hidden",
              "margin-top": "15px"
            },
            "attributes": {
              "class": "ms-fontColor-neutralSecondary"
            },
            "children": [
              {
                "elmType": "div",
                "txtContent": "[$Title]",
                "style": {
                  "font-weight": "bold",
                  "font-size": "23px"
                }
              },
              {
                "elmType": "div",
                "txtContent": "[$Description]",
                "style": {
                  "margin-top": "3px"
                }
              }
            ]
          },
          {
            "elmType": "div",
            "txtContent": "= 'From : ' + [$From.title]",
            "defaultHoverField": "[$From]",
            "style": {
              "width": "90%",
              "display": "flex",
              "flex-direction": "row-reverse",
              "height": "25px",
              "align-items": "center",
              "overflow": "hidden"
            },
            "attributes": {
              "class": "ms-fontColor-neutralSecondary"
            }
          },
          {
            "elmType": "div",
            "style": {
              "width": "90%",
              "display": "flex",
              "justify-content": "space-between",
              "font-size": "17px",
              "margin-top": "10px"
            },
            "children": [
              {
                "elmType": "div",
                "style": {
                  "display": "flex",
                  "justify-content": "center",
                  "align-items": "center",
                  "width": "30px",
                  "height": "30px",
                  "cursor": "pointer",
                  "border-radius": "50%"
                },
                "attributes": {
                  "iconName": "OpenPane",
                  "class": "ms-fontColor-themePrimary ms-fontColor-themeDark--hover ms-bgColor-themeLighter--hover"
                },
                "customRowAction": {
                  "action": "defaultClick"
                }
              },
              {
                "elmType": "div",
                "style": {
                  "display": "flex",
                  "flex-direction": "row"
                },
                "children": [
                  {
                    "elmType": "div",
                    "style": {
                      "display": "flex",
                      "flex-direction": "row",
                      "align-items": "center",
                      "cursor": "pointer",
                      "padding": "3px 5px 3px 5px",
                      "border-radius": "5px"
                    },
                    "attributes": {
                      "class": "ms-fontColor-themePrimary ms-fontColor-themeDark--hover ms-bgColor-themeLighter--hover"
                    },
                    "customRowAction": {
                      "action": "setValue",
                      "actionInput": {
                        "Likes": "=if(indexOf([$Likes.email] , me) > -1 , removeFrom([$Likes.email] , me) , appendTo([$Likes.email] , me) )"
                      }
                    },
                    "customCardProps": {
                      "openOnEvent": "hover",
                      "directionalHint": "rightCenter",
                      "isBeakVisible": true,
                      "formatter": {
                        "elmType": "div",
                        "style": {
                          "max-height": "300px",
                          "padding": "5px 20px 5px 20px",
                          "display": "flex",
                          "flex-direction": "column"
                        },
                        "children": [
                          {
                            "elmType": "div",
                            "style": {
                              "padding": "10px",
                              "font-weight": "bold",
                              "font-size": "20px",
                              "display": "flex",
                              "align-items": "center",
                              "flex-direction": "row"
                            },
                            "attributes": {
                              "class": "ms-fontColor-themePrimary"
                            },
                            "children": [
                              {
                                "elmType": "div",
                                "style": {
                                  "margin-right": "5px"
                                },
                                "attributes": {
                                  "iconName": "HeartFill"
                                }
                              },
                              {
                                "elmType": "div",
                                "txtContent": "=length([$Likes])"
                              }
                            ]
                          },
                          {
                            "elmType": "div",
                            "children": [
                              {
                                "forEach": "personIterator in [$Likes]",
                                "elmType": "div",
                                "style": {
                                  "margin-bottom": "5px",
                                  "display": "flex",
                                  "align-items": "center"
                                },
                                "children": [
                                  {
                                    "elmType": "img",
                                    "style": {
                                      "width": "32px",
                                      "height": "32px",
                                      "border-radius": "50%",
                                      "margin-right": "5px"
                                    },
                                    "attributes": {
                                      "src": "=getUserImage([$personIterator.email], 'S')",
                                      "title": "[$personIterator.title]"
                                    }
                                  },
                                  {
                                    "elmType": "span",
                                    "txtContent": "[$personIterator.title]"
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      }
                    },
                    "children": [
                      {
                        "elmType": "div",
                        "style": {
                          "margin-right": "5px"
                        },
                        "attributes": {
                          "iconName": "=if(indexOf([$Likes.email] , me) > -1 , 'HeartFill' , 'Heart' )"
                        }
                      },
                      {
                        "elmType": "div",
                        "txtContent": "=length([$Likes])"
                      }
                    ]
                  },
                  {
                    "elmType": "div",
                    "style": {
                      "display": "flex",
                      "flex-direction": "row",
                      "align-items": "center",
                      "cursor": "pointer",
                      "padding": "3px 5px 3px 5px",
                      "border-radius": "5px"
                    },
                    "attributes": {
                      "class": "ms-fontColor-themePrimary ms-fontColor-themeDark--hover ms-bgColor-themeLighter--hover"
                    },
                    "customRowAction": {
                      "action": "defaultClick"
                    },
                    "children": [
                      {
                        "elmType": "div",
                        "style": {
                          "margin-right": "5px"
                        },
                        "attributes": {
                          "iconName": "Comment"
                        }
                      },
                      {
                        "elmType": "div",
                        "txtContent": "=if([$_CommentCount] == '' , 0 ,[$_CommentCount])"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    }

    Because it's based on a list you can pull it into other things like reviews with Power Automate.

    Rob
    Los Gallardos
    Microsoft Power Platform Community Super User.
    Principal Consultant, Power Platform, WSP Global (and classic 1967 Morris Traveller driver)

  • VasilMichev's avatar

    Viva Insights offers more robust "Praise" feature, but I'm not sure whether you can tie it to performance reviews, even those part of Viva Glint.