Stream migration tool reports, permissions, and embed 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.

Stream (Classic) video 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.

  • Video Identifier: Also found at the end of URL when you play a Stream (classic) video
  • Name of the video
  • State of Video: Refer to the following definition
    • Created = Record created but upload hasn’t started
    • Uploading = Video is being uploaded
    • Processing = Upload successful but currently being processed
    • Completed = Processing was completed
    • Deleted = Soft Deleted (available in recycle bin)
    • Error = Error during upload or processing
    • Live = Live broadcast is in progress
  • Description of Video
  • Published date
  • Last view date: Date when video was last viewed. This date has been captured since around July 2021. Any video uploaded and viewed prior to July 2021 would have this field as empty, even though it was viewed.
  • Size: In bytes
  • Number of View
  • Number of Likes
  • Content Type: can take the following values
    • Generic
    • Meeting
    • Live Event
  • Privacy Mode: Can take the following values
    • Organization: visible to everyone in the organization
    • Private: visible to a selected few individual
  • Creator: Email ID of the original uploader of the video.
  • Owners: Contains User or Microsoft 365 group email ID. Can be multiple individuals and/or groups. Starting June 30,2023, Stream group, company channel and email enabled security group are also mentioned in the column, if they're marked as owners of the video. We have also improved the format of this column by appending container type before the name of the container
  • Container (ID, Name, Type, Email): They're useful if you want to map videos to containers as the tool displays the data at container level.
  • Container Microsoft Entra ID: Microsoft Entra IDs. For some container, they're different than "Container IDs" for example, User containers. It helps admins map org level information with the inventory report.
  • Migrated destination: The migrated location of the video.
  • ContainerVideosInClassicUI : Shows the number of videos per container in Stream (classic). It may be different than number of videos migrating via the same container in the tool.
  • IsEligibleForMigration: Yes or No, depending on if the video is eligible for migration.
  • IsRemigrationNeeded: Yes/No. This column identifies those videos, which need to be remigrated due to status sync issues. This will help you identify content, which was migrated before August 15, 2023 but their redirections didn't kick, didn't get soft deleted from Stream (Classic) or destination column in inventory report wasn't populating. To resolve these issues, they need to be remigrated by the admin. IMP: Since it takes up to 48 hr for fresh migrations' status to be synced, recently migrated videos would also be shown requiring Remigration till the time their status sync is completed from the back-end. We recommend that you wait for a couple of days after migrating to reliably identify containers needing remigrations.

Videos ineligible for migration

Thus, videos that are ineligible for migration are:

  1. 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.

  2. Videos that are in processing or upload error state and thus aren't able to be played. They can never be migrated.

  3. 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.

  1. State either Processing or Completed
  2. Published
  3. Nonempty container ID

Report Format

Example of report output in spreadsheet

Important information about report:

  • Last View Date: This date has been captured since around July 2021. Any video uploaded and viewed prior to that would have this field as empty

Steps to run the script

  1. Navigate to Stream Admin Settings -> Stream Migration -> Reports and download the script

Reports tab Stream admin center.

  1. Copy the Stream Token from the browser and save it in a file.
    • Open browser, press F12, and navigate to Stream Portal
    • Select on the Network tab and filter by refreshtoken. Out of the two requests on the left, select the one with Request Method – GET.
    • Look for Authorization header in Request headers and copy the value after ‘Bearer’

Find token from browser.

  • Save it to a file with the following address, for example: C:\Users<alias>\Documents\StreamReportGenerator\token.txt

Save Token.

Updating token for large tenants

  • Large tenants might have to enter the token more than once, as the token expires after an hour
  • Update the token file with latest token from the browser and execute the script again
  1. Open PowerShell and execute the script by providing four inputs:
    • InputFile(Mandatory): File Path to import the Stream token
    • OutDir (Mandatory): Folder path where the final report and few intermediate files are stored
    • AadTenantId (Mandatory): Microsoft Entra tenant ID of the tenant
    • ResumeLastRun (Optional): A true/false flag to control whether execution should be resumed from last run or start fetching all videos again from the beginning. Default = true
    • PublishedDateLe (Optional): Fetches video entries for which Published Date is less than the value. For example: "2022-07-15"
    • PublishedDateGe (Optional): Fetches video entries for which Published Date is greater than the value. For example: "2022-01-15"

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"

  1. The script starts executing and fetches data from Report APIs
  2. The response from the API calls is stored in a ‘StreamClassicVideoReport’ folder under the OutDir folder
  3. Once the script execution is complete, the final report CSVs are available in the StreamClassicVideoReport folder (The path is displayed on the console)
  4. Within StreamClassicVideoReport folder, there's a new folder generated for each run of the script. The CSV files within these folders contain the video data for your tenant
  5. Inventory report lists only those containers, which have at least one video assigned to them as per assignment hierarchy. To identify the containers in which no video was assigned and are therefore not available in the inventory report, refer here.

Please note:

  • Don't open the generated files while the script is running. It leads to failures during script execution
  • The generated files could have duplicate entries for a video

Resume the script if there was failure

  • If the script stops mid-way due to network/machine issues, Admin can run the script again, and it resumes from the point it stopped
  • By default, the resume flag is true. If you wish to start a new run, pass the ResumeLastRun parameter as ‘false’

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

Troubleshooting failures

For assistance in troubleshooting in failure, share the log.txt and state.csv files generated under the OutDir folder.

Example Power BI analysis report

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.

Setting with two radio buttons, one to save videos to Stream (on SharePoint) now, the other to schedule a date when this will happen

How to run the analysis report

  1. Download PowerBI Desktop

  2. 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.

  3. Open the downloaded .pbit file in PowerBI Desktop

  4. 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

  5. Select Load

Destination mapping report

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:

  1. From the 'Upload destinations' button in Migrations tab, download the MigrationDestination (CSV) template. Use this file as input to the script.

  2. 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:

  1. For Microsoft 365 groups that don't have a linked SharePoint site, autofill via above script, gives empty path. Assign manually in such cases.
  2. Script requires ExchangeOnline cmdlet installed in PowerShell to be able to call ExchangeOnline API Get-UnifiedGroup. It's being handled in the script, and for Installing this cmdlet, System Admin access is required. Run the script in elevated mode the first time.
  3. ExchangeOnline APIs can be invoked by ExchangeOnline Admins only. Find the permissions required to run any Exchange cmdlet

Script to fix permissions on Stream (classic)

  1. Download the script to fix permissions in Stream (classic)

  2. Refer to the documentation on this script to know its various modes and the purpose each one accomplishes.

  3. 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.

  4. Decide whether you want to run the script with the Resume Flag set to true or false.

    1. If you choose to run the script with the Resume Flag set to false, the script start processing the values from the beginning.
    2. If you choose to run the script with the Resume Flag set to true, the script will automatically resume from where it left off in the previous run. By default, the Script runs in Resume false flag only
  5. Provide the following input files specific to the mode you selected:

    1. Mode 1: Prepare a CSV file with column names ContainerID, and ContainerType. This mode accepts Microsoft 365 Group, Company channel, Stream Group as input.Download sample input file
    2. Mode 2: Prepare a CSV file with column names VideoId, ContainerId, and ContainerType. This mode accepts Microsoft 365 Group, CWC, and User Containers as input for container ID. Download sample input file
    3. Mode 3: Prepare an input CSV file with column names ContainerID and ContainerType. This mode accepts only Microsoft 365 Group as input for container ID.Download sample input file
  6. 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

  7. 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.

Permissions Script

  1. The output files of various modes have the following columns:
    1. Mode 1: ContainerId, VideoId, Name, Description, Permissions on Video.
    2. Mode 2: VideoId,ContainerId,ContainerType,Status, Error.
    3. Mode 3: VideoId ,ContainerId , Status , Error.

Permissions and destinations

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.

Differences between permissions of Stream (Classic) and Stream (on SharePoint)

  • 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.

Case 1: Personal video, single owner case

Personal video single owner case.

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:

  • Video is added to the “Stream Migrated Videos” folder in User A's OneDrive for Business. User A gets owner permission by default.
  • If a video is a Teams meeting recordings, it's migrated to “Recordings” folder inside the same “Stream Migrated Videos” folder.
  • (Custom) View permissions are set on the video in OneDrive that matches the permissions set in Stream (Classic). Viewers won't be able to download files.

Case 2: Personal video, multiple owners

Personal video and multiple owners case.

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:

  • Video is added to the “Stream Migrated Videos” folder in User A's OneDrive for Business. User A gets owner permission by default.
  • If the video is Teams meeting recordings, it's migrated to “Recordings” folder inside the same “Stream Migrated Videos” folder.
  • (Custom) User B gets owner permissions on the video.
  • (Custom) View permissions are set on the video in OneDrive that matches the permissions set in Stream (Classic). Viewers won't be able to download files.
  • User B sees this video in "Shared with me" across office.com, OneDrive, etc. via Microsoft 365 search.

Case 3: Group video, and personal and group owner case

Personal and group cases.

User A uploads a video to Stream (Classic) and shares the ownership with Group A.Default migration mapping in Stream:

  • Video is added to the “Stream Migrated Videos” folder in Group A's SharePoint team site.
  • (Custom) We break inheritance on “Stream Migrated Videos” folder and it will not inherit any permissions from its parent site. In addition, we apply specific permissions on the folder to match those on corresponding group membership in Stream (Classic). Files inside this folder continue to inherit permissions from it.
  • (Custom) User A is assigned owner permissions on the video.
  • User A sees this video in "Shared with me" across office.com, OneDrive, etc. via Microsoft 365 search.
  • (Custom) View permissions are set on the video in SharePoint that matches the permissions set in Stream (Classic). Viewers won't be able to download files.
  • If a video is Teams meeting recordings, it's migrated to “Recordings” folder inside the same “Stream Migrated Videos” folder and respective Channel folders.

Case 4: Group video, multiple group owners case

Multiple group owners' case

User A uploads a video to Stream (Classic) and shares ownership with both Group A and Group B. Default migration mapping in Stream:

  • The first Microsoft 365 Group the video was added to will be its default owner.
  • Video is added to the “Stream Migrated Videos” folder in Group A's SharePoint team site.
  • (Custom) We break inheritance on “Stream Migrated Videos” folder and it will not inherit any permissions from its parent site A. In addition, we apply specific permissions on this folder to match those on corresponding group A membership in Stream (Classic). Files inside this folder will continue to inherit permissions from it.
  • (Custom) Group B Microsoft 365 Group members are assigned owner permissions on the video. They won't see this video in their Microsoft 365 Group directly but will still have access via Microsoft 365 search.
  • (Custom) Original uploader of this video in Stream (Classic) is assigned owner permission and will see this video in "Shared with me" across office.com, OneDrive, etc. via Microsoft 365 search.
  • (Custom) View permissions are set on the video in SharePoint that matches the permissions set in Stream (Classic). Viewers won't be able to download files.
  • If the video is a Teams meeting recordings, it's migrated to “Recordings” folder inside the same “Stream Migrated Videos” folder and respective Channel folders.

Case 5: Stream-only group video, multiple group owners case

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.

Stream-only group video case.

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:

  • Between Microsoft 365 and Stream only group, the first Stream-only group to which the video was added is picked as destination.
  • Admins can create a new SharePoint site or use an existing site to migrate contents of "Stream group"
  • A “Stream Migrated Videos” top-level folder is created in the root document library of the above site. And a folder (with the group’s name) is created inside this top-level folder. The video is then added to the group’s folder.
  • (Custom) We break inheritance on “Stream Migrated Videos” folder and it will not inherit any permissions from its parent site A. In addition, we apply specific permissions on individual group folder to match those on corresponding group’s membership in Stream (Classic). Files inside the group-specific folder inherit permissions from it.
  • (Custom) Group A Microsoft 365 Group members are assigned owner permissions on the video.
  • Group A members won't see this video in its group site directly but will still have access via Microsoft 365 search.
  • (Custom) The original uploader of this video in Stream (Classic) is assigned owner permission and will see this video in "Shared with me" across office.com, OneDrive, etc. via Microsoft 365 search.
  • (Custom) View permissions are set on the video that matches the permissions set in Stream (Classic). Viewers won't be able to download files.
  • If the video is a Teams meeting recordings, it's migrated to “Recordings” folder inside respective groups and their channel folders.

Case 6: Company channel video, multiple group owners case

Company channel case.

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:

  • Between Microsoft 365 group and company channel, the first Microsoft 365 group to which the video was added is picked as destination.
  • Video is added to the “Stream Migrated Videos” folder in Group A's SharePoint team site.
  • (Custom) We break inheritance on “Stream Migrated Videos” folder and it will not inherit any permissions from its parent site A. In addition, we apply specific permissions on this folder to match those on corresponding group A membership in Stream (Classic). Files inside this folder continue to inherit permissions from it.
  • (Custom) Company channel won't see this video inside their site, but the video will be accessible to everyone in the organization with (EEEU) view permissions via Microsoft 365 search.
  • (Custom) Original uploader of this video in Stream (Classic) is assigned owner permission and will see this video in "Shared with me" across office.com, OneDrive, etc. via Microsoft 365 search.
  • (Custom) View permissions are set on the video in SharePoint that matches the permissions set in Stream (Classic). Viewers won't be able to download files.
  • If a video is Teams meeting recordings, it's migrated to “Recordings” folder inside the same “Stream Migrated Videos” folder and respective Channel folders.

Case 7: Company channel video, User owners case

Company channel - User case.

User A uploads a video to Stream (Classic) and associates it with Company channel. Default migration mapping in Stream

  • Between multiple Users and Company-wide channels, the first Company-wide channel to which the video was added is picked as destination.
  • Admins can create a new SharePoint site or use an existing site to migrate contents of a "Company-wide channel”.
  • A “Stream Migrated Videos” top-level folder is created in the root document library of the above site. And a folder (with the channel’s name) is created inside this top-level folder. The video is then added to the channel’s folder.
  • (Custom) We break inheritance on “Stream Migrated Videos” folder and it will not inherit any permissions from its parent site A. In addition, we apply EEEU view permission on this top-level folder. Files inside the channel folder inherits permissions from their parent channel folder.
  • (Custom) Original uploader of this video in Stream (Classic) is assigned owner permission and will see this video in "Shared with me" across office.com, OneDrive, etc. via Microsoft 365 search.
  • (Custom) View permissions are set on the video that matches the permissions set in Stream (Classic). Viewers won't be able to download files.
  • If the video is Teams meeting recordings, it's migrated to “Recordings” folder inside respective channel folders.

Given the above, we recommend you:

  1. Migrate multiple Stream-only groups in a single site and migrate company-wide channels to a single site. Don't migrate both to the same site.
  2. Don't migrate all channels or Stream-only groups into single sites as custom permissions set for each file will exhaust the SharePoint site level quotas.
  3. Prefer defaults for most migration destinations. Migrate Microsoft 365 groups to their existing sites and users to corresponding ODBs.

Reasons for the above decisions

  1. Keeping videos in a group together will make sure they align with the SharePoint permissions model. Additionally, users are able to see all their videos in one place. If defaults aren’t chosen for videos in a group, some group videos migrate to individual users' ODBs.
  2. For a video associated with both a Stream-only groups and a Microsoft 365 group, we'd move the video to the former, because we can't assign permissions to a Stream-only group in SharePoint
  • If you decide to move the Microsoft 365 group first, it will not have the common videos as those videos would move with the Stream-only group.
  • On the other hand, if you migrate the Stream-only group first, we migrate all videos, including common ones, and set permissions for the Microsoft 365 group on the common ones as well. It's possible because a Microsoft 365 group identity already exists in ODSP. However, vice versa isn't possible.
  1. Similarly, for the videos associated with both a company channel and a Microsoft 365 group, we'd move the video to the latter because it's not possible to set permissions on the company channel (videos are visible to everyone in the organization).
  2. Moving videos into company channel folders is preferred over adding them to a user's ODB because we get benefits of keeping the video together in company channel.

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:

Preference for videos associated with multiple entities.

Detailed Permission Scenarios

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 Case 1 #2. Location: Any other ODB
User A and other person get owner access on files & folder. Case 2
#3. User A gets owner access and site collection admin gets owner access on all files and folder. Case 3
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. Case 4

#5. Location: User B’s ODB
Both user A and User B have owner access on all files and folder. Case 5
#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^. Case 6
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 Case 7
#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. Case 8

#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. Case 9
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. Case 10
#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. Case 11

#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. Case 12
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 Case 13
#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^. Case 14

#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^. Case 15
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. Case 16
#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 Case 17

#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. Case 18
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. Case 19
#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. Case20
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. Case21
#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. Case22

Other factors to keep in mind

  1. Stream(Classic) only syncs Microsoft 365 Groups from Teams and SharePoint and not the channels created under the groups. Any channel-based meeting in such groups won't have that channel available in Stream (Classic) and you would see recordings from the channel inside the group list view, but this group won’t be set as the owner. See image below. As a result of this, such videos are migrated under the User container not following the rule mentioned above.

Channel not present case.

  1. For old meeting recording due to legacy Teams bug, if a meeting recording associated with a Group was uploaded, Teams flattened the group membership and assigned its members individual permissions. In these cases, the file is associated with its creator's User container and will go to their ODB. You see members individually added to the recordings in permissions UI rather than as a group. See the image below.

Teams Flattening.

Breaking inheritance to migrate permissions

When we decided about how to migrate permissions between two versions of Stream, we had two options:

  1. Mirror permissions between the two versions of Stream by breaking inheritance and assigning custom permissions. OR
  2. Avoid break inheritance and let the videos inherit permissions from theSharePoint site.

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

  1. Assigning new owners/member to 'Stream migrated videos' folder. The permissions assigned on SMV folder flow down to all files.
  2. Clicking deleting custom permissions in advance settings inside manage access.This deletes all custom permissions and restores inheritance. This can be done manually by going to SMV folder in each site or using the script below. Note: this script was shared by some customers who have successfully used it. This isn't designed or supported by Microsoft.

$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) URL and embed support post migration

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.

Video embed

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 embed

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.

Channel embed in Teams.

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:

  1. Admins will get the information on videos that are played as embeds or redirects via URLs. They'll be able to identify such videos and the corresponding Microsoft 365 app from the inventory report. Admins however, won't get the location from where these embed are played. Note that this feature is in our backlog and not yet available, therefore, more information including how to access this report would be shared once the feature is productionalized. Update: This feature has been scrapped due to insufficient demand
  2. End users see a message, on the migrated video about expiry of the redirects. Screenshot below.

Redirect Expiry message

How to update classic video embeds

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:

  1. Select the pop-out button at bottom right of embed playback would open it in the new Stream Web app
  2. Search for the video on Stream Start page (stream.office.com) and play the video

See also

Migration strategies guide

Adoption strategies guide

Overview of migrating to Stream (on SharePoint)

Migrate your videos from Stream (Classic) to Stream (on SharePoint)

Migration details

Migration tool details

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.