Lezen in het Engels

Delen via


Synchronisatietaak voor SharePoint-takenlijst mislukt wanneer Project wordt gepubliceerd

Symptomen

Een synchronisatietaak voor SharePoint-takenlijst mislukt in de projectwachtrij wanneer deze wordt gepubliceerd vanuit Project Professional of vanuit Project Web App (PWA).

Oorzaak

Dit probleem treedt op als een gebruiker die is toegevoegd aan een item in het veld Toegewezen aan in een takenlijst, is verwijderd uit de siteverzameling.

Oplossing

Het onderstaande PowerShell-script kan worden gebruikt om de lijstitems in een takenlijst te vinden die nog steeds gebruikersaccounts bevatten in het veld Toegewezen aan die ontbreken in de siteverzameling:

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 

Notitie

Wijzig de PWA-URL en de naam van de takenlijst voordat u PowerShell uitvoert.

Zodra de lijstitems zijn gevonden:

  1. Ga naar Site-instellingen en vervolgens Naar Inhoud en structuur.
  2. Open de takenlijst van de werkruimte die is gekoppeld aan het project.
  3. Verwijder de gebruiker uit de toewijzing in de takenlijst.

Alternatieve tijdelijke oplossingen zijn onder andere:

  1. Schakel de synchronisatie van de takenlijst uit door de volgende opdracht uit te voeren:
Disable-SPProjectEnterpriseProjectTaskSync –Url http://servername/PWA/NameOfProject
  1. Verwijder de takenlijst en maak deze opnieuw.

Meer informatie

De ULS-logboeken waarin de fout wordt weergegeven bij het bijwerken van het veld 'AssignedTo' in de takenlijst, zien er ongeveer als volgt uit:


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)