-
Notifications
You must be signed in to change notification settings - Fork 336
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] New-PnPTeamsTeam sporadically returns "Conflict (409): Team already exists" #3964
Comments
This happens due to how https://learn.microsoft.com/en-us/graph/api/team-put-teams?view=graph-rest-1.0&tabs=http works. PnP PowerShell first creates a M365 group and then teamifies it using that graph api, but as the documentation says "If the group was created less than 15 minutes ago, the call might fail with a 404 error code due to replication delays", which is why PnP retries that up to 10 times with an internal of 5 seconds (code at powershell/src/Commands/Utilities/TeamsUtility.cs Lines 200 to 227 in 5426135
Sometimes the graph api returns an exception or might time out, then in the 5 seconds before the next retry it actually completes teamifying the M365 group, so the next attempt will show the error "Conflict (409): Team already exists" as Teams was enabled already few moments before. Not saying that the command shouldn't take this into account but more like "you can ignore this particular type of error and this is the reason" 😃 |
@jackpoz Thanks for this explanation. I think I understand what is happening here. It might be worth improving the handling of this on the PnP Command. I also noticed that in case of this error not all users that are specified for the "Owners" parameter (only the first one) and none of the users specified for the "Members" parameter are added to the M365 group. The group is there, the Team is there but it seems that PnP cannot complete some of its actions because Graph API has that delay in telling us that the Group / Team has been successfully created. For my case I will be looking for a way on how to handle this specific error in my provisioning script. If I am able to catch this specific error code I could try it with a Get-PnPTeamsTeam command in the catch block to get the Team (and add the specified owners and members to the group) so that my provisioning script can proceed without failing completely. Its just hard to get the correct condition to catch this in a catch block as it is happening only sporadically and I wasn't able to reproduce this so far by myself. |
@jackpoz - can we improve this in our code ? If so, how do we do that ? |
We can probably handle "Conflict (409): Team already exists" as a special case that a previous request successfully create the team. I will see if I can check this in the next days. |
@jackpoz - assigning it to you 😊 |
Handle "Conflict (409): Team already exists" error as a case of "a previous teamify call succeeded". Fix pnp#3964
@gautamdsheth well I found the time 😄 |
Thanks @jackpoz & @gautamdsheth for the quick solution! I will have to wait for the next major release to get the signed version of the module but I am fine with it as its only happening sporadically and I might try to just do a similar workaround in my Powershell script for provisioning until its available. This is what I will be trying. Not sure if it can correctly catch the error like this as I wasn't able to reproduce it myself so far and only can see it in my Application Insights logs. So really hard to determine what condition is needed to catch this:
|
That will not be enough, your will have to replicate also this chunk to add members and owners as "members" through Basically handling what you noticed:
|
@jackpoz Good point, nearly forgot about this part, thanks for reminding me again :-) |
* Minor documentation fixes (#3849) * Update Set-PnPTemporarilyDisableAppBar.md * Update Set-PnPTeamsTeamPicture.md * Update Set-PnPTeamsTeamArchivedState.md * Update Set-PnPTeamsTag.md --------- Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Nightly publish to PowerShell Gallery * Update CHANGELOG.md * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * new cmdlet unlock-PnPSensitivityLabelEncryptedFile * Add ErrorMessage in batch delete progress * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Fix Copy-PnPList handling of lookup columns (#3870) Fix Copy-PnPList copying the list connected to the first lookup column instead of the specified list. Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Minor documentation fixes (#3853) * Added connection parameter description * Added connection parameter description * Update Set-PnPStructuralNavigationCacheWebState.md * Update Set-PnPStructuralNavigationCacheWebState.md * Update Set-PnPStructuralNavigationCacheWebState.md * Update Set-PnPStructuralNavigationCacheSiteState.md * Removed WhatIf parameter description * Update Set-PnPSiteVersionPolicy.md --------- Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * add example (#3869) Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Additional settings for SetTenantSite.cs : LoopDefaultSharingLinkRole, DefaultShareLinkScope, DefaultShareLinkRole, LoopDefaultSharingLinkScope (#3874) * New parameters added to Set tenant site * updae * Update to add additional properties * updated files --------- Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Adding upload entire local folder to SharePoint Online into `Copy-PnPFolder` (#3850) * Adding functionality to allow a local folder with all its files and optionally recursed subfolders to be uploaded to SharePoint Online * Added PR reference * Typo fix * Adding verbose parameter * Fixing syntax issue * Added that empty folders will also be removed when providing -RemoveAfterCopy * Updated help text to reflect folders being deleted now as well --------- Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Renaming Progress to Status as discussed * Added changelog entry * Adding changelog entry * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Fix exception in PnPConnectedCmdlet (#3885) Fix an NullDereferenceException happening when an exception is logged in PnPConnectedCmdlet but the connection passed through -Connection parameter is not the latest one. Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Minor Doc change: Add-PnPFolderUserSharingLink (#3881) Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Adding support for vanity domain tenants in `Get-PnPSiteCollectionAppCatalog` and `Get-PnPTenantSite` (#3895) * Adding support for vanity domain tenants * Added changelog entry * Grammar fix --------- Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Fix NullDereferenceException in Get-PnPUserProfileProperty (#3891) Fix NullDereferenceException happening in Get-PnPUserProfileProperty when the user profile doesn't exist, showing a better error message Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * replace ParentTerm by ParentTermId (#3890) Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Nightly publish to PowerShell Gallery * Adding support for vanity domains to several cmdlets (#3898) * Updating cmdlets to use the TenantAdminUrl if possible before trying to guess the tenant admin URL * Adding PR reference * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Preparing for Managed Identity support in PnP Framework (#3857) Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Fix destination folder definition in build process on Mac dev machines (#3907) * fix destination folder definition * fix destination folder definition --------- Co-authored-by: Tobias Maestrini <tobias@bee365.ch> * Update CHANGELOG.md * Minor documentation fixes (#3893) * Update Set-PnPSiteTemplateMetadata.md * Added Connection parameter description * Update Set-PnPSiteGroup.md * Update Set-PnPSiteDesign.md * Update Set-PnPSearchSettings.md * Update Set-PnPRoleDefinition.md * Update Set-PnPRetentionLabel.md * Removed common parameters * Added connection parameter description * Removed common parameters * Update Set-PnPPageWebPart.md * Removed [] from mandatory parameters --------- Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Feature: bump MSAL.NET to latest version (#3905) Co-authored-by: Gautam Sheth <gautam.sheth@staffbase.com> * Nightly publish to PowerShell Gallery * Bump alpine linux version * Update release.yml * Create codeql.yml (#3915) * Update codeql.yml * Update codeql.yml * Update codeql.yml * Update codeql.yml * Update codeql.yml * Update codeql.yml * Update buildpr.yml * Nightly publish to PowerShell Gallery * Update hub.docker.md * Update pnppowershell.dockerFile * Update Publish-UnpublishedImage.ps1 * Update README.md * Update dev-containers.md * Update dev-containers.md * Update docker.md * Create scorecard.yml * Update scorecard.yml * Update scorecard.yml * Update scorecard.yml * Update scorecard.yml * Update scorecard.yml * Update scorecard.yml * Update scorecard.yml * Update README.md * Nightly publish to PowerShell Gallery * Update codeql.yml * Update closestaleissues.yml * Update cleanupnightlyreleases.yml * Update buildpr.yml * Update buildexternalhelp.yml * Update buildpr.yml * Update -Schema parameter documentation (#3923) Add missing Schema versions V202103 and V202209 to all -Schema parameters in different cmdlets Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update buildpr.yml * Update builddocsite.yml * Update checkdocumentationbuild.yml * Update nightlyrelease.yml * Update Publish-UnpublishedImage.ps1 * Update pnppowershell.dockerFile * Update Publish-UnpublishedImage.ps1 * Update release.yml * Update nightlyrelease.yml * Update nightlyrelease.yml * Update release.yml * Update LICENSE * Update shared.ps1 * Delete samples/Provisioning.SelfHostedWithAzureWebJob/Engine/nuget.exe * Update codeql.yml * Create SECURITY.md * Update codeql.yml * Update README.md * Nightly publish to PowerShell Gallery * Update README.md * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Updated spo-tenant with additional tenant settings (#3930) * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Update builddocsite.yml * Added Exchange Online properties of Microsoft 365 Groups (#3958) * Added implementation * Added PR reference * Fixing documentation build issue --------- Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Allow to pass Group parameter to Remove-PnPGroupMember from pipeline (#3955) Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Adds documentation for missing parameter MarkNewFilesSensitiveByDefault to set-spotenant (#3936) * Updated spo-tenant with additional tenant settings * Update doc to include MarkNewFilesSensitiveByDefault * remove a parameter --------- Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update SiteIDtoURL.ps1 MFA, Script Execution * Update version.txt * Nightly publish to PowerShell Gallery * Update builddocsite.yml * closes #3945 (#3947) Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Fixed some grammar issues (#3960) * Fix grammar issues * added to changelog * reviewer comments --------- Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Bump MSAL.NET to latest * Change runner back to linux * Amend to return additional parameters (#3948) Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * New cmdlet for getcontainerType and minor changes to docs (#3946) * Update CHANGELOG.md * Allow to pass empty values to Set-PnPTenantCdnPolicy (#3937) Change Set-PnPTenantCdnPolicy to allow PolicyValue to be an empty string or $null, while still being mandatory. Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Update Disable-PnPTenantServicePrincipal.md (#3975) Instead of enabling this cmdlet should disable the PnPTenantServicePrincipal Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Add additional settings RecycleBinRetentionPeriod,OneDriveBlockGuestsAsSiteAdmin,OneDriveDefaultShareLinkRole,OneDriveDefaultShareLinkScope,OneDriveDefaultLinkToExistingAccess (#3977) Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Improve security * Nightly publish to PowerShell Gallery * Files for new cmdlets Set-PnPTenantRestrictedSearchMode and GetTenantRestrictedSearchMode.cs (#3976) * Files for rss * update to executequeryretry * add client --------- Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Updated for MacOS * Additional tenant settings from api/SPOInternalUseOnly.TenantAdminSettings (#3902) * internal settings files * Added additional clarification * update get-PnPTenantInternalSettings to get-PnPTenantInternalSetting * Update to use "System.Text.Json;" and remove other references. --------- Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Nightly publish to PowerShell Gallery * Remove obsolete UserVoiceForFeedbackEnabled parameter in SetTenant.cs (#3985) Co-authored-by: Gautam Sheth <gautam.sheth@staffbase.com> * Update CHANGELOG.md * chore: Update Set-PnPHomeSite.md and SetHomeSite.cs (#3986) Co-authored-by: Gautam Sheth <gautam.sheth@staffbase.com> * Update PnPTenantSite to include additional properties and their setters (#3987) Co-authored-by: Gautam Sheth <gautam.sheth@staffbase.com> * Update CHANGELOG.md * feat: Add ExecuteQueryRetry to Admin commands for improved reliability (#3988) Co-authored-by: Gautam Sheth <gautam.sheth@staffbase.com> * Nightly publish to PowerShell Gallery * cmdlet to add home site (#3989) Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Added new cmdlet to return modern page scheduling enabled status * Moved cmdlets to Pages namespace * Update CHANGELOG.md * feat: Add SortByStorage parameter to GetContainer cmdlet & fix pagination (#3990) Co-authored-by: Gautam Sheth <gautam.sheth@staffbase.com> * Update CHANGELOG.md * Nightly publish to PowerShell Gallery * feat: Include sensitivity labels in Get-PnPMicrosoft365Group command (#3991) * feat: Update Microsoft365Group commands to include IncludeSensitivityLabels parameter * feat: Include sensitivity labels in Get-PnPMicrosoft365Group command --------- Co-authored-by: Gautam Sheth <gautam.sheth@staffbase.com> * Update CHANGELOG.md * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Updated contributors * Remove uservoice property since it is deprecated * Update CHANGELOG.md * Trying macos runner * Update buildpr.yml * Fix New-PnPTeamsTeam sometimes "Conflict (409): Team already exists" (#3992) Handle "Conflict (409): Team already exists" error as a case of "a previous teamify call succeeded". Fix #3964 Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Feature: added new cmdlet Get-PnPFileSensitivityLabelInfo (#3994) * Feature: added new cmdlet Get-PnPFileSensitivityLabelInfo * Update SPOFileSensitivityLabelInfo.cs --------- Co-authored-by: Gautam Sheth <gautam.sheth@staffbase.com> * Update CHANGELOG.md * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * chore: Update Get-PnPHomeSite to include Viva Connections functionality (#4002) Co-authored-by: Gautam Sheth <gautam.sheth@staffbase.com> * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Updated permissions according to findings shared in #277 * Nightly publish to PowerShell Gallery * Removing faulty brackets * Fixing update done through #3958 (#4013) * Adding additional information, removing alias as it works inversed from the original cmdlet name, only kept the Graph name and ditched the Exchange Online name * Added code to distinguish the type of token being used (Delegate vs AppOnly) and using it to show a warning if properties are being set with the wrong token type * Renaming method as this makes more sense --------- Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update SetSiteVersionPolicy.cs (#4005) Changed "Progress" to "Status" as the cmdlet has been renamed as well. Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Security: Bump MSAL.NET to latest (#4018) * Nightly publish to PowerShell Gallery * Updated synopsis for Graph API limitations Added a comment in the Synopsis section for Graph API limitations where some `-Type` values are not configurable (PowerBI). * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Updated documentation for Set-PnPFolderPermission (#4025) Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update Set-PnPList.md (#4020) See #3783 where an issue is described when this feature is not activated. So maybe this PR makes the documentation more clear. Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * New cmdlet for Get-PnPTenantRestrictedSearchAllowedList (#3997) * new cmdlet * correct space * add documentation --------- Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Feature #4028 : return EnableAIPIntegation in Get-PnPTenant cmdlet (#4030) Co-authored-by: Gautam Sheth <gautam.sheth@staffbase.com> * Fix #3908: improve connection validation in ConnectOnline.cs (#4031) Co-authored-by: Gautam Sheth <gautam.sheth@staffbase.com> * Adding `-IsSharePointAddInsDisabled` to `Set-PnPTenant` (#4032) * Added -IsSharePointAddInsDisabled to Set-PnPTenant * Added PR reference * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Fix error handling in Remove-PnPTeamsChannel (#4036) Fix Remove-PnPTeamsChannel error handling mismatch between "Team not found", "Channel not found" and no error. * Update CHANGELOG.md * More settings related to version trim ,ReadOnlyForUnmanagedDevices and RestrictContentOrgWideSearch (#4024) * More settings related to version trim ,ReadOnlyForUnmanagedDevices and RestrictContentOrgWideSearch * remove reference to forms * remove version trim settings --------- Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Update Copy-PnPFile.md Removed the comment saying we couldn't copy files between SPO and ODFB. We've created this functionality in previous versions (see issue #1720). * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Nightly publish to PowerShell Gallery * Fix #4041 : issue retrieving loop sharing information (#4047) Co-authored-by: Gautam Sheth <gautam.sheth@staffbase.com> * Update AddListFoldersToSiteTemplate.cs (#3918) Co-authored-by: Maxime HAZEBROUCQ (Ext) <maxime.hazebroucq@ext.hermes.com> Co-authored-by: Gautam Sheth <gautamdsheth@outlook.com> * Update CHANGELOG.md * Nightly publish to PowerShell Gallery * Bump references for 2.5 release --------- Co-authored-by: Arleta Wanat <42035526+PowershellScripts@users.noreply.github.com> Co-authored-by: erwinvanhunen <erwinvanhunen@users.noreply.github.com> Co-authored-by: reshmee011 <reshmee011@gmail.com> Co-authored-by: jennywu <jennywu@microsoft.com_odspmdb> Co-authored-by: Giacomo Pozzoni <giacomopoz@gmail.com> Co-authored-by: Aimery Thomas <7100077+a1mery@users.noreply.github.com> Co-authored-by: Koen Zomers <koen@zomers.eu> Co-authored-by: WCONFR <68463689+WCONFR@users.noreply.github.com> Co-authored-by: Tobias Maestrini <69770609+tmaestrini@users.noreply.github.com> Co-authored-by: Tobias Maestrini <tobias@bee365.ch> Co-authored-by: Gautam Sheth <gautam.sheth@staffbase.com> Co-authored-by: gautamdsheth <gautamdsheth@users.noreply.github.com> Co-authored-by: Sam Larson (Microsoft) <salarson@microsoft.com> Co-authored-by: Christian Veenhuis <124370897+ChVeen@users.noreply.github.com> Co-authored-by: Mark Gort <52573368+markgort86@users.noreply.github.com> Co-authored-by: Erwin van Hunen <erwin.van.hunen@outlook.com> Co-authored-by: Marc Studer <31045631+Studermarc@users.noreply.github.com> Co-authored-by: Veronique Lengelle <25181757+veronicageek@users.noreply.github.com> Co-authored-by: Paolo Pialorsi <paolo@pialorsi.com> Co-authored-by: mhazebroucq <mhazebroucq@gmail.com> Co-authored-by: Maxime HAZEBROUCQ (Ext) <maxime.hazebroucq@ext.hermes.com>
Reporting an Issue or Missing Feature
We are using PnP Powershell 2.3.0 for provisioning of new Teams within one of our Azure Function Apps. For the New-PnPTeamsTeam cmdlet we have seen the strange behavior that this is sporadically (maybe in 1 out of 20 runs) failing with the error "Conflict (409): Team already exists" even though I can guarantee that this Team does not exist at this point of time. I have also checked what error occurs if I create another Team with the same mail nickname which will give me a more specific error than the one that we are seeing (using the same mailnickname twice will cause "New-PnPTeamsTeam: Bad Request (400): Another object with the same value for property mailNickname already exists.")
After checking the failed creation I can see that the Team got created nevertheless so the error also is misleading. It looks to me that during the creation of the Team there might be some retries or else happening within the Framework which are causing this error.
Is anyone else seeing the same behavior?
Steps to reproduce behavior
This is the line of code that fails with Conflict 409 sporadically
New-PnPTeamsTeam -DisplayName $TeamDisplayName -Description $TeamDescription -MailNickName $MailNickName -Visibility $Visibility -Owners $TeamOwners -Members $TeamMembers -AllowAddRemoveApps $false -AllowChannelMentions $true -AllowCreateUpdateChannels $false -AllowCreateUpdateRemoveConnectors $false -AllowCreateUpdateRemoveTabs $false -AllowCustomMemes $true -AllowDeleteChannels $false -AllowGiphy $true -AllowGuestCreateUpdateChannels $false -AllowGuestDeleteChannels $false -AllowOwnerDeleteMessages $false -AllowStickersAndMemes $true -AllowTeamMentions $true -AllowUserDeleteMessages $false -AllowUserEditMessages $false -GiphyContentRating "Moderate" -ShowInTeamsSearchAndSuggestions $true
What is the version of the Cmdlet module you are running?
2.3.0
Which operating system/environment are you running PnP PowerShell on?
The text was updated successfully, but these errors were encountered: