Brug PowerShell til at administrere din Skift-forbindelse til Blue Yonder-Workforce Management

Oversigt

Med Microsoft Teams Shifts-connectoren til Blue Yonder kan du integrere Appen Shifts i Microsoft Teams med Blue Yonder-Workforce Management (Blue Yonder WFM). Dine frontlinjemedarbejdere kan uden problemer få vist og administrere deres tidsplaner i Blue Yonder WFM fra Skift.

Du kan bruge guiden Skifts-connector i Microsoft 365 Administration eller PowerShell til at konfigurere en forbindelse. Når en forbindelse er konfigureret, kan du administrere den ved hjælp af PowerShell-cmdlet'er til Shifts-connectoren.

I denne artikel beskrives det, hvordan du bruger PowerShell til at gøre følgende:

I denne artikel antages det, at du allerede har konfigureret en forbindelse til Blue Yonder WFM enten ved hjælp af guiden eller PowerShell.

Bemærk!

Du kan også administrere din forbindelse i Microsoft 365 Administration. Du kan f.eks. kontrollere tilstandsstatussen og få adgang til guiden for at ændre forbindelsesindstillingerne. Du kan få mere at vide under Brug Microsoft 365 Administration til at administrere din Skift-forbindelse til blue yonder-Workforce Management.

Før du begynder

Du skal være global Administrator af Microsoft 365 eller Administrator af Skifts-connector for at fuldføre trinnene i denne artikel.

Rollen Shifts-connectoradministrator er en brugerdefineret rolle, som du opretter i Microsoft Entra id og tildeler til en bruger. Navnet på rollen skal være "Skifts connector-administrator". Rollen behøver ikke at have specifikke tilladelser, selvom der skal angives mindst én tilladelse, når du opretter den. Tjenesten er afhængig af tilstedeværelsen af rollen på brugeren og ikke dens tilladelser.

Du kan få mere at vide under Opret og tildel en brugerdefineret rolle i Microsoft Entra-id og Tildel Microsoft Entra roller til brugere. Vær opmærksom på, at det kan tage op til 24 timer, før rollen oprettes og anvendes på en bruger.

Konfigurer dit miljø

Bemærk!

Sørg for at følge disse trin for at konfigurere dit miljø, før du kører kommandoer eller scripts i denne artikel.

  1. Installér PowerShell version 7 eller nyere. Du kan finde en trinvis vejledning under Installation af PowerShell på Windows.

  2. Kør PowerShell i administratortilstand.

  3. Installér Microsoft Graph PowerShell-modulet.

    Install-Module Microsoft.Graph
    Import-Module Microsoft.Graph
    

    Kontrollér, at det er version 1.6.1 eller nyere.

    Get-InstalledModule Microsoft.Graph 
    
  4. Installér Teams Preview PowerShell-modulet.

    Install-Module -Name MicrosoftTeams -AllowPrerelease -Force
    Import-Module MicrosoftTeams 
    

    Kontrollér, at den er mindst version 4.7.0 og indeholder Shifts-connector-cmdlet'erne.

    Get-Command -Module MicrosoftTeams -Name *teamsshiftsconnection* 
    
  5. Indstil PowerShell til at afslutte, hvis der opstår en fejl, når scriptet køres.

    $ErrorActionPreference = "Stop" 
    
  6. Aktivér scripts til at køre i Windows.

    Set-ExecutionPolicy bypass 
    
  1. Opret forbindelse til Teams.

    Connect-MicrosoftTeams
    

    Når du bliver bedt om det, skal du logge på med dine administratorlegitimationsoplysninger. Du er nu konfigureret til at køre scripts i denne artikel og Shifts-connector-cmdlet'erne.

Kontrollér status for konfiguration af forbindelse

Følg disse trin for at kontrollere status for den forbindelse, du konfigurerede ved hjælp af det handlings-id, du modtog i en mail:

  1. Konfigurer dit miljø (hvis du ikke allerede har gjort det).

  2. Kør følgende kommando. Denne kommando giver dig den overordnede status for teamtilknytningerne for forbindelsen.

    Get-CsTeamsShiftsConnectionOperation -OperationId <YourOperationId>
    

Du kan få mere at vide under Get-CsTeamsShiftsConnectionOperation.

Få vist en fejlrapport for en forbindelse

Du kan køre en rapport, der viser fejloplysninger for en forbindelse. Rapporten viser team- og brugertilknytninger, der lykkedes og mislykkedes. Den indeholder også oplysninger om eventuelle problemer, der er relateret til de konti, der er knyttet til forbindelsen.

  1. Konfigurer dit miljø (hvis du ikke allerede har gjort det).

  2. Hent en liste over fejlrapporter for en forbindelse.

    Get-CsTeamsShiftsConnectionErrorReport -ConnectorInstanceId <ConnectorInstanceId>
    
  3. Kør følgende kommando for at få vist en bestemt fejlrapport:

    Get-CsTeamsShiftsConnectionErrorReport -ErrorReportId <ErrorReportId>
    

Du kan få mere at vide under Get-CsTeamsShiftsConnectionErrorReport.

Bemærk!

Du kan se en komplet liste over fejlmeddelelser under Liste over fejlmeddelelser senere i denne artikel.

Løs forbindelsesfejl

Fejl i brugertilknytning

Der kan opstå fejl i brugertilknytningen, hvis en eller flere brugere i en WFM forekomst ikke er medlem af det tilknyttede team i Teams. Du kan løse dette problem ved at sikre, at brugerne i det tilknyttede team stemmer overens med brugerne i WFM forekomst.

Hvis du vil have vist oplysninger om ikke-tilknyttede brugere, skal du konfigurere dit miljø (hvis du ikke allerede har gjort det) og derefter køre følgende script.

#View sync errors script
Write-Host "View sync errors"
Start-Sleep 1

#Ensure Teams module is of version x
Write-Host "Checking Teams module version"
try {
    Get-InstalledModule -Name "MicrosoftTeams" -MinimumVersion 4.7.0
} catch {
    throw
}

#List connection instances available
Write-Host "Listing connection instances"
$InstanceList = Get-CsTeamsShiftsConnectionInstance
write $InstanceList

#Get an instance
if ($InstanceList.Count -gt 0){
    $InstanceId = Read-Host -Prompt 'Input the instance ID that you want to retrieve user sync results from'
}
else {
    throw "Instance list is empty"
}

#Get a list of the mappings
Write-Host "Listing team mappings"
$mappings = Get-CsTeamsShiftsConnectionTeamMap -ConnectorInstanceId $InstanceId
write $mappings

#For each mapping, retrieve the failed mappings
ForEach ($mapping in $mappings){
    $teamsTeamId = $mapping.TeamId
    $wfmTeamId = $mapping.WfmTeamId
    Write-Host "Failed mapped users in the mapping of ${teamsTeamId} and ${wfmTeamId}:"
    $userSyncResult = Get-CsTeamsShiftsConnectionSyncResult -ConnectorInstanceId $InstanceId -TeamId $teamsTeamId
    Write-Host "Failed AAD users:"
    write $userSyncResult.FailedAadUser
    Write-Host "Failed WFM users:"
    write $userSyncResult.FailedWfmUser
}

Kontogodkendelsesfejl

Der kan opstå fejl i forbindelse med godkendelse af kontoen, hvis legitimationsoplysningerne til WFM-tjenestekontoen eller Microsoft 365-systemkontoen er forkerte eller ikke har de nødvendige tilladelser.

Hvis du vil ændre dine legitimationsoplysninger til WFM-tjenestekontoen eller Microsoft 365-systemkontoen for forbindelsen, kan du køre cmdlet'en Set-CsTeamsShiftsConnectionInstance eller bruge PowerShell-scriptet i afsnittet Skift forbindelsesindstillinger i denne artikel.

Skift forbindelsesindstillinger

Brug dette script til at ændre forbindelsesindstillingerne. Indstillinger, som du kan ændre, omfatter din WFM tjenestekonto og adgangskode, Microsoft 365-systemkonto, teamtilknytninger og synkroniseringsindstillinger.

Synkroniseringsindstillinger omfatter synkroniseringshyppigheden (i minutter) og de tidsplandata, der synkroniseres mellem dit WFM system og Skift. Planlægningsdata er defineret i følgende parametre, som du kan få vist ved at køre Get-CsTeamsShiftsConnectionConnector.

  • Parameteren enabledConnectorScenarios definerer data, der synkroniseres fra dit WFM system til Skifts. Indstillingerne er Shift, SwapRequest, UserShiftPreferences, OpenShiftOpenShiftRequest, , TimeOff, TimeOffRequest.

  • Parameteren enabledWfiScenarios definerer data, der synkroniseres fra Skift til dit WFM system. Indstillingerne er SwapRequest, OpenShiftRequest, TimeOffRequest, UserShiftPreferences.

    Bemærk!

    Hvis du vælger ikke at synkronisere åbne skift, anmodninger om åbning af skiftehold, swapanmodninger eller anmodninger om fridag mellem Skift og dit WFM system, er der endnu et trin, du skal gøre for at skjule funktionen i Skift. Når du har kørt dette script, skal du sørge for at følge trinnene i afsnittet Deaktiver åbne skiftehold, anmodninger om åbning af skiftehold, swapanmodninger og anmodninger om fridag senere i denne artikel.

Vigtigt!

I forbindelse med indstillinger, du ikke vil ændre, skal du angive de oprindelige indstillinger igen, når du bliver bedt om det af scriptet.

Konfigurer dit miljø (hvis du ikke allerede har gjort det), og kør derefter følgende script.

#Update connector instance and mapping script
Write-Host "Update Connector instance and mapping"
Start-Sleep 1

#Ensure Teams module is at least version x
Write-Host "Checking Teams module version"
try {
    Get-InstalledModule -Name "MicrosoftTeams" -MinimumVersion 4.7.0
} catch {
    throw
}

#Connect to MS Graph
Connect-MgGraph -Scopes "User.Read.All","Group.ReadWrite.All"

#List connector types available (comment out if not implemented for preview)
Write-Host "Listing connector types available"
$BlueYonderId = "6A51B888-FF44-4FEA-82E1-839401E9CD74"
$connectors = Get-CsTeamsShiftsConnectionConnector
write $connectors
$blueYonder = $connectors | where {$_.Id -match $BlueYonderId}

#List connection instances available
Write-Host "Listing connection instances available"
$InstanceList = Get-CsTeamsShiftsConnectionInstance | where {$_.ConnectorId -match $BlueYonderId}
write $InstanceList

#Prompt for the WFM username and password
$WfmUserName = Read-Host -Prompt 'Input your WFM user name'
$WfmPwd = Read-Host -Prompt 'Input your WFM password' -AsSecureString
$plainPwd =[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($WfmPwd))

#Get the instance ID
$InstanceId = Read-Host -Prompt 'Input the instance ID that you want to update'
$Instance = Get-CsTeamsShiftsConnectionInstance -ConnectorInstanceId $InstanceId
$Etag = $Instance.etag

#Change sync setting
$designatorName = Read-Host -Prompt "Input designated actor's user name"
$designator = Get-MgUser -UserId $designatorName
$teamsUserId = $designator.Id
$UpdatedInstanceName = Read-Host -Prompt 'Input new connection instance name'
$updatedConnectorScenarioString = Read-Host -Prompt 'Input new enabled connector scenarios'
$updatedWfiScenarioString = Read-Host -Prompt 'Input new enabled WFI scenarios'
$Delimiters = ",", ".", ":", ";", " ", "`t"
$updatedConnectorScenario = $updatedConnectorScenarioString -Split {$Delimiters -contains $_}
$updatedConnectorScenario = $updatedConnectorScenario.Trim()
$updatedConnectorScenario = $updatedConnectorScenario.Split('',[System.StringSplitOptions]::RemoveEmptyEntries)
$updatedWfiScenario = $updatedWfiScenarioString -Split {$Delimiters -contains $_}
$updatedWfiScenario = $updatedWfiScenario.Trim()
$updatedWfiScenario = $updatedWfiScenario.Split('', [System.StringSplitOptions]::RemoveEmptyEntries)
$adminApiUrl = $Instance.ConnectorSpecificSettingAdminApiUrl
$cookieAuthUrl = $Instance.ConnectorSpecificSettingCookieAuthUrl
$essApiUrl = $Instance.ConnectorSpecificSettingEssApiUrl
$federatedAuthUrl = $Instance.ConnectorSpecificSettingFederatedAuthUrl
$retailWebApiUrl = $Instance.ConnectorSpecificSettingRetailWebApiUrl
$siteManagerUrl = $Instance.ConnectorSpecificSettingSiteManagerUrl
$syncFreq = Read-Host -Prompt 'Input new sync frequency'

#Read admin email list
[psobject[]]$AdminEmailList = @()
while ($true){
$AdminEmail = Read-Host -Prompt "Enter admin's email to receive error report"
$AdminEmailList += $AdminEmail
$title    = 'Adding another email'
$question = 'Would you like to add another admin email?'
$choices  = '&Yes', '&No'
$decision = $Host.UI.PromptForChoice($title, $question, $choices, 1)
if ($decision -eq 1) {
    break
}
}
$UpdatedInstance = Set-CsTeamsShiftsConnectionInstance `
    -ConnectorInstanceId $InstanceId `
    -ConnectorId $BlueYonderId `
    -ConnectorAdminEmail $AdminEmailList `
    -DesignatedActorId $teamsUserId `
    -EnabledConnectorScenario $updatedConnectorScenario `
    -EnabledWfiScenario $updatedWfiScenario `
    -Name $UpdatedInstanceName `
    -SyncFrequencyInMin $syncFreq `
    -ConnectorSpecificSettings (New-Object Microsoft.Teams.ConfigAPI.Cmdlets.Generated.Models.ConnectorSpecificBlueYonderSettingsRequest `
    -Property @{
        AdminApiUrl = $adminApiUrl
        SiteManagerUrl = $siteManagerUrl
        EssApiUrl = $essApiUrl
        RetailWebApiUrl = $retailWebApiUrl
        CookieAuthUrl = $cookieAuthUrl
        FederatedAuthUrl = $federatedAuthUrl
        LoginUserName = $WfmUserName
        LoginPwd = $plainPwd
    }) `
    -IfMatch $Etag
if ($UpdatedInstance.Id -ne $null) {
    Write-Host "Success"
}
else {
    throw "Update instance failed"
}
#Get a list of the mappings
Write-Host "Listing mappings"
$TeamMaps = Get-CsTeamsShiftsConnectionTeamMap -ConnectorInstanceId $InstanceId
write $TeamMaps

#Modify a mapping
#Remove a mapping
Write-Host "Removing a mapping"
$TeamsTeamId = Read-Host -Prompt 'Input the Teams team ID that you want to unlink'
$WfmTeamId = Read-Host -Prompt 'Input the WFM team ID that you want to unlink'
Remove-CsTeamsShiftsConnectionTeamMap -ConnectorInstanceId $InstanceId -TeamId $TeamsTeamId
Write-Host "Success"

#Add a mapping
Write-Host "Adding a mapping"
$TeamsTeamId = Read-Host -Prompt 'Input the Teams team ID that you want to link'
$WfmTeamId = Read-Host -Prompt 'Input the WFM team ID that you want to link'
New-CsTeamsShiftsConnectionTeamMap -ConnectorInstanceId $InstanceId -TeamId $TeamsTeamId -TimeZone "America/Los_Angeles" -WfmTeamId $WfmTeamId
Write-Host "Success"

Deaktiver åbne skiftehold, anmodninger om åbne skiftehold, byt om på anmodninger og anmodninger om fridag

Vigtigt!

Følg kun disse trin, hvis du har valgt at deaktivere åbne skiftehold, anmodninger om åbning af skiftehold, ombytningsanmodninger eller anmodninger om fridag ved hjælp af scriptet i afsnittet Skift forbindelsesindstillinger tidligere i denne artikel eller ved hjælp af Set-CsTeamsShiftsConnectionInstance-cmdlet'en . Når du fuldfører dette trin, skjules funktionen i Skift. Uden dette andet trin kan brugerne stadig se funktionen i Skift og får vist fejlmeddelelsen "ikke-understøttet handling", hvis de forsøger at bruge den.

Hvis du vil skjule åbne skift, bytte om på anmodninger og anmodninger om fridag i Skift, skal du bruge Graph API-planlægningsressourcetypen til at angive følgende parametre til false for hvert team, du har knyttet til en WFM forekomst:

  • Åbne skiftehold: openShiftsEnabled
  • Byt om på anmodninger: swapShiftsRequestsEnabled
  • Anmodninger om fridag: timeOffRequestsEnabled

Hvis du vil skjule anmodninger om åbne skiftehold i Skiftehold, skal du gå til Indstillinger i Skiftehold og derefter slå indstillingen Åbn skift fra.

Fjern tilknytningen af et team fra én forbindelse, og knyt den til en anden forbindelse

Bemærk!

Microsoft 365-systemkontoen skal være den samme for begge forbindelser. Hvis den ikke er det, får du vist fejlmeddelelsen "Denne udpegede agentprofil har ikke teamejerskabsrettigheder".

Hvis du vil fjerne tilknytningen af et team fra én forbindelse og knytte den til en anden forbindelse:

  1. Konfigurer dit miljø (hvis du ikke allerede har gjort det).

  2. Få vist en liste over alle teamtilknytninger for en forbindelse.

    Get-CsTeamsShiftsConnectionTeamMap -ConnectorInstanceId <ConnectorInstanceId>
    
  3. Fjern en gruppetilknytning fra forbindelsen.

    Remove-CsTeamsShiftsConnectionTeamMap -ConnectorInstanceId <ConnectorInstanceId> -TeamId <TeamId>
    
  4. Knyt teamet til en anden forbindelse.

    New-CsTeamsShiftsConnectionTeamMap -ConnectorInstanceId <ConnectorInstanceId> -TeamId <TeamId> -WfmTeamId <SiteId> -TimeZone <TimeZone>
    

Du kan få mere at vide under Get-CsTeamsShiftsConnectionTeamMap, Remove-CsTeamsShiftsConnectionTeamMap og New-CsTeamsShiftsConnectionTeamMap.

Deaktiver synkronisering for en forbindelse

Brug dette script til at deaktivere synkronisering for en forbindelse. Vær opmærksom på, at dette script ikke fjerner eller sletter en forbindelse. Det slår synkronisering fra, så der ikke synkroniseres data mellem Skift og dit WFM system for den forbindelse, du angiver.

Konfigurer dit miljø (hvis du ikke allerede har gjort det), og kør derefter følgende script.

#Disable sync script
Write-Host "Disable sync"
Start-Sleep 1

#Ensure Teams module is at least version x
Write-Host "Checking Teams module version"
try {
    Get-InstalledModule -Name "MicrosoftTeams" -MinimumVersion 4.7.0
} catch {
    throw
}

#List connection instances available
$BlueYonderId = "6A51B888-FF44-4FEA-82E1-839401E9CD74"
Write-Host "Listing connection instances"
$InstanceList = Get-CsTeamsShiftsConnectionInstance | where {$_.ConnectorId -match $BlueYonderId}
write $InstanceList

#Get an instance
if ($InstanceList.Count -gt 0){
    $InstanceId = Read-Host -Prompt 'Input the instance ID that you want to disable sync'
    $Instance = Get-CsTeamsShiftsConnectionInstance -ConnectorInstanceId $InstanceId
    $Etag = $Instance.etag
    $InstanceName = $Instance.Name
    $DesignatedActorId = $Instance.designatedActorId
    $adminApiUrl = $Instance.ConnectorSpecificSettingAdminApiUrl
    $cookieAuthUrl = $Instance.ConnectorSpecificSettingCookieAuthUrl
    $essApiUrl = $Instance.ConnectorSpecificSettingEssApiUrl
    $federatedAuthUrl = $Instance.ConnectorSpecificSettingFederatedAuthUrl
    $retailWebApiUrl = $Instance.ConnectorSpecificSettingRetailWebApiUrl
    $siteManagerUrl = $Instance.ConnectorSpecificSettingSiteManagerUrl
    $ConnectorAdminEmail = $Instance.ConnectorAdminEmail
}
else {
    throw "Instance list is empty"
}

#Remove scenarios in the mapping
Write-Host "Disabling scenarios in the team mapping"
$UpdatedInstanceName = $InstanceName + " - Disabled"
$BlueYonderId = "6A51B888-FF44-4FEA-82E1-839401E9CD74"
$WfmUserName = Read-Host -Prompt 'Input your WFM user name'
$WfmPwd = Read-Host -Prompt 'Input your WFM password' -AsSecureString
$plainPwd =[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($WfmPwd))

$UpdatedInstance = Set-CsTeamsShiftsConnectionInstance `
    -ConnectorInstanceId $InstanceId `
    -ConnectorId $BlueYonderId `
    -ConnectorAdminEmail $ConnectorAdminEmail `
    -DesignatedActorId $DesignatedActorId `
    -EnabledConnectorScenario @() `
    -EnabledWfiScenario @() `
    -Name $UpdatedInstanceName `
    -SyncFrequencyInMin 10 `
    -ConnectorSpecificSettings (New-Object Microsoft.Teams.ConfigAPI.Cmdlets.Generated.Models.ConnectorSpecificBlueYonderSettingsRequest `
        -Property @{
            AdminApiUrl = $adminApiUrl
            SiteManagerUrl = $siteManagerUrl
            EssApiUrl = $essApiUrl
            RetailWebApiUrl = $retailWebApiUrl
            CookieAuthUrl = $cookieAuthUrl
            FederatedAuthUrl = $federatedAuthUrl
            LoginUserName = $WfmUserName
            LoginPwd = $plainPwd
        }) `
    -IfMatch $Etag

if ($UpdatedInstance.Id -ne $null) {
    Write-Host "Success"
}
else {
    throw "Update instance failed"
}

Liste over fejlmeddelelser

Her er listen over fejlmeddelelser, som du kan støde på, og oplysninger, der kan hjælpe dig med at løse dem.

Fejltype Oplysninger om fejl Opløsning
Det var ikke muligt at godkende systemet til styring af arbejdsstyrken. Legitimationsoplysningerne for workforce management system-kontoen, du har angivet, er ugyldige, eller kontoen har ikke de nødvendige tilladelser. Opdater legitimationsoplysningerne for din WFM-tjenestekonto under forbindelsesindstillingerne. Det gør du ved at gøre et af følgende:
Graph kan ikke godkendes. Godkendelse mislykkedes. Sørg for, at du har angivet gyldige legitimationsoplysninger for den angivne agent og har de nødvendige tilladelser. Sørg for, at din Microsoft 365-systemkonto (også kaldet udpeget agent) tilføjes som teamejer.
Du kan også opdatere legitimationsoplysningerne til din Microsoft 365-systemkonto under forbindelsesindstillingerne.
Nogle brugere kunne ikke tilknyttes korrekt Tilknytningen mislykkedes for nogle brugere: <X> lykkedes, <X> mislykkede AAD-brugere og <X-brugere> af styringssystemet for arbejdsstyrken. Brug Get-CsTeamsShiftsConnectionSyncResult-cmdlet'en eller dette PowerShell-script til at identificere de brugere, som tilknytningen mislykkedes for. Sørg for, at brugerne i det tilknyttede team stemmer overens med brugerne i den WFM forekomst.
Der kunne ikke tilknyttes et team eller teams i denne batch. Denne udpegede agentprofil har ikke rettigheder til teamejerskab. Sørg for, at din Microsoft 365-systemkonto (også kaldet udpeget agent) tilføjes som teamejer.
Hvis du har ændret din Microsoft 365-systemkonto, skal du tilføje kontoen som teamejer og opdatere forbindelsesindstillingerne for at bruge den pågældende konto.
Dette team er allerede knyttet til en eksisterende connectorforekomst. Fjern tilknytningen af teamet fra den eksisterende connectorforekomst ved hjælp af cmdlet'en Remove-CsTeamsShiftsConnectionTeamMap . Du kan også oprette en ny forbindelse for at tilknytte teamet igen.
Denne tidszone er ugyldig. Den overførte tidszone bruger ikke tz-databaseformatet. Sørg for, at tidszonen er korrekt, og opret derefter en ny tilknytning af teamet.
Vi kan ikke finde denne connectorforekomst. Knyt teamet til en eksisterende forbindelse.
Dette AAD-team blev ikke fundet. Sørg for, at teamet findes, eller opret et nyt team.

Skifter forbindelses-cmdlet'er

Hvis du vil have hjælp til Shifts-connector-cmdlet'er, skal du søge efter CsTeamsShiftsConnection i Teams PowerShell-cmdlet-referencen. Her er links til nogle almindeligt anvendte cmdlet'er.