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](./cmd/entra/m365group/m365group-user-list.mdx) 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:
- entra group member list
- entra m365group conversation post list
- entra m365group recyclebinitem list
- outlook message get
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:
Old option | New option |
---|---|
--appId [appId] | -i, --id [id] |
--appName [appName] | -n, --displayName [displayName] |
Old option | New option |
---|---|
-i, --appId [appId] | -i, --id [id] |
-n, --appDisplayName [appDisplayName] | -n, --displayName [displayName] |
--appObjectId [appObjectId] | --objectId [objectId] |
Old option | New 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.
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:
Option | Description |
---|---|
-f, --force | Don'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 deprecatedwait
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.
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
toid
and added the short optioni
.
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
forid
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:
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:
- entra oauth2grant list
- flow environment list
- pa app list
- pa connector list
- pa environment list
- pp environment list
- spo app instance list
- spo app list
- spo feature list
- spo list webhook list
- spo listitem attachment list
- spo page list
- spo page template list
- spo sitescript list
- spo theme list
- spo web clientsidewebpart list
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.