Training
Module
Configure and manage file access - Training
This module describes how to control access to files and folders using permissions.
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Important
Read the migration overview to get a summary of the process. See the migration process & checklist for more detail and link to all important articles and pages.
If you have questions or feedback about the migration tool you can join our Customer Office Hours to talk directly with our engineering team.
Review the Stream (Classic) retirement timeline as some of the dates have been extended to give customers more time for migration.
This article elaborates on various migration articles that need detailed explanation.
You can download this video to learn how to generate and read an inventory report.
It's an inventory report of all videos in Stream (classic) and gives a bunch of metadata information. The report helps you plan the migration and take decisions on which video to migrate to Stream (on SharePoint). The output is a CSV file with a row for each video in Stream (Classic). We've also created an example of Power BI Desktop report template that you could use to analyze, filter, and understand the inventory data.
Note
Stream admin role is a prerequisite to run the report
The report contains the following information for each video.
Thus, videos that are ineligible for migration are:
Videos that aren't published or in draft, meaning the only person that can see it, is the original uploader. Admins should ask these users to publish their video, so that they're picked by the tool for migration.
Videos that are in processing or upload error state and thus aren't able to be played. They can never be migrated.
Videos that are deleted by the user and are in the recycle bin
To identify eligible videos via report look for line items that satisfy the following criteria.
Important information about report:
Updating token for large tenants
Example Usage
.\StreamClassicVideoReportGenerator_V1.11.ps1 -AadTenantId "00000000-0000-0000-0000-000000000000" -InputFile "C:\Users\alias\Desktop\token.txt" -OutDir "C:\Users\alias\Desktop" -ResumeLastRun true
.\StreamClassicVideoReportGenerator_V1.11.ps1 -AadTenantId "00000000-0000-0000-0000-000000000000" -InputFile "C:\Users\alias\Desktop\tokentxt" -OutDir "C:\Users\alias\Desktop" -ResumeLastRun true -PublishedDateLe "2022-07-15" -PublishedDateGe "2022-01-15"
Please note:
Example: .\StreamClassicVideoReportGenerator_V1.11.ps1 -AadTenantId "00000000-0000-0000-0000-000000000000" -InputFile "C:\Users\alias\Desktop\token.txt" -OutDir "C:\Users\alias\Desktop" -ResumeLastRun false
For assistance in troubleshooting in failure, share the log.txt and state.csv files generated under the OutDir folder.
Last updated to v1.04
To help analyze the output from the inventory report, we created an example Power BI Desktop template that ingests the csv files output by the script. The example Power BI report helps you better understand what content is in Stream (Classic), who it belongs to, and if it's stale. You can use this report to help decide which containers you want to migrate.
Note
We are providing this example template as is. It's meant to be a quick jump start for your migration analysis. Feel free to take our example, tweak it, and build your own reports off of it. We are not providing support for this template itself. If you find issues with it or have suggestions, we'll do our best to address those as we have time.
Download the example PowerBI template that analyzes the Stream (Classic) inventory CSV. Template version last updated to ver 1.04. Make sure you're using latest version.
Open the downloaded .pbit file in PowerBI Desktop
Enter the local file path to the folder containing the .csv exports generated from the script (remove trailing backslashes at the end of the path)
Example: C:\StreamClassicVideoReport\20221013T1155251021
Select Load
If your SharePoint has more than 100-K sites, Microsoft 365 group autodestination mapping may not work perfectly. You can use the same inventory report to fill in the missing entries. Follow the following steps:
From the 'Upload destinations' button in Migrations tab, download the MigrationDestination (CSV) template. Use this file as input to the script.
Run the following command and pass the file in Step #1 as param value to 'MigrationDestinationCsvFilePath'.
Example Usage
.\StreamClassicVideoReportGenerator_V1.11.ps1 -AadTenantId "00000000-0000-0000-0000-000000000000" -InputFile "C:\Users\alias\Desktop\token.txt" -OutDir "C:\Users\alias\Desktop" -CreateDestinationPathMappingForM365GroupContainers true -MigrationDestinationCsvFilePath "C:\Users\Username\Desktop\MigrationDestinations.csv”
Output:
A new csv file named 'MigrationDestinationMappingForM365GroupContainers_guid.csv' is created in OutDir. Upload this file to MigrationTool via 'Upload Destinations.'
A log file logs_guid.txt is also be created, which can be used to investigate failures if any.
Callouts:
Refer to the documentation on this script to know its various modes and the purpose each one accomplishes.
Ensure that you have the script and its dependencies set up correctly as given in step #4. Identify the mode you want to run: Mode 1, Mode 2, or Mode 3.
Decide whether you want to run the script with the Resume Flag set to true or false.
Provide the following input files specific to the mode you selected:
The script output generated by each mode is stored in their respective directories. Directory structure would be common across all modes:
ModeName_TimeStamp
Out: This directory holds output files
State: This directory holds the state files
Admin token is required for running the script and can be extracted in the same as for Inventory report.
Example Usage
.\StreamPermissionUpdate_V1.1.ps1 -AadTenantId "00000000-0000-0000-0000-000000000000" -OutDir "C:\Users\alias\Desktop" -Resume $false -tokenFilePath "C:\Users\alias\Desktop\token.txt"
Once you run the above command, you're prompted to select the mode and input CSV path on command prompt.
This section explains how permissions are mirrored between Stream (Classic) and Stream (on SharePoint).
We already discussed the defaults for the video migration destination location. Admins are free to over-ride our defaults. They can either choose to change the location of a single destination or in bulk.
In Stream (Classic), a video can have multiple owners. In OneDrive and SharePoint (ODSP), a video can have multiple owners in SharePoint but always have a single owner in OneDrive for Business (ODB).
ODSP has physical boundaries meaning, videos in a physical location (like a folder or a document library). Stream (Classic) has soft boundaries meaning videos can be visible in multiple locations and groups such as, MyContent and Groups.
Stream (Classic) has legacy constructs such as, Stream groups, or a company channel. ODSP has Microsoft 365 groups and communication sites.
For a Microsoft 365 group in SharePoint, members of a group will always have edit rights. For Stream (Classic), members could have edit or view rights based on the Contributor setting at the time of the group's creation.
The permissions on a video between Stream (Classic) and Stream (on SharePoint) will be mirrored. However, due to the above differences in permissions behavior, we recommend you go through this article in detail. Once you’re familiar with the differences in permissions, set custom permissions on a few test videos, migrate them, and then verify the permissions behaved as you expected. Some videos are associated with multiple entities, such as users, groups, Stream groups, and a company channel. The migration destination and permissions for these multiple-entity videos are explained in the following cases.
User A uploads a video to Stream (Classic). The video is never displayed in a group or a channel, and User A is the only owner. Default migration mapping in Stream:
User A uploads a video in Stream (Classic) and shares the ownership with User B. The video is never displayed in a group or channel. Default migration mapping in Stream:
User A uploads a video to Stream (Classic) and shares the ownership with Group A.Default migration mapping in Stream:
User A uploads a video to Stream (Classic) and shares ownership with both Group A and Group B. Default migration mapping in Stream:
Note
Stream-only groups come from the Office 365 Video to Stream (Classic) migration. If you didn't migrate to Stream (Classic) from Office 365 Video, this case wouldn’t affect you.
User A uploads a video to Stream (Classic) and shares ownership with both the Stream-only group and Microsoft 365 Group A as other owners of the video. Default migration mapping in Stream:
User A uploads a video to Stream (Classic) and shares ownership with both the Company channel and Microsoft 365 Group A as other owners of the video. Default migration mapping in Stream:
User A uploads a video to Stream (Classic) and associates it with Company channel. Default migration mapping in Stream
Given the above, we recommend you:
In summary, if a video is associated with multiple entities such as, a Microsoft 365 group, Stream group, and a company channel, we follow this order:
The below table showcases what happens to the user permissions in various cases:
One Drive | SharePoint (public group, private group, or comms site) | |
---|---|---|
User A (creator & only owner) Parent container: User A^ |
#1. Location: User A's ODB User A has owner access on files and folders. Viewers- point #2. Location: Any other ODB User A and other person get owner access on files & folder. |
#3. User A gets owner access and site collection admin gets owner access on all files and folder. |
User A (creator) and User B (second owner) Parent container: User A |
#4. Location: User A’s ODB User A has owner access on files and folder. User B has owner access on only video file. User B won't see SMVF folder. User B can search for file and watch the video. #5. Location: User B’s ODB Both user A and User B have owner access on all files and folder. |
#6. User A gets owner access and site collection admin gets owner access on all files and folder. User B has owner access only on video file and won't see SMVF^. |
User A with Group A Parent container: Group A |
#7. Location: User A's ODB User A gets owner access on files and SMVF. Group members have edit or view permissions based on contributor flag setting in Stream (Classic) on all files and SMVF. Microsoft 365 group A members should be added as owners of the file. They can just watch the video and search for it, but can't see the files or folder in ODB |
#8. Location: Group A public Site Group A owner gets access on all files and SMVF. Group A members get viewer /Edit access based on contributor flag in Classic. User A has owner access only on video files and won't see SMVF. #9. Location: Any other group public site The Group owner gets access on all files and SMVF. Group A members get viewer/edit access based on contributor flag in Classic. The other group members don’t get any access since we do break inheritance on SMVF. User A has owner access only on video file and won't see SMVF. |
User A with Group A and Group B Parent container: Group A |
#10. Location: User A's ODB User A gets owner access on files and SMVF. Group A members have edit or view permissions based on contributor flag setting in Stream (Classic) on all files and SMVF Group B members have edit or view permissions based on contributor flag setting in Classic, but only on the file. |
#11. Location: Group A public Site Group A owner gets access on all files and SMVF. Group A members get viewer /Edit access based on contributor flag in Classic. Group B members have edit or view permissions based on contributor flag setting in Classic, but only on the file. User A has owner access only on video file and won't see SMVF. #12. Location: Any other group public site The Group owner gets access on all files and SMVF. Group A members get viewer/edit access based on contributor flag in Classic. The other group members don’t get any access since we do break inheritance on SMVF. Group B member has edit or view permissions based on contributor flag setting in Classic, but only on the file. User A has owner access only on video file and won't see SMVF. |
User A with Microsoft 365 Group A and CWC Parent container: Group A |
#13. Location: User A ODB User A gets owner access on files and SMVF^. Group A member has edit or view permissions based on contributor flag setting in Stream (Classic) on all files and SMVF. EEEU view permissions are applied on the file. And everyone in the company will be able to watch the video |
#14. Location: Group A public Site Group A owner get access on all files and SMVF. Group A members get viewer /Edit access based on contributor flag in Classic. EEEU view only permission is applied on the file. And everyone in the company will be able to watch the video. User A has owner access only on video file and won't see SMVF^. #15. Location: Any other group public site The Group owner gets access on all files and SMVF. Group A members get viewer/edit access based on contributor flag in Classic. EEEU view permissions are applied hence everyone in the company will be able to watch the video. User A has owner access only on video file and won't see SMVF^. |
User A with Microsoft 365 Group A and SoG Parent group: SoG |
#16. Location: User A ODB User A gets owner access on files and SMVF^. Group A member has edit or view permissions based on contributor flag setting in Stream (Classic) only on the video. All owners, viewer, and member of SoG will individually get corresponding permissions on this SoG named folder inside SMVF. |
#17. Location: Any site Group owner gets access on all files and SMVF. Group members get viewer /Edit access based on contributor flag in Classic only on the video. All owners, viewer, and member of SoG will individually get corresponding permissions on this SoG named folder inside SMVF. User A has owner access only on video file #18. Location: Any other group public site The Group owner gets access on all files and SMVF. Group A members get viewer/edit access based on contributor flag in Classic only on the video file The other group members & viewers get corresponding permissions on SMVF^. This case is unlike others since we don’t break inheritance on Stream group folder instead of SMVF1. User A has owner access only on video file. |
User A with Company channel Parent container: Company channel |
#19. Location: User A ODB User A gets owner access on files and SMVF^. EEEU view permissions are applied on the SMVF. And everyone in the company will be able to watch the video. |
#20. Location: Any Group site Group owner gets access on all files and SMVF. EEEU view permissions are applied on the SMVF. And everyone in the company will be able to watch the video. User A has owner access only on video file. |
Orphaned video | #21. User gets owner access on files and SMVF^. We break inheritance on SMVF and assign owner permissions to a global admin. If no such admin exists, we assign owner permissions to a Stream admin. |
#22. Group owner gets access on all files and SMVF^. We break inheritance on SMVF and assign owner permissions to a global admin. If no such admin exists, we assign owner permissions to a Stream admin. |
When we decided about how to migrate permissions between two versions of Stream, we had two options:
We choose option #1 based on customer feedback. More customers wanted to mirror permissions. Though Site collection admins additionally would still have access even if we chose #1. But that is SharePoint construct.
The group owner & members have access to the migrated video via search ( they may be able to see the video in doc lib depending upon if they're 1st or 2nd owner on the group). Even though we mirroring permissions during migration, #2 is still achievable via following methods
$SiteURL = "https://(insert tenant).sharepoint.com/sites/strim/"
$ListName ="Shared Documents"
#Connect PNP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)
#Get the Context
$Context = Get-PnPContext
#Get the list items
$items = Get-PnPListItem -List $ListName
foreach ($item in $items) { #Remove unique permissions $item.ResetRoleInheritance() $item.update() $Context.ExecuteQuery() }
Stream (Classic) URLs and embeds will be supported for one year after Stream (classic) end of life. The table below summarizes the support plan.
Type of Link | Video | Company Channel | Group | Stream all (webpart) |
---|---|---|---|---|
URL links | Yes | Yes | Yes | N/A |
Embed | Yes | Partially | Not supported | Not supported |
Existing Stream (Classic) video link continues to work post migration. It will redirect to play from migrated destination on ODSP.
An existing group link from the Stream (Classic) portal will redirect to the destination folder chosen by admin during migration.
An existing channel link from the Stream (Classic) portal will redirect to the channel folder created inside the chosen destination SP site or ODB by admin during migration.
Note
Take a look at the transition plan and deprecation timelines for Stream (Clasic) webpart.
Previously videos stored in SharePoint team, communication sites or in OneDrive didn't play back inline post migration. Instead there was a button you had to select to open the migrated video in a new tab in its new location. Now, all migrated videos play inline and you don't need to launch the playback in a separate tab.
Channel embeds in SharePoint and Teams are partially supported* post migration. They'll no longer display or play back videos inline. The new channel thumbnail provides a link to the migrated channel’s videos folder (see screenshot below). The View channel button takes users to the migrated channel’s videos folder in ODSP.
Note
Both for a URL or an embed, if a video is migrated and then gets moved again from its migrated destination, the Stream (Classic) link associated with that video will stop working. Stream (Classic) links will continue to work for 1 year after Stream classic end of life. Be sure to check the retirement timeline section for detailed milestones.
Redirects for migrated videos will be supported up till one year after Stream (classic) end of life. To keep the videos running after that time period, owners of the video will need to change the links. We'll provide the following information to end users:
Last updated September 7, 2023
Stream (Classic) embed will be supported till Feb’ 15, 2025, post which the URL links and embeds will no longer redirect to play from their new migrated location. Therefore, the end users need to update the Classic video embeds before this cut-off date. The end users would be shown an alert (refer the image in previous section) on migrated Stream (Classic) embeds informing them that the video URL needs to be updated. The following table summarizes how the classic video embeds can be updated on some of the popular Microsoft 365 surfaces:
Apps | How to Replace Classic Video Link with New Stream Link | Video Link to be Used |
---|---|---|
3P apps | 1. Open the migrated video in ODSP* 2. Copy the embed code by clicking the share button 3. Replace the old embed code with the new embed code in HTML |
Embed code |
SharePoint | 1. Play the video embedded in the Stream Classic web part 2. Open the migrated video in ODSP* 3. Copy the URL from the share -> copy link with the right access 4. Replace the Stream Classic web part with 'Stream' web part. 5. Configure the video using the copied URL |
Share URL |
Teams-Web + Native | Support to play embedded videos or playlist from new Stream (on SharePoint) will be available on May 15, 2024. To update existing Stream Classic videos: 1. Play the video embedded in the Stream Classic web part. 2. Open the migrated video in ODSP*. 3. Copy the URL from the share -> copy link with the right access. 4. Replace the Stream Classic app with Stream app. 5. Configure the video using the copied URL. To update existing Stream Classic channels: 1. Open the migrated folder location in ODSP. 2. Create a playlist out of all the video from the folder. 3. Replace the Stream Classic app with Stream app. 4. Configure the playlist using the share URL. |
Share URL |
PPT-Web + Native; Word-Web + Native, OneNote-Native Note: 1. Word native doesn't support inline playback for Stream classic. Stream ODSP URL embeds are supported, so you can replace the Classic URL with ODSP embed 2. Some of these capabilities are currently in rollout stage by Word, PPT, and OneNote team. |
1. Open the migrated video in ODSP* 2. Copy the URL from the share -> copy link with the right access 3. Select on Insert -> Online video and paste the URL (Note: This isn't available for OneNote Web yet) 4. Remove the Stream classic embed |
Share URL |
Yammer (Viva Engage)-Web | TBD | Share URL |
* Any video migrated to ODSP can be opened by any of the following two methods:
Overview of migrating to Stream (on SharePoint)
Migrate your videos from Stream (Classic) to Stream (on SharePoint)
More information on Stream (on SharePoint)
Features and roadmap of Stream (on SharePoint)
Connect with the Stream engineering team to give us feedback and learn more about Microsoft Stream.
Training
Module
Configure and manage file access - Training
This module describes how to control access to files and folders using permissions.