SharePoint ett synkroniseringsjobb för aktivitetslistan Project publiceras

Anteckning

Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.

Symptom

Ett SharePoint-synkroniseringsjobb för aktivitetslistan misslyckas i Project när det publiceras från Project Professional eller från Project Web App (PWA).

Orsak

Det här problemet inträffar om en användare som har lagts till i ett objekt i fältet "Tilldelat" i en aktivitetslista har tagits bort från webbplatssamlingen.

Lösning

PowerShell-skriptet nedan kan användas för att hitta listobjekten i en uppgiftslista som fortfarande innehåller användarkonton i fältet "AssignedTo" som saknas i webbplatssamlingen:

asnp *share*
$site = get-spsite http://Server/PWA
 
function new-row
{
    $Fields = ('SiteUrl', 'WebUrl', 'ListUrl', 'ItemID','ItemName', 'MissingUser' )
    $Row = new-object PSCustomObject
    foreach ( $field in $Fields)
    {
        $row | Add-Member -NotePropertyName $Field -NotePropertyValue $null
    }
    return $Row
}
 
$result = New-Object System.Collections.arraylist
 
foreach ( $web in $site.AllWebs )
{
    
    Write-host "Processing Web : $($web.Url).." -NoNewline
    $list = $null
    $list = $web.Lists['Tasks']
    if ( $list -ne $null )
    {
        foreach ( $item in $list.Items)
        {
            $assignedTo = $item['AssignedTo']
 
            if ( $assignedTo -ne $null -and  $assignedTo.user -eq $null)
            {
                $Row = new-row
                $row.SiteUrl = $web.site.Url
                $row.WebUrl = $web.Url
                $row.ListUrl = $web.site.MakeFullUrl($list.DefaultViewUrl)
                $row.ItemID = $item.ID
                $row.ItemName = $item.Name
                $row.MissingUser = $assignedTo.lookupvalue
                $result.add($row) | Out-Null
            }
 
        }
    }
    Write-host "Done" -ForegroundColor Green
}
 
$result | Out-GridView
 
$result | Export-Csv -Encoding UTF8 -NoTypeInformation -Path C:\Logs\Report1.csv 

Anteckning

Ändra namnet PWA URL och uppgiftslistan innan du kör PowerShell.

När listobjekten hittas:

  1. Gå till Webbplats Inställningar och sedan Innehåll och struktur.
  2. Öppna uppgiftslistan för den arbetsyta som är kopplad till Project.
  3. Ta bort användaren från uppgiften i uppgiftslistan.

De alternativa lösningsalternativen är bland annat följande:

  1. Inaktivera synkroniseringen av uppgiftslistan genom att köra följande kommando:
Disable-SPProjectEnterpriseProjectTaskSync –Url http://servername/PWA/NameOfProject
  1. Ta bort och återskapa uppgiftslistan.

Mer information

Uls-loggarna som visar felet när du uppdaterar fältet "Tilldelat" i uppgiftslistan ser ut ungefär så här:

PWA:https://Server/PWA, ServiceApp:PWA_APP_SVC, User:i:0#.w|mydomain\krishnp, PSI: [QUEUE] SynchronizeTaskListInManagedModeMessage failed on project e7e90257-d10e-e911-89a6-ace2d39a7fa8. Exception: System.NullReferenceException: Object reference not set to an instance of an object.    
 at Microsoft.Office.Project.Server.BusinessLayer.ProjectModeManaged.UpdateAssignedToField(SPWeb workspaceWeb, DataSet taskDS, Guid taskUID, SPListItem listItem)    
 at Microsoft.Office.Project.Server.BusinessLayer.ProjectModeManaged.SynchronizeTask(SPList list, DataSet taskDS, Dictionary`2 taskMapping, DataRow row, DataView secondaryView, Dictionary`2 redoEntries)    
 at Microsoft.Office.Project.Server.BusinessLayer.ProjectModeManaged.<>c__DisplayClass1.<SynchronizeTaskListInManagedMode>b__0(SPWeb workspaceWeb)    
 at Microsoft.Office.Project.Server.BusinessLayer.Project.<>c__DisplayClass58.<TryRunActionWithProjectWorkspaceWebInternal>b__57()    
 at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)    
 at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param)