Project yayımlandığında SharePoint görev listesi eşitleme işi başarısız oluyor

Not

Office 365 ProPlus, Microsoft 365 Kurumsal Uygulamaları olarak yeniden adlandırılıyor. Bu değişiklik hakkında daha fazla bilgi için, bu blog yazısını okuyun.

Belirtiler

Project Professional 'dan veya Project Web App 'ten (PWA) yayımlandığında, proje sırasında SharePoint görev listesi eşitleme işi başarısız oluyor.

Neden

Bu sorun, bir görev listesindeki "atanan" alanındaki öğeye eklenmiş olan bir Kullanıcı site koleksiyonundan kaldırılmışsa oluşur.

Çözüm

Aşağıdaki PowerShell betiği, görev listesinde bulunan ve "atanan" alanında site koleksiyonunda bulunmayan Kullanıcı hesaplarını bulmak için kullanılabilir:

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 

Not

PowerShell 'i çalıştırmadan önce PWA URL 'sini ve görev listesi adını değiştirin.

Liste öğeleri bulunduğunda:

  1. Site ayarları 'na gidin ve içerik ve yapı 'ya gidin.
  2. Projeyle ilişkili çalışma alanının görev listesine erişin.
  3. Kullanıcıyı görev listesi 'nde atamadan kaldırma.

Alternatif geçici çözüm seçenekleri aşağıdakileri içerir:

  1. Aşağıdaki komutu çalıştırarak görev listesi eşitlemesini devre dışı bırakın:
Disable-SPProjectEnterpriseProjectTaskSync –Url http://servername/PWA/NameOfProject
  1. Görev listesini silip yeniden oluşturun.

Daha fazla bilgi

Görev listesindeki "atanan" alanı güncelleştirilirken hatayı gösteren ULS günlükleri aşağıdakine benzer olacaktı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)