Author: paul

  • Some best practice tips for Power Automate

    Some best practice tips for Power Automate

    Best practices for Production flows

    Over the years, we’ve introduced a number of features for ALM (administration & lifecycle management) for flows in Power Automate. But, as they say, the shoemaker’s children always go barefoot. Our team has a number of flows that we rely on internally for day-to-day operations, but they were scattered about with little central management or oversight. It took some changes from our own Power Platform admins (yes, we have admins too!) to encourage us to get our house in order. Here’s what we learned in the process.

    Use a production environment

    That doesn’t mean stop using Preview! The Preview region is a great place to try new features and hone your skills. But once a team flow reaches a level where people are relying on it, we recommend exporting and importing it into a production environment in order to benefit from the added robustness.

    Add redundant owners

    If you have a flow which is used by your entire team, you don’t want people calling you up while you’re on vacation if it breaks. Make sure you add a couple co-owners so that they can update the flow in your absence. Who you add depends on how the flow is used. Probably at least your direct manager who can act as your proxy. Maybe your manager’s manager if all of their reports are relying on it. If your group is large enough and/or if you have a lot of team flows, you may consider creating a Security Group of 2-3 people who are willing to set aside a small amount of time to keep an eye on all the team flows. Don’t add your entire org as a co-owner though; that just invites more people to mess up the flow.

    Also keep in mind that the access applies to not just the flows themselves but to the connections they use. For example, if your flow sends mail from a shared mailbox, make sure that the co-owners have access to that mailbox in case they need to recreate the connection while you’re gone.

    Use solutions

    Solutions are a great way to organize flows so that they don’t end up in a big long list. You’ll need to start by adding (or asking your admin to add) a Common Data Service database to your environment. After that’s done, you can go to the Solutions tab to create a new solution for your team, or you can create multiple solutions if you have a lot of flows that you’d like to further organize. There are a number of other benefits too, such as native storage for your data, child flows to reuse functionality, and solution export as backup. There are also some known limitations to solutions though, so this may not apply to all of your flows.

    Mark it as prod

    Solutions are the recommended way to organize flows. But sometimes your flow can’t go in a solution, or sometimes your solution will get crowded with other drafts and proofs of concept. Either way, we recommend prefixing the names of your production flows with “[PROD]” so that co-owners know to leave it be unless it has issues.

    Use shared senders

    Sending messages from Power Automate as yourself is fine for smaller cases, but as the process gets more formalized we recommend changing it to a shared sender. This helps the recipients know that it was sent via automation rather than as personal nag. It has the added benefit that people won’t try to bug you directly in response to something that’s meant to be purely informational. For the Microsoft Teams connector, we have a few “Post as the Flow bot” actions that are well suited to this. Outlook has “Send an email from a shared mailbox”, though you’ll need to bring your own mailbox. This advice also applies to updating tickets, creating records, etc., but the specifics will vary by connector.

    Add a signature

    When using automation to send emails and post messages, you want people to know where it’s coming from. This may seem somewhat contradictory to the last one, but it’s really complementary. The shared mailbox helps the recipient identify that the message is not coming from you directly. But there are cases where the automation might break or start triggering too quickly, in which case you should be easily reachable to correct the problem. This is especially important if the automation works with people outside your org or external systems where the recipient may not be aware of your flow. People may even want to contact you to suggest ways to make your flow even better! We use a signature like “Sent with Power Automate. Contact <your email> with questions.” You may also find it helpful to link to the specific flow so that you can find it quickly if someone forwards you the email.

    Opt-in to notifications

    Notifications are one of the most popular uses of Power Automate. Maybe you want to get an email when someone uploads a new file to SharePoint or posts a new response in Microsoft Forms. Maybe you want to get a weekly status report of work items in Azure DevOps or charts in Power BI. One of most common types of internal flows was daily or weekly reports of SLAs, errors, and usage metrics from Azure Data Explorer, sent to individuals and teams. These types of flows are great for a number of scenarios. But keep in mind that not everyone is as excited to get yet another email as you are. These often quickly end up as Outlook filters, and suddenly you’re using up flow runs emailing no one. Before adding a distribution list to an automated email, we recommend making sure that the information is either need-to-know, or that the distribution list allows users to individually remove (and add) themselves. If you find yourself checking these metrics on an ad hoc basis rather than as they come in, the data may be better off in a dashboard (e.g. Power BI or Azure DevOps) so that it’s available on demand.

    In closing

    ALM is a problem that every organization has to deal with, even our own. So hopefully these tips help you more effectively manage your team flows. Any other suggestions from our Power Users out there? Any remaining questions or pain points? Let us know in the comments!

  • Use Power Automate to deploy a SharePoint site and lists

    Use Power Automate to deploy a SharePoint site and lists

    Back in the day, you could save a SharePoint site as a template (or solution) and deploy it elsewhere. Nowadays, it’s not quite so easy.

    In this post, we’ll show you how to use Power Automate to make a REST API call and create a site and add a new list. This a great way for admins to manage request for new sites.

    The master list

    First of all, create list in a team site. This list will be used to trigger the flow and create the site and list.

    The flow

    Next, create a flow from the Automate button. The trigger will be ‘Complete a custom action for the selected item’

    Then initialise a variable, like so

    Next, we’ll make an API call to SharePoint and create our new site

    Here’s the header and body code for you to copy:

    {
      "Accept": "application/json;odata=verbose",
      "Content-Type": "application/json;odata=verbose;charset=utf-8"
    }
    {
    "request": {
      "__metadata": { "type": "Microsoft.SharePoint.Portal.SPSiteCreationRequest"},
    "WebTemplate": "STS#3",
    "Title": "@{body('Get_item')['Title']}",
    "Url": "@{variables('SiteURL')}",
    "Description": "@{outputs('Get_item')?['body/Description']}",
    "Classification": "",
    "SiteDesignId": "00000000-0000-0000-0000-000000000000",
    "Lcid": 1033,
    "ShareByEmailEnabled": false,
    "WebTemplateExtensionId": "00000000-0000-0000-0000-000000000000",
    "Owner": "i:0#.f|membership|you@yourdomain.com",
    "HubSiteId": "00000000-0000-0000-0000-000000000000"
    }
    }
    
    #Be sure to change the email address for "Owner"

    Creating the list

    The first step is to create the list. This can be done by inserting a SharePoint HTTP Request Action in your Flow and setting it up like so:

    Figure 1 – Create List Action in Power Automate

    You’ll want to update the Title and Description properties and fill those in with the name and description of your list. The “BaseTemplate” property is what determines the type of list you’re creating. 100 is a blank list and 101 is a document library.

    Creating Fields in the List

    Once you create the list you need to add additional SharePoint HTTP Actions to create each field that you need to add in the list. That action will look like this:

    Figure 2 – Create Field Action in Power Automate

    In the URI input you’ll want to make sure you replace the “getbytitle(‘Name of your list’) with the name of the list you want to add your field to. The body of the action will vary based on the type of field you want to create. For quick reference, I have provided a table with the most common column types and the associated body code needed for the Power Automate action below:

    Column TypePower Automate Code
    Single Line of Text{
    ‘__metadata’: {‘type’:’SP.FieldText’, ‘addToDefaultView’: ‘true’ },
    ‘FieldTypeKind’: 2,
    ‘Title’: ‘Name of Single Line of Text Field’
    }
    Multi Line of Text{
    ‘__metadata’: {‘type’:’SP.Field’, ‘addToDefaultView’: ‘true’ },
    ‘FieldTypeKind’: 3,
    ‘Title’: ‘Name of Multi Line of Text Field’
    }
    DateTime{
    ‘__metadata’: {‘type’:’SP.FieldDateTime’, ‘addToDefaultView’: ‘true’ },
    ‘FieldTypeKind’: 4,
    ‘Title’: ‘Name of DateTime Field’,
    ‘DisplayFormat’: 0
    }
    Boolean (Yes/No){
    ‘__metadata’: {‘type’:’SP.Field’, ‘addToDefaultView’: ‘true’ },
    ‘FieldTypeKind’: 8,
    ‘Title’: ‘Name of Yes No Field’
    }
    Choice{ ‘__metadata’:
    { ‘type’: ‘SP.FieldChoice’, ‘addToDefaultView’: ‘true’ },
    ‘Title’: ‘Name of Choice Field’,
    ‘FieldTypeKind’: 6,
    ‘Required’: ‘true’,
    ‘Choices’: { ‘results’: [‘Choice 1’, ‘Choice 2’, ‘Choice 3’ ] }
    }
    Hyperlink{
    ‘__metadata’: {‘type’:’SP.Field’, ‘addToDefaultView’: ‘true’ },
    ‘FieldTypeKind’: 11,
    ‘Title’: ‘Name of Hyperlink Field’
    }
    Number{
    ‘__metadata’: {‘type’:’SP.FieldNumber’},
    ‘FieldTypeKind’: 1,
    ‘Title’: ‘Name of Number Field’
    }
    Person/Group{
    ‘__metadata’: {‘type’:’SP.Field’, ‘addToDefaultView’: ‘true’ },
    ‘FieldTypeKind’: 20,
    ‘Title’: ‘Name of Person or Group Field’
    }

    Figure 3 – SharePoint REST API Column Types

    Add the Columns to the Default View

    This next step is optional. If you want to make sure that the fields you just created show up in the default view of the list then you need to perform a couple more actions in your Flow. First, you’ll need an initialize variable action which will store an array of all of the column names you want to add like so:

    Figure 4 – Configure the Column Names Variable

    Once you have that, you need an Apply to Each action and within that you’ll make one final SharePoint HTTP action which will take those columns and add them to the default view like so:

    Figure 5 – Add the Columns to the View
  • Employee recruitment and on-boarding with Office 365 and Power Platform – Pt 1

    Employee recruitment and on-boarding with Office 365 and Power Platform – Pt 1

    In the series of posts, we are going to look at how you can utilise the suite of Office 365 and Power Platform products to automate the recruitment and onboarding of new employees. We will use (among other things) SharePoint Online, Microsoft Teams, PowerApps, Power Automate, Word, Outlook and Power BI.

    We’ll also apply some JSON to format columns and create adaptive cards

    The scenario

    In this scenario, we will start with a request to recruit a new employee, which will then go through an approval process and trigger a series of actions within Power Automate flows.

    During this series, we’ll also create a Microsoft Team to store all details of applications and supporting documents (resumes, cover letters, etc.)

    Request to recruit

    To begin with, we’ll create a SharePoint team site (mine is called People Culture Team). In this site, we’ll create list (mine is called Recruitment Requests). My list has the following columns:

    NameType of column
    TitleSingle line of text
    Type of requestChoice
    (choices are ‘backfill’ & ‘new position’
    Position TitleSingle line of text
    New Position JustificationMultiple lines of text
    Previous Incumbent NameSingle line of text
    Previous Incumbent Reason For LeavingChoice
    (choices are ‘Internal Transfer’ & ‘Termination (including resignation’
    Covered By BudgetYes/No
    Request LocationChoice (for this example, you only need to have two or three choice. In real-life/larger company, you may prefer a lookup column)
    Reports ToPerson or Group
    Reports To PositionSingle line of text
    Employment TypeChoice (My choices are ‘Full-time’, ‘Part-time’, ‘Casual’ & ‘Fixed-term contract’
    Recruitment MethodChoice (My choices are ‘External’ & ‘Internal’)
    Commencement DateDate and time (Date only)
    Position Description AttachedYes/No
    Base SalaryCurrency
    SuperCurrency (might not apply to any readers outside of Australia)
    Mobile AllowanceCurrency
    Laptop AllowanceCurrency
    Link To RequestSingle line of text (we will use JSON to format this column in a later post)
    P&C ApproverPerson or group
    P&C OutcomeSingle line of text
    P&C CommentsMultiple lines of text
    SLT ApproverPerson or group
    SLT OutcomeSingle line of text
    SLT CommentsMultiple lines of text
    GM ApproverPerson or group
    GM OutcomeSingle line of text
    GM CommentsMultiple lines of text

    If you don’t want to manually create this list, here’s a flow I created for you. You just need to change the URL to one that sits inside your tenant, e.g. https://yourtenant.sharepoint.com/sites/peoplecultureteam, and run the flow.

  • Trigger a Power Automate flow from a Microsoft Teams message

    Trigger a Power Automate flow from a Microsoft Teams message

    Microsoft Teams can help bridge geographic and organizational gaps through capabilities like chat, meetings, and calling, but users often ask how it can help streamline the work they do. Fortunately, Teams and Microsoft Power Automate work seamlessly together to simplify how you and your team work.

    We’re excited to share a new way to use this integration to automate and simplify work, starting from a conversation in Teams.  The new “for a selected message” trigger enables any Teams user to create a custom message action to start a flow from any message in Teams.  Even more powerful, is that flow creators can build this capability for their entire team, so everyone can easily benefit from some automation in their workday.

    Example scenarios:

    Below are four great examples of how teams can automate critical processes right from chat, but thanks to the flexibility of Power Automate, the possibilities are endless. Each of these flows are available as templates for you to use or modify to fit your needs right away!

    Set a message reminder

    There are times you might want to be reminded of a message from a colleague or your manager at a later time, like after your Teams meeting, or before the next upcoming meeting in a week.  With a “follow-up later” flow, Teams users will simply have to click the “…” on the right-hand side of a message to set a reminder and specify when they want to be reminded.  The Flow bot will send a reminder and a link to the message right in Teams.

    Create a SharePoint item

    We all need to keep lists – whether that’s a store inventory, project status, or the plan for an event.  SharePoint lists are a great way to organize information and rich file types for you and your team, and now Teams users can easily add content to their SharePoint lists directly from chat with this new Power Automate trigger.  Once the flow laid out below has been created, users will be able to add critical data to their list right from the chat – for example, if they learn that new inventory has been received.

    Sales teams: Convert a chat to a Sales opportunity

    Creating a customer opportunity is a critical step in any Sales process, and often that opportunity starts with a conversation.  So why not capture that information right from that conversation where it began.

    When you build the flow below using the “for a selected message” trigger, anyone in your team can easily create a sales opportunity just by clicking the “…” on the right side of a message in Teams and selecting “Create a Sales opportunity”.  Simply fill out a custom form right in Teams, and the information you enter is automatically sent to your CRM system.

    Create a work item in Azure DevOps

    With so much collaboration and planning happening over chat now, messages can be a great way to request or report new work items to your development team. By combining the “for selected message” trigger with the Azure DevOps “create a work item” action, you can now use the message as the starting point to create a work item. All the details from the message, such as the message contents or who the sender was can be used to provide more details as part of creating the work item.

    These templates are just scratching the surface you can always create your own to fit your business needs. Check out below for specific instructions on creating custom message actions for Teams, and check back here often for updates on what we’re rolling out next!


    Creating your own Teams actions

    To create a custom Teams message flow, choose the “For a selected message” trigger from the Teams connector. You can even configure the trigger to collect information from the user when its run from within Teams. For instance, if the flow is creating a task, you can use the adaptive card to collect information like the title of the task and the description.

    Collecting information from the user

    To collect information as part of the flow, you can quickly and easily create a custom form right from within the flow editor using the embedded card designer experience.

    Using message details within the flow

    There are a number of message elements that are available as a trigger output for use within the flow. Some of the more useful properties include:

    • Message content – The full HTML content of the Teams message
    • Plain text message output – Plain text variation of the Teams message
    • Link to message – A direct url to reference the message
    • Sender display name, Sender id – Details of the user who sent the message
    • Originating user display name, Originating user id – Details of the user who invoked the flow

    Triggering the flow from within Teams

    Any flow that uses the “For a selected message” trigger shows up as a message action in the Teams message over flow “More actions” menu. The name that you give the flow is what is shown in the Teams client.

    Check out the “for a selected message” documentation to learn more about this new capability.  Of course the examples above are just scratching the surface of what is possible for you and your team to automate, so check out the Power Automate templates for Teams and learn to build your own flows to achieve even more.  We’re excited to hear about what you build!

  • Use Power Automate to create terms in the term store

    Use Power Automate to create terms in the term store

    Introduction

     With the introduction of SharePoint V2 REST API for Managed Metadata services, it has become very easy to create a term in term store using REST API. But what if we would like to automate things? In such cases we can use the help of Power Automate. In the automation, we would create a simple custom SharePoint list with only title field, and when a user enters the item in the list we would create a term for that particular title. 

    Steps to be used to create flow using Power Automate

    Step 1 – Select the trigger (when an item is created) We require this flow to trigger when a new item is created in the list, so we select the trigger as “when an item is created”. Once we have selected the trigger we need to select the site collection where the list is present and the list for which we need this trigger to work, 

    How To Create Term In Term Store Using Power Automate

    Step 2 – Create variables (Initialize variable) We will create two variables with the step named “Initialize variable” Let us set the name of the variables as mentioned below:

    1. GroupId
    2. TermSetId

    We will use string as the type of both the variables. We can provide the value as Group Id and TermSet Id. To fetch the Id of group and term set we can navigate to the SharePoint admin center and expand the content service section present in the left navigation and click on Term store. Click on the group under which we need to create the term and copy the “Unique identifier” field value. In the same process for the term set, we can select the term set under which we need to create the term and copy the “Unique identifier” field value. 

    How To Create Term In Term Store Using Power Automate
    How To Create Term In Term Store Using Power Automate

    Step 3 – REST API (Send an HTTP request to SharePoint) We will now send the REST API to create the term, for that we will add a step named “Send an HTTP request to SharePoint”. This will allow us to use the SharePoint REST API v2 for Managed Metadata service for creating terms. Site Address – We can select the site address from where we need to post the API.Method – We will Select POST as the method value. Uri

    1. _api/v2.1/termStore/groups/@{variables(‘GroupId’)}/sets/@{variables(‘TermSetId’)}/children   

    NoteWe will use the groupId and TermSetId variables in the URI. Body

    1. {  
    2.     “labels”: [  
    3.         {  
    4.             “name”: “@{triggerBody()?[‘Title’]}”,  
    5.             “isDefault”: true,  
    6.             “languageTag”: “en-US”  
    7.         }  
    8.     ],  
    9.     “descriptions”: [  
    10.         {  
    11.             “description”: “@{triggerBody()?[‘Title’]}”,  
    12.             “languageTag”: “en-US”  
    13.         }  
    14.     ]  
    15. }   

    NoteWe have used the title as name and description of the term but we can use another field value created in the list as described. 

    How To Create Term In Term Store Using Power Automate

    Conclusion

     Term creation is automated by using flow in Power Automate. This can be helpful as most of the users will not have access to term store but they can create an entry in the list and if the user who has created the flow has proper access to create the term, then the terms get created in Term Store.

  • Finding your feet with Microsoft PowerApps development – Part 02

    Finding your feet with Microsoft PowerApps development – Part 02

    In the last post, we had a quick introduction to PowerApps. We also demonstrated how to quickly create your first app.

    In this post, we’ll take a look at the app you created and how it can be used to view or edit existing data and create new items in our data source.

    A look at the app

    From top to bottom, the default home screen is in this app is made up of three elements:

    1. Quick action bar
    2. Search bar
    3. Gallery of items

    Quick action bar

    From left to right, the icons in the quick action bar allow a user to:

    1. Refresh the app gallery to show new data
    2. Change the order in which items are displayed (ascending or descending)
    3. Create a new item

    We’ll get back to the quick action bar later.

    Search bar

    The search box isn’t so much of a search option, it’s a filter. In the image below, you’ll see that, after typing ‘fi’, only two of the five items in the gallery still show.

    Gallery

    The gallery (shown above) is a view of items from our SharePoint list and, by default this gallery shows particular details about each item, e.g., title, name and department.

    Clicking on an item in a gallery will take you to a screen that shows more information about the item selected.

  • Finding your feet with Microsoft PowerApps development – Part 01

    Finding your feet with Microsoft PowerApps development – Part 01

    PowerApps makes the creation of business applications significantly easier (and cheaper) than the traditional approach to app development. In this post, we’ll give you some tips to help you find your feet in the world of developing with PowerApps.

    1.What is PowerApps?

    PowerApps is a collection of services that allow organisations to create their own business applications, using the data that they have stored in existing services, e.g., a SharePoint list or Excel spreadsheet, without having to have app development experience.

    2. Accessing PowerApps

    If your organisation already uses Microsoft 365, you’ve probably got access to create and use PowerApps.

    To access PowerApps, you can either go to powerapps.microsoft.com and login or select it from the list of available apps in the Office portal.

    3. Creating an app

    There is more than one way to create your app and here, we’ll look at the simplest way; from a SharePoint list.

    1. You’ll need to create a SharePoint list, similar to below. I recommend creating a new list and using test data to avoid making changes to items in a production list.

    2. Next, select PowerApps from the command bar and the select Create an app

    3. In the fly-out window on the right hand side, name your app and select create

    This will launch PowerApps Studio in a new browser tab.

    4. You first app has been created

    Now, you’ve created your first app. In the next post, we’ll take a look at the PowerApps Studio and how to use it to make some changes to your app.

    Click here to learn how 365 Evergreen can help your organisation make the most of low-code solutions, using PowerApps.



  • Finding your feet with PnP PowerShell part 1

    Finding your feet with PnP PowerShell part 1

    Introduction

    In this series, we will look at PnP PowerShell discover what it is and how it can be used to manage your Microsoft 365 tenants. In this post focus on what PnP PowerShell is, how to install at and run some simple cmdlets.

    What is PnP PowerShell?

    Microsoft describes PnP PowerShell as ‘a cross-platform PowerShell Module providing over 500 cmdlets that work with Microsoft 365 environments.’

    These cmdlets focus primarily on:

    • SharePoint Online
    • Microsoft Teams
    • Microsoft Planner
    • Power Automate.

    How to install PnP PowerShell

    Before you can install the PnP PowerShell module, you’ll need to have already installed the SharePoint Online Management Shell, from the PowerShell Gallery.

    You can see if you already have the SharePoint Online Management Shell installed, by open running PowerShell as an administrator.

    1. From the start menu, search for PowerShell and ‘Run ISE as Administrator’
    • In the window that opens, paste the below and hit the green play button

    Get-Module -Name Microsoft.Online.SharePoint.PowerShell -ListAvailable | Select Name,Version

    • To then install the latest version, paste the below line and hit the green play button

    Install-Module -Name Microsoft.Online.SharePoint.PowerShell

    • In the pop-up window that appears, select ‘Yes to All’ and wait for the installation to finish. If you already have the latest version, a message will tell you so.

    Now that PnP has successfully been installed, you can start to remotely administer our tenant.

    How to connect to your tenant with PnP PowerShell

    It only takes one cmdlet to connect to your tenant with PnP PowerShell.

    1. In the PowerShell window paste the below, replacing the bold caps with your tenant domain and your 365 username and hit the green play button:

    Connect-SPOService -Url https://YOURTENANT-admin.sharepoint.com -Credential LOGIN@DOMAIN.com

    • Enter your password in the pop-up window that appears.

    If you tenant use multi factor authentication, you can use the below cmdlet and enter your credentials in the pop-up window that appears.

     Connect-SPOService -Url https://YOURTENANT-admin.sharepoint.com

    And that’s it. You’ve now installed PnP PowerShell and connected to you Microsoft 365 tenant. In the next post, we’ll look at executing some of the most common cmdlets for SharePoint Online.

  • Build a policies and procedures hub with Microsoft 365 – Part 02

    Build a policies and procedures hub with Microsoft 365 – Part 02

    Introduction

    In the previous post, we created and configured a SharePoint team site for storing policy and procedure documents and a list that will be used to track who has and who has not read a document.

    In this post, we’ll create a PowerApp that will list documets that are assigned to each user.

    Before we start:

    • upload at least one document to the library that houses your policies and procedures
    • create a task in the task list and assign it to yourself

    Creating the app

    Follow these steps to create a simple app that will list a user’s outstanding documents and allow them to complete an acknowledge task.

    1. Go to https://powerapps.microsoft.com and create a new canvas app from blank
  • Build a policies and procedures hub with Microsoft 365 – Part 01

    Build a policies and procedures hub with Microsoft 365 – Part 01

    Introduction

    Policies and procedures play an essential role in any organisation and it is essential that employees have access to the latest documentation.

    By combining SharePoint and the Power Platform, it is quite easy to create a robust solution that can mange the creation and dissemination of these documents, as well as tracking who has

    In this series of posts, we will:

    • create a policies and procedures team site SharePoint
    • create site columns using the tenant-wide term store
    • use Power Automate to send notifications to readers and creators
    • create a PowerApp to allow users to acknowledge that they have read and understood the document
    • create a policies and procedures hub (using the PnP modern search web parts)
    • create a Power BI dashboard to show reports

    Pre-requisites

    The following instructions are written with the assumption that you have exposure to SharePoint and the Power Platform, as well as sufficient privileges, e.g., Tenant global admin, Term store admin, etc..

    Create terms

    We’re using the term store to provide values for the metadata in the site columns used in the policies and procedures document library.

    You can always skip this step and create other types of columns, e.g., choice or lookup.

    The beauty of using the term store is that the metadata can be used in sites across your whole tenant, i.e., you don’t need to replicate terms for each site collection.

    To create new terms in the term store:

    • Go to Microsoft 365 admin center
    • Select see all > SharePoint
    • Select Content services > Term store
      (https://YOURTENANT-admin.sharepoint.com/_layouts/15/online/AdminHome.aspx#/termStoreAdminCenter)
    • Select Add term group
    Modern term store experience
    • Give the term group a name (we’re using Policies and Procedures)
    • Within this group, create the following term sets and values:
      • Business unit
        • Accounts
        • Business support
        • Finance
        • HR
        • IT
        • Operations
      • Document type
        • Guideline
        • Manual
        • Policy
        • Procedure

    For information about the term store, click here.

    To learn how you populate the term store using Power Automate, click here.

    The SharePoint team site

    Now, we’ll create a SharePoint team site to store the policy and procedure documents. This site will also contain the lists that will be used to track the status of documents, e.g., who has and who hasn’t read a document.

    The team site we are using is called Polices & Procedures Team (https://TENANT.Sharepoint.com/sites/PoliciesProceduresTeam).

    Site columns

    We now need to create the site columns (they need to be site columns to make use of the search functionality later on).

    Use a good naming convention for the internal name for your columns, e.g., create a column called BusinessUnit and rename it Business unit afterwards. This prevents special characters appearing the name of the column.

    The site columns we need to create are:

    NameType
    Business UnitManaged metadata
    (use Business unit term set we just created)
    Document typeManaged metadata
    (use the Document type term set we just created)
    Document ownerPerson or group
    Published dateDate and time
    (Date only)
    Next review dateDate
    (Date only)
    Date assignedDate
    (Date only)
    Assigned toPerson or group
    Acknowledgement statusSingle line of text
    (Default value is Assigned)

    Content types

    Next we need to create the content types and add the necessary site columns.

    NameParentColumns
    Policy and procedure documentDocumentBusiness unit
    Document type
    Document owner
    Published date
    Next review date
    Policy and procedure taskItemAssigned to
    Date assigned
    Acknowledgement status

    Library and list

    Next, we need to create a document library (rather than using Shared documents) and a task list. We’re calling our library ‘Policy and Procedure documents’ and our list ‘Acknowledgements’.

    To make things easier and repeatable, e.g., to move between environments, we have created a site design that you can download from here.

    Next steps

    In this post, we have configured the SharePoint team site that will be used to store our policies and procedures, as well as a list that will track who has and who has not read each document.

    In Part 02, we’ll use PowerApps to create a simple canvas app that displays a list of documents for a user to acknowledge.