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

Belirtiler

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

Neden

Bu sorun, görev listesindeki "Atanan" alanındaki bir öğeye eklenen bir kullanıcı site koleksiyonundan kaldırıldıysa oluşur.

Çözüm

Aşağıdaki PowerShell betiği, site koleksiyonunda eksik olan "Atanan" alanında kullanıcı hesaplarını içeren bir görev listesindeki liste öğelerini 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 bulunduktan sonra:

  1. Site Ayarları'na ve ardından İç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 listesinden atamadan kaldırın.

Alternatif geçici çözüm seçenekleri şunlardır:

  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 silin ve yeniden oluşturun.

Daha fazla bilgi

Görev listesindeki "Atanan" alanını güncelleştirirken hatayı gösteren ULS günlükleri aşağıdakine benzer şekilde görünü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)