How to schedule SharePoint pages and news posts to publish on a specific date and time

Sometimes you may have SharePoint news posts edited and ready to go, but have to wait for an official announcement or date to arrive before you can share the news. Rather than wait for that date and manually publish, we can schedule news posts to go live at a date and time we specify.

In order for this to work, we have to turn on a setting for the Site Pages library in which we’re creating the news.


Only site owners can enable page and news publishing for their site. If you’re a site member, ask your site owner to follow the steps in the first section.

How to enable scheduling for your site’s SharePoint pages and news

  1. Go to your Site Contents (settings wheel | Site Contents) and select your Site Pages library (this is where your site’s pages and news are created and stored).
Site Pages library location in SharePoint | Click to enlarge
  1. Select Scheduling at the top
Scheduling option at the top of the Site Pages library | Click to enlarge
  1. Toggle on the Enable scheduling option

Now your site’s members can use the scheduling feature for their pages and news. The next section shares user steps to do so.

How to schedule SharePoint pages and news

  1. Create your page or news post as you normally would (Site’s home page | New | Page or News post)
Location of new page and news post options on a site | Click to enlarge
  1. When you’re ready to schedule the post, click Page details | Enable Scheduling and add the Publish Start Date/time | Schedule (this button changes from Post/Publish to Schedule after you’ve entered the publish start date)
Scheduling steps for SharePoint pages and news | Click to enlarge

How to live stream a Microsoft Teams meeting to YouTube without installing additional software

Live streaming Teams meetings and webinars to YouTube may expand your audience and allow for more viewers to engage with your event than otherwise might. It’s great for running a virtual conference or event where you need to embed YouTube videos in the platform for a streamlined approach. YouTube also saves your live streams as videos in your channel without the need to do a separate upload after an event. This concept gives users/presenters the ease of just having a normal Teams meeting, but the power of enhanced broadcasting and distribution.

Though I’m focused on YouTube in this blog post, the same setup on the Teams side is required to live stream to social media platforms or otherwise.

Thanks to recent updates to Microsoft Teams, you no longer need OBS Studio or other third-party software installations to live stream your Microsoft Teams events to YouTube. However, this ability launched in disabled state by default, so a Teams Administrator will need to complete the prerequisites prior to someone being able to live stream.


At this time, live streaming only works for meetings and webinars in Microsoft Teams – not live events.

Admin prerequisites to live streaming with Microsoft Teams

Before users can broadcast their live stream from Microsoft Teams, a Teams administrator needs to create or modify a Meeting policy and:

  • Enable Live Streaming Mode (General section)
  • Turn on Local Broadcasting (Audio & video section)

You can modify the Global (Org-wide) default Meeting policy which would allow everyone to broadcast and live stream, or you can create/modify a separate Meeting policy and apply it only to specific users who should be allowed to live stream.

Here’s how to modify the Global (Org-wide) default meeting policy to allow everyone in your org to live stream:

  1. Go to the Teams admin center (
  2. Select Meetings | Meeting policies
  3. Select the name of the policy you wish to modify. In this example, Global (Org-wide) default).
Location of the global/default meeting policy in the Microsoft Teams Admin Center | Click to enlarge
  1. Enable Live streaming mode, and turn on Local broadcasting as seen in the following screenshot.
Live streaming settings in a Meeting policy | Click to enlarge

Technically, you could just enable Live streaming mode for this post. But by also turning on Local broadcasting (NDI), your users will have greater flexibility to produce their Microsoft Teams events with broadcasting software like OBS Studio, XSplit, etc. which gives additional capabilities like setting up scenes and such.

  1. Click Save


The changes may take an hour or so to take effect after saving your policy changes.

Your users will now be able to live stream their Teams events. Now let’s go through those steps.

Producer prerequisites to live streaming with Microsoft Teams

If you are going to be the producer of an upcoming event, you’ll need to make a change to your individual Teams client settings before you’re able to proceed.

Simply open your settings in Teams (ellipsis/three dots by your profile picture | Settings) and then select App permissions. Here you can enable NDI capabilities.

NDI capabilities enabled in the Teams client settings | Click to enlarge

How to live stream a Microsoft Teams meeting or webinar to YouTube

Users assigned the policy created or modified in the admin prerequisite section can follow these steps to live stream directly to YouTube from Microsoft Teams.

  1. First we need to set up the live event on the YouTube side. Go to YouTube Studio ( and sign in with the account you wish to broadcast to.
  2. Click Create | Go live in the upper right
YouTube steps to Go live | Click to enlarge
  1. Choose whether you’re going live Right now, or whether you’re just setting up for a Later date. Either way, you’ll have additional steps that may vary from this post – follow the prompts to complete setup.
Go live options in YouTube | Click to enlarge
  1. Continue through your YouTube prompts but do not go live yet. When you get out of the wizard, be sure you’re on the Stream tab on the left-hand navigation and locate the Stream key and Stream URL. You’ll need to copy both of these and use them later in step 9.
YouTube stream key and stream URL locations | Click to enlarge
  1. Now we need to switch to Microsoft Teams. Join the meeting or webinar you wish to live stream.
  2. Add the Custom Streaming app to the meeting
Steps to add the Custom Streaming app to a Teams meeting | Click to enlarge
  1. Click Add
Custom Streaming app info and confirmation screen | Click to enlarge
  1. Click Save
Custom Streaming app welcome screen | Click to enlarge
  1. In the right-hand panel that opens, paste the Stream key and Stream URL you copied in step 4.
Copy/paste paths for stream key and URL | Click to enlarge
  1. Click Start streaming in the lower right, then select Allow in the dialog box when it appears.
Streaming meeting confirmation dialog | Click to enlarge
  1. You’re now live streaming! Share your screen and/or use your cameras and microphones to run your event as you would any normal Microsoft Teams meeting.
A screenshare from Microsoft Teams being live streamed to YouTube | Click to enlarge
  1. When you’re finished with the event, you can stop streaming via Teams and YouTube.
Stop streaming button in the Custom Streaming app panel | Click to enlarge
End stream button in YouTube | Click to enlarge

How to reset a SharePoint column value to blank using Power Automate

In Power Automate, setting an already-populated SharePoint list or library field to blank isn’t as simple as leaving the field blank in your flow. Luckily, it’s just a couple extra steps to make it possible.

In this post I’ll cover multiple column types as they’re a bit different.

  • How to set text, date, number, and yes/no column values to blank
  • How to set single choice column values to blank
  • How to reset multi-choice column values to blank
  • How to reset person column values to blank

How to set SharePoint text, date, number, and yes/no column values to blank

The steps in this section will work for these column types:

  • Single line of text
  • Multiline text
  • Date
  • Number
  • Yes/No
  1. Click into the field you want to reset to blank
  2. Select Expression
  3. Type Null in the expression box (not case-sensitive)
  4. Click OK
Adding a Null expression in Power Automate | Click to enlarge

Test your flow and it should reset the field value(s) to blank wherever you used the Null expression.

Showing the fields that were reset using Power Automate | Click to enlarge

How to set SharePoint single choice field values to blank

To set a choice field back to blank (no selection) follow these steps:

  1. Add a step before updating the item that initializes a variable. The step is called Initialize Variable.
  2. Set the variable name to Blank, and the type to String. Do not set a value.
  3. In your update action, set the choice field value to the new variable from dynamic content.
Creating a blank variable in Power Automate | Click to enlarge

Test your flow, and you should see your single choice field reset to no choice.

Result of a Power Automate flow resetting a choice field | Click to enlarge

How to reset SharePoint multi-choice column values to blank

A normal choice column in SharePoint has more options that allow it to be set to multiple choice.

Multiple selection option for a choice field in SharePoint | Click to enlarge

Changing a single-select choice column to a multi-choice field alters how Power Automate resets the field, but it’s still similar to the steps involved for a single choice field.

To set a multiple-choice field back to blank (no selections) follow these steps:

  1. Add a step before updating the item that initializes a variable. The step is called Initialize Variable.
  2. Set the variable name to BlankArray, and the type to Array. Do not set a value.
  3. In your update action, select the T icon next to your multiple-choice field.
  1. Set the multi-choice field value to the new variable from dynamic content.
Power Automate actions resetting a multiple-choice field to blank | Click to enlarge

Test your flow and your multi-choice fields should now reset to blank.

Result of a Power Automate flow resetting multiple-choice fields to blank | Click to enlarge

How to reset SharePoint person column values to blank

Perhaps one of the more complicated column types to reset, a person field takes a bit more work to reset. To accomplish this, we can use an HTTP request. Follow these steps to empty a SharePoint person column’s value.

  1. Add the Send an HTTP request to SharePoint step
  2. Following the screenshot below, set the fields as follows (you must replace all red items with your own values):
    • Site Address (select your site)
    • Method: POST
    • Uri: _api/web/lists/getbytitle(‘YOUR LIST TITLE‘)/items(YOUR ITEM ID FROM DYNAMIC CONTENT)
    • Headers
      • IF-MATCH | *
      • X-HTTP-Method | MERGE
      • Content-Type | application/json;odata=verbose
      • Accept | application/json;odata=verbose
    • Body:

Important notes for the Body field

If your list name has a space, replace it with _x0020_ such as Null_x0020_demo.

Field names are different than display names. Even if your field displays with a space (Person field) it is likely Personfield on the backend. You can verify your column’s actual name by going to List settings (gear icon) and selecting your column from the Columns section. Your field’s actual name will be displayed in your browser’s URL.

How your HTTP request should look when finished | Click to enlarge

Test your flow and you’ll find that your person column has been reset.

How to generate random sample paragraphs using Microsoft Word

There are many web tools out there to generate random “lorem ipsum” filler content, but you can do the same thing using Microsoft Word. Simply:

  1. Type =RAND(5) on a line
  2. Hit enter

Instantly, the formula is replaced with five paragraphs of sample content. Replace 5 in the formula with the number of paragraphs you wish you to generate.

See a video demonstration here:

Video demonstration on YouTube

Shoutout to Jaime Velez for telling me about this for the first time. Game-changer!

Want additional tools for different types of sample content? Try the following:

How to get a distinct count of unique values in Excel

Note: Video demonstration at bottom of post.

In some applications, like Power BI, you can get a distinct count of unique values in a column in just a click or two. But of all the functions in Excel, there isn’t a straightforward “Distinct Count” unfortunately.

There are, however, the following two functions that, when used together, give the desired result:

  • COUNTA – Counts the number of cells in a range that are not empty
  • UNIQUE – Returns the unique values from a range or array

So, we’re listing all the unique values we have in a range or column by using UNIQUE and then nesting it within the COUNTA function to count the number of values returned. Here are three examples:

Distinct count goalFormula example
Distinct count for a range of cells=COUNTA(UNIQUE(E19:E26))
Distinct count for a table column when referenced within the same table=COUNTA(UNIQUE([Project]))
Distinct count for a table column when referenced outside the table=COUNTA(UNIQUE(Table1[Project]))

Be sure to replace the cell range, column name, and/or table and column name in the formulas with your own.

A video demonstration of this formula in use is embedded below.

Celebrating four years as a Microsoft MVP in Microsoft 365 apps and services

This is the fourth consecutive year I’ve been awarded as a Microsoft MVP in the Microsoft 365 Apps & Services category. 🤩

What does that mean?

Microsoft presents the MVP award annually to individuals who have regularly made high-quality contributions to the tech community. Sometimes this is forum participation, conference and user group presentations, books, blogs, videos, code and solutions, social media, or any number of other ways a person has evangelized and helped drive adoption and understanding of Microsoft 365.

I focus my contributions on Microsoft 365 productivity and collaboration apps like OneDrive, SharePoint, Teams, Power Automate, Power BI, and more. Specifically:

And all of that’s in addition to my regular, full-time day job.

To become an MVP, start tracking your contributions and reach out to an existing MVP or Microsoft employee that you’ve established a relationship with to secure a nomination. If we’ve crossed paths or worked together, I would be honored to nominate you.

It has been a true pleasure and privilege to be a part of this amazing community for four years now. Here’s to the next year of content, experiences, and connections. 🥳🥂

Where to find your Microsoft Teams meeting ID and passcode

You may have noticed your Microsoft Teams meeting invites now include meeting IDs and passcodes, and there’s a new Join with an ID button on Calendar. In this blog post I’ll cover several meeting ID-related topics for meeting organizers:

  • Find your Teams meeting ID and passcode
  • Find your Teams meeting ID and passcode during a meeting
  • Add someone to a Teams meeting already in progress
  • Microsoft Teams meeting IDs vs join links

In a rush? Here’s the quick answer:

  • Not in a meeting yet? Open the event on your calendar and you’ll find the meeting ID and passcode in the event details
  • In a meeting already? Go to More | Meeting info

Find your Teams meeting ID and passcode (when not already in the meeting)

  1. Open Microsoft Teams and select Calendar from the left
  2. Double-click or edit the meeting for which you’d like to retrieve the meeting ID
  3. Copy the Meeting ID and Passcode from the meeting details

Note that you can also get the join link from the same section if you prefer. The contents you see here as the meeting organizer (join link, ID, passcode, and call-in info when relevant) is the same contents any invited participants received. They can find this on their calendar by opening the event and viewing its details.

Location of meeting ID and passcode in meeting details (click to enlarge)

Find your Teams meeting ID and passcode during a meeting

To find your Teams meeting join link, meeting ID, and passcode during a meeting, select More | Meeting info.

More | Meeting info in a Teams meeting (click to enlarge)

From here, you can scroll to the bottom for the join link, meeting ID, and passcode.

The location of your meeting’s link, ID, and passcode during a meeting (click to enlarge)

You can select Copy join info at the top of the same panel which resembles the following and includes both entry options as well as call-in info when you’re licensed appropriately. This might be handy to paste in a quick Teams message or email for last-minute requests:

An example of the contents copied to your clipboard when you click Copy join info (click to enlarge)

Add someone to a Teams meeting already in progress

Now let’s imagine you’re in the middle of a Microsoft Teams meeting, and you’d like someone to join you. If they’re in your organization’s directory, you can simply:

  1. Open the People panel
  2. Type in their name and select Request to join next to it when it appears

However, you can’t invite external participants as easily because no matches show up.

No matches found when searching for an external person during a meeting (click to enlarge)

So for external people, use the method described at the beginning of this post (More | Meeting info) and send the join link, meeting ID, and passcode to the individual you’re asking to join. If the link doesn’t work for them and they want to use the ID to join, they’ll go to Calendar in Microsoft Teams, select Join with an ID and enter the info you provided.

A user’s screen when entering a meeting ID and password (click to enlarge)

If they don’t have a Microsoft Teams account to utilize Calendar, there will also be a public join webpage soon where they can enter the meeting ID and passcode and join.

Microsoft Teams meeting IDs vs join links

When it comes to secure meetings, links and IDs are about the same. If someone forwards the meeting invite to a stranger, they can attempt to join the meeting. If you’re concerned about this, perhaps because you’re sharing NDA content in a meeting or just don’t want strangers hopping in, be sure to utilize the “People I Invite” lobby settings so you can decline any unfamiliar or uninvited persons attempting to enter.

Join links specifically are perfectly fine to continue using and they are very difficult for a bad agent (with the intention of crashing your meeting) to guess. Imagine trying to guess something this long and complex, even with bot assistance:,%22Oid%22:%22c3db5526-5334-4d0a-ba50-bece903d370%22%7D

Join links are quick and easy for invitees to use. Click the link and you’re at the pre-join screen making sure your devices are setup properly.

Meeting IDs also take you directly to the pre-join screen, and may be a better option if someone is having difficulty using the link you provided. Perhaps their firewall is preventing the link from working or there are other restrictions on their machine that don’t allow them to utilize links normally. Meeting IDs give them an alternative entry method that isn’t dependent on an https:// url.

Why is there a passcode? Without a passcode, a stranger could simply start guessing meeting IDs (which are much easier to guess than the long, complicated join links) and they could pay you and your colleagues an unwanted visit.

Best practice would be to send people both options so they have a backup method if needed. Your meeting invites automatically include both already, and if you’re in a meeting attempting to add someone who wasn’t originally invited, you can go to More | Meeting info and select Copy join info which will copy both options to your clipboard for those last-minute invites via messages or emails.

Power Automate solution: OneNote action errors involving invalid or inaccessible Notebook Keys and sections

When using OneNote (Business) in a Power Automate flow, you may be attempting actions such as Create section in a notebook, Get sections in notebook, or Create page in a section but getting errors when trying to select the relevant notebook and section.

And depending on what you’re using as the Notebook Key and/or Notebook section value(s) you may get any of the following specific errors:

  • Error; the requested notebook or section may have been deleted or is otherwise inaccessible.
  • Invalid notebook key
  • The specified resource ID does not exist.
  • The section id is invalid. If a custom value was entered, please try selecting from the supplied values.

I’ll show you how you may be able to solve this issue in this blog post by using a custom value for Notebook Key. To insert a custom value for Notebook Key, use the dropdown arrow in the Notebook Key field and select Enter custom value.

Enter custom value option for Notebook Key (click to enlarge)

Now you can type text freely. You’ll need to format your notebook key one of two ways, depending on whether it’s a personal (OneDrive for Business) notebook or a shared (SharePoint/Teams) notebook. Both solutions are below.

Solution #1: OneNote Notebook key API format for your own notebooks (stored in OneDrive for Business)

For OneDrive notebooks, such as the default one you get like Nate @ Contoso, format your notebook key as seen below, replacing highlighted parts with your own notebook name, organization URL, and email address (with underscores instead of the usual symbols).

Nate @ Contoso|$| @ Contoso

Still not working? Your organization may have a .com added (even if you don’t see it in your notebook name). Try adding .com to your notebook name in both locations (beginning and end):

Nate @|$| @

Solution #2: OneNote Notebook key API format for shared notebooks (stored in SharePoint and used there or in Microsoft Teams)

For shared notebooks, such as the default one you get with every Microsoft Teams team or SharePoint team site, format the notebook key as follows. Be sure to replace bold components of the key with your own notebook name, organization URL, and notebook location:


For example, all default notebooks are stored in a SharePoint site’s Site Assets folder so a complete Notebook key for a notebook like that may resemble the following (yes, you can leave the spaces in notebook names):

Mark 8 Project Team Notebook|$| 8 Project Team Notebook

Or if it’s not the default notebook, and it was created in a document library a couple folders deep, it might resemble the following. Just replace Shared Documents with the name of the library, and replace the folder structure as appropriate:

Policies and Procedures|$| Documents/Folder 1/Folder 2/Policies and Procedures 

As long as you enter the key correctly using either solution, your flow will connect to the notebook properly and, when relevant, the Notebook section dropdown will refresh and allow you to simply select the section you want rather than entering an API URL.

Notebook section dropdown functioning properly with a correct Notebook Key (click to enlarge)

Additional troubleshooting when sections are still not appearing

If you are certain you followed the instructions above correctly, made no typos, and you used the correct type of key format based on the notebook’s location (OneDrive or SharePoint), and you’re still seeing “Could not retrieve values…” for Notebook section, it might be a simple fix.

Just cut (Ctrl+X) and paste (Ctrl+V) the Notebook Key you entered into the field again and it may refresh and fix the second dropdown.


OneNote (Business) – Connectors | Microsoft Docs

How to move all OneDrive for Business files to a shared location

Sometimes people need to move or copy many files at once from their OneDrive to a shared folder or location. This is sometimes simply for reorganizing and sharing content more efficiently. Other times, it’s because a user learns that OneDrive is tied to individual employees so when they leave, their OneDrive will be gone as well. What files do you currently have in your OneDrive that others would need if you left the company?

Does your team use Microsoft Teams regularly? Every team in Microsoft Teams has a SharePoint site that supports it – so moving files to a site connected to a team makes those files more easily accessible via Teams as well.

If you need to perform a bulk move like this, you can individually select what you want to move or select all files in your OneDrive for Business and move or copy them to a shared location, such as your team’s SharePoint site. The steps are listed below, or a video demonstration is available at the bottom of the post.

How to move all your files from OneDrive to SharePoint

  1. Multi-select the files you intend to move or copy, or “select all”
  2. Select Move to (or Copy to if you wish to keep a version of your own)
Select all files | Move to actions (click to enlarge)
  1. Find the site/team under Quick Access to which you’re moving files (you may need to click More places…)
    • You can create a new folder (as seen in video at bottom of post) if there’s not a great existing option for keeping them organized
    • Each site/team may have multiple libraries – use the library switcher next to the site name at the top to choose a different library
Document library switcher when moving or copying files (click to enlarge)
  1. Select Move here and wait for the move to complete before closing your browser

In this video, I’ll show you how to move all OneDrive for Business files to a document library on a team-connected SharePoint site.

Imagine Cup and Imagine Cup Junior 2022 winners

I was honored to be a judge again this year for one of my favorite community initiatives: Imagine Cup Junior. Imagine Cup Junior is a technology-centered competition hosted by Microsoft for teams of 1-6 students ages 13-18. Judges this year were asked to evaluate teams’ contest submissions using a standardized rubric for the theme, AI for Good. I am so very inspired by the ingenuity and heart behind the solutions presented.

Check out the top 10 winning teams for Imagine Cup Junior 2022 and their innovative, AI for Good solutions that earned them a top acknowledgement.

Many who compete in Imagine Cup Junior later compete in the main Imagine Cup competition (teams of 1-4, for ages 16+). You can learn more about Imagine Cup here and watch this year’s World Championship ceremony that first aired during Microsoft Build earlier this year.

Congratulations to this year’s winner, V Bionic, and to all teams for their creativity and passion for making the world a better place for all.