Share via


Bruk PowerShell til å administrere Skift-tilkoblingen til UKG Pro Workforce Management

Oversikt

Med Microsoft Teams Shifts-koblingen for UKG Pro Workforce Management kan du integrere Skift-appen i Microsoft Teams med UKG Pro Workforce Management (UKG Pro WFM). Dine frontline arbeidere kan sømløst se og administrere sine tidsplaner i UKG Pro WFM fra innsiden Skift.

Du kan bruke veiviseren for Skifts-kobling i Administrasjonssenter for Microsoft 365 eller PowerShell til å konfigurere en tilkobling. Når en tilkobling er konfigurert, kan du administrere den ved hjelp av PowerShell-cmdleter for Shifts-kobling.

Denne artikkelen beskriver hvordan du bruker PowerShell til å gjøre følgende:

Denne artikkelen antar at du allerede har konfigurert en tilkobling til UKG Pro WFM, enten ved hjelp av veiviseren eller PowerShell.

Obs!

Du kan også administrere tilkoblingen i Administrasjonssenter for Microsoft 365. Du kan for eksempel kontrollere tilstandsstatusen og få tilgang til veiviseren for å endre tilkoblingsinnstillingene. Hvis du vil ha mer informasjon, kan du se Bruke Administrasjonssenter for Microsoft 365 til å administrere Shifts-tilkoblingen til UKG Pro-Workforce Management.

Før du starter

Du må være en global Microsoft 365-administrator eller en Shifts-koblingsadministrator for å fullføre trinnene i denne artikkelen.

Administratorrollen for Shifts-koblingen er en egendefinert rolle som du oppretter i Microsoft Entra ID og tilordner til en bruker. Navnet på rollen må være Skiftkoblingsadministrator. Rollen trenger ikke å ha bestemte tillatelser, men minst én tillatelse må angis når du oppretter den. Tjenesten er avhengig av tilstedeværelsen av rollen på brukeren, og ikke dens tillatelser.

Hvis du vil ha mer informasjon, kan du se Opprette og tilordne en egendefinert rolle i Microsoft Entra ID og tilordne Microsoft Entra roller til brukere. Husk at det kan ta opptil 24 timer før rollen opprettes og brukes på en bruker.

Konfigurer miljøet ditt

Obs!

Kontroller at du følger disse trinnene for å konfigurere miljøet før du kjører noen av kommandoene eller skriptene i denne artikkelen.

  1. Installer PowerShell versjon 7 eller nyere. Hvis du vil ha trinnvis veiledning, kan du se Installere PowerShell på Windows.

  2. Kjør PowerShell i administratormodus.

  3. Installer Microsoft Graph PowerShell-modulen.

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

    Kontroller at det er versjon 1.6.1 eller nyere.

    Get-InstalledModule Microsoft.Graph 
    
  4. Installer Teams Preview PowerShell-modulen.

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

    Kontroller at det er minst versjon 4.7.0 og inneholder Shifts-koblings-cmdleter.

    Get-Command -Module MicrosoftTeams -Name *teamsshiftsconnection* 
    
  5. Angi at PowerShell skal avsluttes hvis det oppstår en feil når skriptet kjøres.

    $ErrorActionPreference = "Stop" 
    
  6. Aktiver skript som skal kjøres i Windows.

    Set-ExecutionPolicy bypass 
    
  1. Koble til Teams.

    Connect-MicrosoftTeams
    

    Når du blir bedt om det, logger du på med administratorlegitimasjonen. Du er nå konfigurert til å kjøre skriptene i denne artikkelen og Shifts-koblings-cmdleter.

Kontroller status for tilkoblingsoppsett

Følg disse trinnene for å kontrollere statusen for tilkoblingen du konfigurerte ved hjelp av operasjons-ID-en du mottok i e-post:

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

  2. Kjør den følgende kommandoen. Denne kommandoen gir deg den generelle statusen for gruppetilordningene for tilkoblingen.

    Get-CsTeamsShiftsConnectionOperation -OperationId <YourOperationId>
    

Hvis du vil ha mer informasjon, kan du se Get-CsTeamsShiftsConnectionOperation.

Vise en feilrapport for en tilkobling

Du kan kjøre en rapport som viser feildetaljer for en tilkobling. Rapporten viser gruppe- og brukertilordninger som lyktes og mislyktes. Den gir også informasjon om eventuelle problemer knyttet til kontoene som er knyttet til tilkoblingen.

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

  2. Få en liste over feilrapporter for en tilkobling.

    Get-CsTeamsShiftsConnectionErrorReport -ConnectorInstanceId <ConnectorInstanceId>
    
  3. Hvis du vil vise en bestemt feilrapport, kjører du følgende kommando:

    Get-CsTeamsShiftsConnectionErrorReport -ErrorReportId <ErrorReportId>
    

Hvis du vil ha mer informasjon, kan du se Get-CsTeamsShiftsConnectionErrorReport.

Obs!

Hvis du vil ha en fullstendig liste over feilmeldinger, kan du se Liste over feilmeldinger senere i denne artikkelen.

Løse tilkoblingsfeil

Feil ved brukertilordning

Brukertilordningsfeil kan oppstå hvis én eller flere brukere i en WFM forekomst ikke er medlem av det tilordnede teamet i Teams. Hvis du vil løse dette problemet, må du kontrollere at brukerne i det tilordnede teamet samsvarer med brukerne i WFM forekomst.

Hvis du vil vise detaljer om brukere som ikke er tilordnet, konfigurerer du miljøet (hvis du ikke allerede har gjort det), og deretter kjører du følgende skript.

#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
}

Feil ved kontogodkjenning

Kontogodkjenningsfeil kan oppstå hvis WFM tjenestekonto eller systemkontolegitimasjon for Microsoft 365 er feil eller ikke har de nødvendige tillatelsene.

Hvis du vil endre WFM-tjenestekontoen eller systemkontolegitimasjonen for Microsoft 365 for tilkoblingen, kan du kjøre cmdleten Set-CsTeamsShiftsConnectionInstance eller bruke PowerShell-skriptet i delen Endre tilkoblingsinnstillinger i denne artikkelen.

Endre tilkoblingsinnstillinger

Bruk dette skriptet til å endre tilkoblingsinnstillinger. Innstillinger som du kan endre, omfatter WFM tjenestekonto og passord, Systemkonto for Microsoft 365, teamtilordninger og synkroniseringsinnstillinger.

Synkroniseringsinnstillingene omfatter synkroniseringsfrekvensen (i minutter) og tidsplandataene som synkroniseres mellom WFM-systemet og Skift. Tidsplandata er definert i følgende parametere, som du kan vise ved å kjøre Get-CsTeamsShiftsConnectionConnector.

  • Parameteren enabledConnectorScenarios definerer data som er synkronisert fra WFM-systemet til Skift. Alternativene er Shift, , OfferShiftRequestSwapRequest, UserShiftPreferences, OpenShift, OpenShiftRequest, . TimeOffRequestTimeOff

  • Parameteren enabledWfiScenarios definerer data som synkroniseres fra Skift til WFM-systemet. Alternativene er SwapRequest, OfferShiftRequest, OpenShiftRequest, TimeOffRequest. UserShiftPreferences

    Obs!

    Hvis du velger å ikke synkronisere åpne skift, åpne forespørsler om skift, bytte forespørsler eller fri fra forespørsler mellom Skift og WFM systemet, er det et annet trinn du må gjøre for å skjule funksjonen i Skift. Når du har kjørt dette skriptet, må du følge trinnene i delen Deaktiver åpne skift, åpne forespørsler om skift, bytte forespørsler og forespørsler om fri senere i denne artikkelen.

    Viktig

    For innstillinger du ikke vil endre, må du angi de opprinnelige innstillingene på nytt når du blir bedt om det av skriptet.

Konfigurer miljøet (hvis du ikke allerede har gjort det), og kjør deretter følgende skript.

#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"
$UkgId = "95BF2848-2DDA-4425-B0EE-D62AEED4C0A0"
$connectors = Get-CsTeamsShiftsConnectionConnector
write $connectors
$Ukg = $connectors | where {$_.Id -match $UkgId}

#List connection instances available
Write-Host "Listing connection instances available"
$InstanceList = Get-CsTeamsShiftsConnectionInstance | where {$_.ConnectorId -match $UkgId}
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)
$apiUrl = $Instance.ConnectorSpecificSettingApiUrl
$ssoUrl = $Instance.ConnectorSpecificSettingSsoUrl
$clientId = $Instance.ConnectorSpecificSettingClientId
$syncFreq = Read-Host -Prompt 'Input new sync frequency'
$AppKey = Read-Host -Prompt 'Input your app key' -AsSecureString
$plainKey =[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($AppKey))
$ClientSecret = Read-Host -Prompt 'Input your client secret' -AsSecureString
$plainSecret =[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($ClientSecret))

#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 $UkgId `
    -ConnectorAdminEmail $AdminEmailList `
    -DesignatedActorId $teamsUserId `
    -EnabledConnectorScenario $updatedConnectorScenario `
    -EnabledWfiScenario $updatedWfiScenario `
    -Name $UpdatedInstanceName `
    -SyncFrequencyInMin $syncFreq `
    -ConnectorSpecificSettings (New-Object Microsoft.Teams.ConfigAPI.Cmdlets.Generated.Models.ConnectorSpecificUkgDimensionsSettingsRequest `
        -Property @{
            apiUrl = $apiUrl
            ssoUrl = $ssoUrl
            appKey = $plainKey
            clientId = $clientId
            clientSecret = $plainSecret
            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 åpne skift, forespørsler om åpne skift, forespørsler om bytting og fri

Viktig

Følg disse trinnene bare hvis du valgte å deaktivere åpne skift, åpne forespørsler om skift, bytte forespørsler eller fri ved hjelp av skriptet i delen Endre tilkoblingsinnstillinger tidligere i denne artikkelen, eller ved hjelp av cmdleten Set-CsTeamsShiftsConnectionInstance . Når du fullfører dette trinnet, skjules funksjonen i Skift. Uten dette andre trinnet vil brukerne fortsatt se funksjonen i Skift, og får feilmeldingen «operasjon som ikke støttes» hvis de prøver å bruke den.

Hvis du vil skjule åpne skift, bytte forespørsler og forespørsler om fri i Skift, bruker du ressurstypen Graph API-tidsplan til å angi følgende parametere for false hvert team som du tilordnet til en WFM forekomst:

  • Åpne skift: openShiftsEnabled
  • Bytt forespørsler: swapShiftsRequestsEnabled
  • Forespørsler om fri: timeOffRequestsEnabled
  • Tilby forespørsler om skift: offerShiftRequestsEnabled

Hvis du vil skjule forespørsler om åpne skift i Skift, går du til Innstillinger i Skift, og deretter deaktiverer du åpne skift-innstillingen.

Fjerne tilordning av et team fra én tilkobling og tilordne den til en annen tilkobling

Obs!

Microsoft 365-systemkontoen må være den samme for begge tilkoblingene. Hvis den ikke er det, får du feilmeldingen «Denne angitte aktørprofilen har ikke eierrettigheter for teamet».

Hvis du vil oppheve tilordningen av et team fra én tilkobling og tilordne det til en annen tilkobling:

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

  2. Vis en liste over alle teamtilordninger for en tilkobling.

    Get-CsTeamsShiftsConnectionTeamMap -ConnectorInstanceId <ConnectorInstanceId>
    
  3. Fjern en gruppetilordning fra tilkoblingen.

    Remove-CsTeamsShiftsConnectionTeamMap -ConnectorInstanceId <ConnectorInstanceId> -TeamId <TeamId>
    
  4. Tilordne gruppen til en annen tilkobling.

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

Hvis du vil ha mer informasjon, kan du se Get-CsTeamsShiftsConnectionTeamMap, Remove-CsTeamsShiftsConnectionTeamMap og New-CsTeamsShiftsConnectionTeamMap.

Deaktiver synkronisering for en tilkobling

Bruk dette skriptet til å deaktivere synkronisering for en tilkobling. Husk at dette skriptet ikke fjerner eller sletter en tilkobling. Den deaktiverer synkronisering slik at ingen data synkroniseres mellom Skift og WFM systemet for tilkoblingen du angir.

Konfigurer miljøet (hvis du ikke allerede har gjort det), og kjør deretter følgende skript.

#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
$UkgId = "95BF2848-2DDA-4425-B0EE-D62AEED4C0A0"
Write-Host "Listing connection instances"
$InstanceList = Get-CsTeamsShiftsConnectionInstance | where {$_.ConnectorId -match $UkgId}
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
    $apiUrl = $Instance.ConnectorSpecificSettingApiUrl
    $ssoUrl = $Instance.ConnectorSpecificSettingSsoUrl
    $clientId = $Instance.ConnectorSpecificSettingClientId
    $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"
$UkgId = "95BF2848-2DDA-4425-B0EE-D62AEED4C0A0"
$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))
$AppKey = Read-Host -Prompt 'Input your app key' -AsSecureString
$plainKey =[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($AppKey))
$ClientSecret = Read-Host -Prompt 'Input your client secret' -AsSecureString
$plainSecret =[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($ClientSecret))

$UpdatedInstance = Set-CsTeamsShiftsConnectionInstance `
    -ConnectorInstanceId $InstanceId `
    -ConnectorId $UkgId `
    -ConnectorAdminEmail $ConnectorAdminEmail `
    -DesignatedActorId $DesignatedActorId `
    -EnabledConnectorScenario @() `
    -EnabledWfiScenario @() `
    -Name $UpdatedInstanceName `
    -SyncFrequencyInMin 10 `
    -ConnectorSpecificSettings (New-Object Microsoft.Teams.ConfigAPI.Cmdlets.Generated.Models.ConnectorSpecificUkgDimensionsSettingsRequest `
        -Property @{
            apiUrl = $apiUrl
            ssoUrl = $ssoUrl
            appKey = $plainKey
            clientId = $clientId
            clientSecret = $plainSecret
            LoginUserName = $WfmUserName
            LoginPwd = $plainPwd
        }) `
    -IfMatch $Etag

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

Liste over feilmeldinger

Her er listen over feilmeldinger som du kan støte på, og informasjon som hjelper deg med å løse dem.

Feiltype Feildetaljer Løsning
Kan ikke godkjenne administrasjonssystemet for arbeidsstyrken. Legitimasjonen for administrasjon av arbeidsstyrkens systemkonto du har angitt, er ugyldig eller denne kontoen har ikke de nødvendige tillatelsene. Oppdater legitimasjonen for WFM-tjenestekontoen i tilkoblingsinnstillingene. Gjør ett av følgende for å gjøre dette:
Kan ikke godkjenne Graph. Godkjenning mislyktes. Kontroller at du har angitt gyldig legitimasjon for den angitte aktøren og har de nødvendige tillatelsene. Kontroller at Microsoft 365-systemkontoen (også kjent som angitt aktør) er lagt til som teameier.
Du kan også oppdatere legitimasjonen for Microsoft 365-systemkontoen i tilkoblingsinnstillingene.
Noen brukere har ikke kunnet tilordne riktig Tilordningen mislyktes for enkelte brukere: <X> var vellykket, <X> mislyktes AAD-bruker(er) og <X> mislyktes bruker(er) i administrasjonssystemet for arbeidsstyrken. Bruk cmdleten Get-CsTeamsShiftsConnectionSyncResult eller dette PowerShell-skriptet til å identifisere brukerne som tilordningen mislyktes for. Kontroller at brukerne i det tilordnede teamet samsvarer med brukerne i WFM forekomst.
Kan ikke tilordne et team eller team i denne gruppen. Denne angitte aktørprofilen har ikke eierrettigheter for teamet. Kontroller at Microsoft 365-systemkontoen (også kjent som angitt aktør) er lagt til som teameier.
Hvis du har endret systemkontoen for Microsoft 365, legger du til kontoen som teameier og oppdaterer tilkoblingsinnstillingene for å bruke denne kontoen.
Dette teamet er allerede tilordnet en eksisterende koblingsforekomst. Fjern tilordning av teamet fra den eksisterende koblingsforekomsten ved hjelp av cmdleten Remove-CsTeamsShiftsConnectionTeamMap . Du kan også opprette en ny tilkobling for å tilordne teamet på nytt.
Denne tidssonen er ugyldig. Tidssonen som ble sendt inn, bruker ikke tz-databaseformat. Kontroller at tidssonen er riktig, og tilordne deretter teamet på nytt.
Vi finner ikke denne koblingsforekomsten. Tilordne gruppen til en eksisterende tilkobling.
Finner ikke dette AAD-teamet. Kontroller at teamet finnes, eller opprett et nytt team.

Skiftkoblings-cmdleter

Hvis du trenger hjelp med cmdleter for Shifts-kobling, kan du søke etter CsTeamsShiftsConnection i Cmdlet-referansen for Teams PowerShell. Her er koblinger til noen ofte brukte cmdleter.