Publicized in message center post MC437552 (September 23), the Stream migration tool to move videos from the classic Azure-based storage to SharePoint Online and OneDrive for Business became available in public preview in early October. Microsoft says that they expect the migration tool to be generally available in early 2023.
Microsoft says that the migration tool will “transfer audio and video files to Stream (on SharePoint) while also bringing over all critical metadata and permissions associated with your Stream (Classic) content. Additionally, the tool will ensure that links and embeds of Stream (Classic) content will be redirected to the same content on Stream (on SharePoint).”
Originally launched in June 2017, Stream Classic took over from the original Office 365 Video portal in early 2020. That lengthy transition testified to the difficulties involved in moving content from one repository to another. The Stream transition to SharePoint Online is quite a strategic move for Microsoft as it further consolidates Microsoft 365 application content within SharePoint Online (and OneDrive for Business). Using a common repository for multiple data types makes it easier to engineer and maintain services like search. Microsoft says that they expect to announce a retirement date for Stream classic in early 2023 and plans to keep the service available for a year afterward.
The Migration Tool
Microsoft uses the Migration Manager tool to migrate videos from Stream classic. The tool is available in the SharePoint Online admin center (Figure 1). It’s the same technology Microsoft uses to move other data sources into SharePoint. Levering a proven migration framework rather than building a bespoke tool is an intelligent approach.
Figure 1: Stream migration tool in the SharePoint Online admin center
Scan: Look for Stream classic videos stored in Azure storage. The videos are categorized as Stream group (a channel), a Microsoft 365 group, or user content. The scan automatically populates the known locations in Stream classic. You can decide to migrate some or all of the locations (Figure 2).
Prepare migration: After all the Stream classic videos are found, they can be added as migration targets in either SharePoint Online sites or OneDrive for Business accounts. User content videos move to OneDrive while group content moves to SharePoint.
Migrate: This stage processes the videos by moving them from the Stream classic repository to the nominated targets. During this process, any links and embeds pointing to the old classic locations are redirected to the new locations.
Figure 1: Preparing to scan containers during a Stream migration
Background jobs perform the scanning to find video files. The time required depends on the load on the service and the number of videos in the various locations. Suffice to say that it can take some time before the scan results are available. Apart from reviewing the results on screen (Figure 3), you can download reports to analyze the information and decide what content to include in the migration.
Figure 3: Results of a Stream migration scan
Adjusting Settings Before Moving Content
One of the big advantages of moving Stream storage to SharePoint is that users can take advantage of larger storage quotas. However, this isn’t a good reason to migrate everything as there’s no doubt that some older video content can probably be left to rot in Stream classic until the service closes down. This is especially true for Teams meeting recordings. When Microsoft introduced automatic expiration for Teams meeting recordings, they noted that 99% of all recordings are not watched again 110 days after the meeting. Applying this rule to old videos of Teams meetings waiting to be migrated seems like a good idea.
Before migration, you can adjust the target location if necessary (Figure 4). For instance, you might decide to bring the videos belonging to multiple Microsoft 365 groups together in a single SharePoint Online site.
Figure 4: Adjusting a target destination for video files
Migrating
After making whatever adjustments are required, you can migrate the content. Be sure that you’re ready because there’s no way to reverse course once the migration process moves videos from Stream classic to SharePoint.
Once again, this is a background process that will proceed at its own pace. I launched the job overnight and came back in the morning to find that everything had gone well with only one hiccup (Figure 5).
Figure 5: Results of a Stream migration
The hiccup seemed to be a glitch in the migration process. Selecting the line displays a flyout pane with details of the migration. This reported that the migration couldn’t download one video owned by a Microsoft 365 group. However, when I looked at the group through the classic Stream portal, no videos were present and a set of videos were in the destination SharePoint Online site. This is a preview and it is notoriously difficult for migration tools to process 100% of content right exactly right. Even with the glitch, the right outcome occurred as the process moved videos from Stream classic to SharePoint Online.
It’s important to realize that once the migration tool moves videos from Stream classic, it soft-deletes the files to hide them from the Stream classic portal. The soft-deleted files do not appear in the Stream recycle bin. Microsoft will remove the files permanently “180 days after admin disables the tenant but not before classic end of life,” implying that there might be some way to restore videos if necessary.
Don’t Forget the Pre- and Post-Migration Work
Migrating from Stream classic to Stream for SharePoint isn’t just a matter of moving video files. Up-front planning is needed to determine what the target locations should be. Just because a Microsoft 365 group owned some videos in Stream classic doesn’t mean that its SharePoint Online site is the right target location.
Critical metadata moves to SharePoint Online (title, description, thumbnails, transcripts, and permission), but the metadata for some videos might need updating after the transition. Equally, the need might exist to adjust other video settings (like add chapters or set an expiration date) or to edit a transcript. But if you just want to move videos across, the Stream migration tool does a good job.
Keep up to date with developments like the transition to Stream for SharePoint by subscribing to the Office 365 for IT Pros eBook. Our monthly updates make sure that our subscribers understand the most important changes happening across Office 365.
{"id":null,"mode":"button","open_style":"in_modal","currency_code":"EUR","currency_symbol":"\u20ac","currency_type":"decimal","blank_flag_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":100,"top_media_type":"featured_image","featured_image_url":"https:\/\/office365itpros.com\/wp-content\/uploads\/2022\/11\/cover-141x200.jpg","featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Virtual Tip Jar","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"Office 365 for IT Pros","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"Office 365 for IT Pros","form_subtitle":null,"currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you for supporting the work of Office 365 for IT Pros!","payment_confirmation_title":"Office 365 for IT Pros","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to tip?","initial":{"instruction_type":"normal","instruction_message":"How much would you like to tip? Choose any currency."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to tip? Choose any currency."},"invalid_curency":{"instruction_type":"error","instruction_message":"Please choose a valid currency."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to give this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to give this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to give this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}
One Reply to “Migrating from Stream Classic to Stream for SharePoint”