Skip to main content

v10 Upgrade Guidance

The v10 of CLI for Microsoft 365 introduces several breaking changes. To help you upgrade to the latest version of CLI for Microsoft 365, we've listed those changes along with any actions you may need to take.

App

Updated option names of 'app permission add' to plural

We updated the app permission add command. Option were updated to applicationPermissions and delegatedPermissions.

What action do I need to take?

Please, check the documentation of the app permission add command to see the updated options and adjust your scripts accordingly.

CLI

Removed command cli reconsent

The cli reconsent command was removed. This command was removed due to the removal of the PnP Management Shell service application.

CLI configuration

Removed setting showSpinner

We removed the showSpinner config variable from the CLI configuration. Due to several issues, the spinner has been permanently removed.

What action do I need to take?

Remove all entries in your script where you use the showSpinner setting.

CLI Doctor

Updated output of cli doctor command

For this new major version, we've adjusted the output of the cli doctor command to align the renaming of Azure AD to Microsoft Entra ID.

The output is updated with cliAadAppId as cliEntraAppId and cliAadAppTenant as cliEntraAppTenant.

What action do I need to take?

Please, check the documentation of the cli doctor command to see the updated output and adjust your scripts accordingly.

CLI environment variables

Removed deprecated CLI environment variables

For this new major version, we've removed the deprecated AAD CLI environment variables. We have renamed CLIMICROSOFT365_AADAPPID variable to CLIMICROSOFT365_ENTRAAPPID.

What action do I need to take?

Please, check the user guidance Log in to Microsoft 365 command to see the updated environment variables to use.

CLI Status

Removed deprecated CLI environment variables

We've updated the m365 status command output. Previously the command would return Logged out from Microsoft 365 now it will return Logged out.

What action do I need to take?

Please, update your scripts to reflect the new output of the m365 status command.

Entra ID

Removed deprecated Guest value from 'aad m365group user list' command.

The deprecated Guest value was removed from the role option in the aad m365group user list command.

What action do I need to take?

Please, check the documentation of the aad m365group user list command to see the updated ``role` option and adjust your scripts accordingly.

Aligned options with naming convention

We updated option naming from groupDisplayName to groupName and userPrincipalName to userName.

Affected commands:

What action do I need to take?

Please, check the documentation of the affected commands to see the updated option naming and adjust your scripts accordingly.

Aligns options of entra enterpriseapp commands

For this new major version, we've aligned the options of the entra enterpriseapp commands as follows:

entra enterpriseapp add

Old optionNew option
--appId [appId]-i, --id [id]
--appName [appName]-n, --displayName [displayName]

entra enterpriseapp get

Old optionNew option
-i, --appId [appId]-i, --id [id]
-n, --appDisplayName [appDisplayName]-n, --displayName [displayName]
--appObjectId [appObjectId]--objectId [objectId]

entra enterpriseapp list

Old optionNew option
--displayName [displayName]-n, --displayName [displayName]

What action do I need to take?

Please, check the documentation of the entra enterpriseapp add, entra enterpriseapp get, and entra enterpriseapp list commands to see the updated options and adjust your scripts accordingly.

Removed deprecated option userName from the entra m365group user add command.

The deprecated option userName was removed from the command entra m365group user add.

What action do I need to take?

In your scripts, replace every occurrence of the deprecated option userName with userNames.

Enhanced entra m365group set command

We've enhanced the entra m365group set command so that a group that we wish to update can also be retrieved by it's displayName. Before, this was only able by the group ID. We have replaced the original displayName option by newDisplayName. Secondly we've updated the way the command handles updating users. Ownes/members that are not specified, will now be removed from the group. To add users without removing old users, the command entra m365group user add should be used. We've also added extra options to specify owners and members by UserName or Id.

What action do I need to take?

Make sure that if you are currently updating groups using the displayName option, you update your scripts to use the newDisplayName option instead. Also make sure that your script uses the new option names for updating Owners and Members, and that it does include all users that should be a member or owner of the group.

Renamed entra group user commands to entra group member

We have renamed the entra group user commands to entra group member to better reflect the command's purpose,. The following commands were renamed:

What action do I need to take?

Please update your scripts to use the new command names.

Removed aad options and aliasses to aad commands.

As part of the renaming of Azure AD to Microsoft Entra ID, we have removed the aad options and aliases. From now on only entra commands are available.

What action do I need to take?

Please, check if your scripts use any of the aad commands and if so update it to entra commands.

Removed deprecated option username from entra m365group user set command.

The deprecated option username was removed from the entra m365group user set command.

What action do I need to take?

Please, check the documentation of the entra m365group user set command to see the updated username option and adjust your scripts accordingly.

SharePoint

Updated spo site appcatalog remove options

We updated the spo site appcatalog remove command. This command is a destructive operation that removes a site collection app catalog. Previously, it did not prompt for confirmation before executing this action, which could potentially lead to unintended data loss. To address this, we have added a confirmation prompt by default.

Because of this rework, we have added a new option.

New options:

OptionDescription
-f, --forceDon't prompt for confirmation.

What action do I need to take?

Update your scripts with the following:

  • Add the option --force if you want to bypass the confirmation prompt and proceed with the removal operation automatically.

Removed the deprecated wait option and output from the spo tenant recyclebinitem restore command

For this new major version, we've removed the deprecated wait option from the spo tenant recyclebinitem restore command. The command now won't return a response on success.

What action do I need to take?

  • Please, check the documentation of the spo tenant recyclebinitem restore command to see the updated output and adjust your scripts accordingly.
  • In the spo tenant recyclebinitem restore command, remove deprecated wait option from your scripts.

Removed the deprecated wait option and output from the spo site remove command

For this new major version, we've removed the deprecated wait option from the spo site remove command.

What action do I need to take?

In the spo site remove command, remove deprecated wait option from your scripts.

Removes duplicate property from 'spo list list' command.

In the spo list list we removed the Url from the command output as it was a duplicate of the RootFolder/ServerRelativeUrl property.

What action do I need to take?

Please update your scripts not to use the Url property from the command output.

Updated command spo file copy

Because of some limitations of the current spo file copy command, we have decided to move it to a new endpoint. This change is necessary to ensure the command's functionality and reliability. Because of the new endpoint, the command input and output have changed.

Command options:

Unfortunately, we had to drop the --resetAuthorAndCreated options as it's no longer supported by the new endpoint. In return, we were able to add two new options:

  • --ignoreVersionHistory: Only copy the most recent version of the file and ignore the version history.
  • --skipWait: Don't wait for the copy operation to complete.

Command output:

In the past versions of CLI for Microsoft 365, the command had no output. When using option --nameConflictBehavior rename, it's hard for the user to know what the actual name of the copied file is. With the new endpoint, the command now returns the file information about the destination file, providing you with all the info you need to execute other commands on this file.

What action do I need to take?

When using the spo file copy command, please use the new command input. This means that you'll have to remove option --resetAuthorAndCreated from your scripts and automation tools.

Updated command spo file move

Just like spo file copy, we have decided to move the spo file move command to a new endpoint. This change is necessary to ensure the command's functionality and reliability. Because of the new endpoint, the command input and output have changed.

Command options:

Unfortunately, we had to drop the --retainEditorAndModified options as it's no longer supported by the new endpoint. In return, we were able to add two new options:

  • --includeItemPermissions: Ensure that item-level permissions are preserved during the move.
  • --skipWait: Don't wait for the copy operation to complete.

Command output:

In the past versions of CLI for Microsoft 365, the command had no output. When using option --nameConflictBehavior rename, it's hard for the user to know what the actual name of the copied file is. With the new endpoint, the command now returns the file information about the destination file, providing you with all the info you need to execute other commands on this file.

What action do I need to take?

When using the spo file move command, please use the new command input. This means that you'll have to remove option --retainEditorAndModified from your scripts and automation tools.

Updated command spo folder move

Because of some limitations of the current spo folder move command, we have decided to move it to a new endpoint. This change is necessary to ensure the command's functionality and reliability. Because of the new endpoint, the command input and output have changed.

Command options:

Unfortunately, we had to drop the --retainEditorAndModified and --bypassSharedLock options as it's no longer supported by the new endpoint. In return, we were able to add a new option:

  • --skipWait: Don't wait for the move operation to complete.

Command output:

In the past versions of CLI for Microsoft 365, the command had no output. When using option --nameConflictBehavior rename, it's hard for the user to know what the actual name of the moved folder is. With the new endpoint, the command now returns the folder information about the destination folder, providing you with all the info you need to execute other commands on this folder.

What action do I need to take?

When using the spo folder move command, please use the new command input. This means that you'll have to remove options --retainEditorAndModified and --bypassSharedLock from your scripts and automation tools.

Removed spo folder rename alias

The spo folder rename command was removed and replaced by the spo folder set command.

What action do I need to take?

Please, update your scripts to use the spo folder set command instead of spo folder rename.

Updated output of spo applicationcustomizer get command

In the previous version of CLI, the command output had a Rights property that was a stringified JSON object. In this release, this has been changed to a JSON object.

What action do I need to take?

Please, check the documentation of the spo applicationcustomizer get command to see the updated output and adjust your scripts accordingly.

Updated spo contenttype field remove options

We made some slight changes to the options of command spo contenttype field remove command. The following changes were made:

  • Removed the short option for contentTypeId.
  • Renamed the option fieldLinkId to id and added the short option i.

What actions do I need to take?

Please update your scripts to make sure that you use the new name/short options.

Updated spo contenttype field set options

We updated the spo contenttype field set command. We made the following changes:

  • Removed the short option for contentTypeId
  • Add the short option i for id

What actions do I need to take?

Please update your scripts to make sure that you use the correct options.

Updated spo sitescript get output

We updated the output from the spo sitescript get command. The Content property is now a JSON object instead of a stringified JSON object, so it's easier to interact with the sitescript data, even when --content is not specified.

What action do I need to take?

Please update your scripts to reflect the new output of the spo sitescript get command.

Renamed spo site rename to spo tenant site rename

The spo site rename command was renamed to spo tenant site rename to better reflect the command's purpose as this is an action that only an administrator can do.

What action do I need to take?

Please update your scripts to use the new command name.

SharePoint Framework

Removed overwrite option from spfx project github workflow add command

Overwriting the SPFx package should be the default behavior of the continuous delivery pipeline. The overwrite option was removed from the spfx project github workflow add command.

What action do I need to take?

Please update your scripts not to use the overwrite option.

Teams

Removes duplicate property from 'teams tab list' command.

For the teams tab list command we removed the teamsAppTabId from the command output as it was a duplicate of the teamsApp/id property.

What action do I need to take?

Please update your scripts not to use the teamsAppTabId property from the command output.

Yammer (Viva Engage)

Removal of deprecated Yammer aliases

We have removed all deprecated Yammer command aliases. These aliases were introduced in the previous version to prevent the introduction of breaking changes. Since Yammer has been renamed to Viva Engage a while ago, the following aliases were removed:

AliasCommand
yammer searchviva engage search
yammer group listviva engage group list
yammer group user addviva engage group user add
yammer group user removeviva engage group user remove
yammer message addviva engage message add
yammer message getviva engage message get
yammer message listviva engage message list
yammer message removeviva engage message remove
yammer message like setviva engage message like set
yammer network listviva engage network list
yammer report activitycountsviva engage report activitycounts
yammer report activityusercountsviva engage report activityusercounts
yammer report activityuserdetailviva engage report activityuserdetail
yammer report deviceusagedistributionusercountsviva engage report deviceusagedistributionusercounts
yammer report deviceusageusercountsviva engage report deviceusageusercounts
yammer report deviceusageuserdetailviva engage report deviceusageuserdetail
yammer report groupsactivitycountsviva engage report groupsactivitycounts
yammer report groupsactivitydetailviva engage report groupsactivitydetail
yammer report groupsactivitygroupcountsviva engage report groupsactivitygroupcounts
yammer user getviva engage user get
yammer user listviva engage user list

What action do I need to take?

Replace any of the aliases mentioned above with the corresponding command name. The functionality of the command hasn't changed.

General

Ensured output for list commands

We noticed that some of the list commands were not returning any output when no items were found. We've updated all list commands to return an empty array when no items are found.

The commands impacted by this change are:

What action do I need to take?

Update your scripts using these commands to handle the empty array output when there are no items found.

CTRL + M