Microsoft Introduces New Control Effective Mid-April 2021
Message center notification MC227292 posted on 26 November (subsequently updated February 10 and March 9) advises of a change to how Teams controls the ability of individual users to record 1:1 calls. This feature, which allows people to make recordings of calls with other individuals, was introduced in April 2020.
Recordings are stored in Stream or OneDrive for Business, depending on whether the tenant has switched the storage location for Teams recordings (from March 1, commercial and GCC tenants store all new recordings in OneDrive). If OneDrive is used, the recording is stored in the account of the person who starts the recording. In Stream, the originator is the owner of the recording. OneDrive for Business is a better option for people who record calls with others outside the tenant because they can share the recording afterwards. Stream doesn’t allow its files to be shared outside the tenant.
Controlling Teams Recordings
Up to now, the AllowCloudRecording setting in the Teams meeting policy assigned to accounts has controlled if a user can initiate recording. If True, the user can record a call. If False, they can’t. However, the setting is really intended to control whether people can record meetings instead of personal calls, and the change introduces a new setting called AllowCloudRecordingForCalls to differentiate between the two types. In addition, the new setting is in the Teams calling policy applied to accounts rather than the Teams meeting policy (editorial comment: policies is one thing Teams is not short of).
What’s important to realize is that the default state of the setting is False, which means that once Microsoft switches the policies in mid-April 2021, users won’t be able to record their personal 1:1 calls unless action is taken to update calling policies. The quick fix is to update the setting in all calling policies to True until the organization assesses if it’s a good idea to allow people to make recordings of this nature. According to the notification, tenants should update their calling policies by April 12 if they want to be sure that users can continue to record 1:1 calls.
Updating the Calling Policy with PowerShell
The ability to update the setting in calling policies isn’t currently available in the Teams admin center. To make the change with PowerShell, connect to Microsoft Teams and then create a session with the endpoint used for managing policies. The cmdlets to do this are all in the Microsoft Teams PowerShell module. Connect to Teams and then Check the current situation by running the Get-CsTeamsCallingPolicy cmdlet:
The policies prefixed with Tag: can’t be updated. These are special policies controlled by Microsoft. You can update the Global calling policy and any custom calling policies created by the tenant. For example:
Set-CsTeamsCallingPolicy -Identity Global -AllowCloudRecordingForCalls $True
Users not allowed to record Teams personal calls because the policy assigned to their account has AllowCloudRecordingForCalls set to False might be frustrated at the new development, but perhaps the question needs to be asked what business purpose justifies the recording of personal calls?
The Office 365 for IT Pros eBook contains lots of information about Teams calling and meetings. Subscribe to receive monthly updates about important changes like the one described here.
It just restores the functionality as it exists today when calls are recorded based on the meeting policy. But you have time to figure out what the policy should be in the future before December 18…
That terminology comes from Teams personal chat. Of course the calls are probably business communications. I can’t see many of them being used to phone home.
Apologies, let me rephrase…
Is this a setting which affects 1:1 ‘calls’ over Teams (i.e. under the Chat tab) or calls to phone numbers using a calling plan (under the calls tab)?
All those mentioned in the article above, running 1.1.6
Loading...
I just ran those commands using the Teams PowerShell module 2.0 and they worked just fine.
Loading...
Ok, I explicitly updated the teams module, it went from 1.1.6 to 2.0 .
When running the GET- command I suddenly got an error (even after reconnect) where I didn’t got one before, after “Exit” and restart PS the GET- worked again but somehow the AllowCloudRecordingForCalls for global identity was already set to “true”, very odd! But this is what I wanted at the end, so it’s all good now I guess 🙂
Thanks for the quick support!
{"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}
Setting it to True before it is assessed whether it is ok for the company to have such recordings doesn’t seem right.
It just restores the functionality as it exists today when calls are recorded based on the meeting policy. But you have time to figure out what the policy should be in the future before December 18…
Ok, i get it now. Thanks
Thank you very much for this. Really helpful!
How can we see how many call recordings have been made by users to evaluate its current usage?
Use the script in https://office365itpros.com/2020/05/29/tracking-video-uploads-stream/ to report who is uploading videos to Stream and you should be able to find out.
“perhaps the question needs to be asked what business purpose justifies the recording of personal calls?”
Who said it’s a personal call? Just because it’s 1:1 doesn’t make it a personal call. Do Microsoft employees never make 1:1 business calls…?
That terminology comes from Teams personal chat. Of course the calls are probably business communications. I can’t see many of them being used to phone home.
Just to clarify – this refers to calls using ol’ school phone numbers under the calls tab – not 1:1 conversations under the chat tab, right?
I don’t know what you mean by school phone numbers…
Apologies, let me rephrase…
Is this a setting which affects 1:1 ‘calls’ over Teams (i.e. under the Chat tab) or calls to phone numbers using a calling plan (under the calls tab)?
1:1 calls over Teams.
I am getting this error:
Command: Set-CsTeamsCallingPolicy CorrelationId: b835916c-905f-4378-82a9-9b238a6c42d0. Exception while submit job to
Lros
+ CategoryInfo : OperationStopped: (:) [Set-CsTeamsCallingPolicy], LrosClientErrorException
+ FullyQualifiedErrorId : CmdletFinalizationFailure,Microsoft.Rtc.Management.Internal.SetTeamsCallingPolicyCmdlet
+ PSComputerName : api.interfaces.records.teams.microsoft.com
I’m not sure what it means..
What command did you run?
Did you upgrade to the latest version of the Teams PowerShell module?
All those mentioned in the article above, running 1.1.6
I just ran those commands using the Teams PowerShell module 2.0 and they worked just fine.
Ok, I explicitly updated the teams module, it went from 1.1.6 to 2.0 .
When running the GET- command I suddenly got an error (even after reconnect) where I didn’t got one before, after “Exit” and restart PS the GET- worked again but somehow the AllowCloudRecordingForCalls for global identity was already set to “true”, very odd! But this is what I wanted at the end, so it’s all good now I guess 🙂
Thanks for the quick support!