Il arrive parfois que lors de la publication d’un ou de plusieurs projets d’entreprise, le processus « Project Publish » se bloque à 93% puis se termine anormalement par une erreur :

clip_image001

Une erreur de type PSError: GeneralQueueJobFailed (26000) est alors générée. Cela signifie que Project n’a pas réussi à écrire convenablement les données du projet provenant de la base Draft dans la base Published.

Les causes de ce problème peuvent être multiples:

  • Données corrompues dans un projet
  • Données incomplètes envoyées dans la base Published
  • Etc.

Dans tous les cas, il est souvent très difficile de savoir par où commencer. Dans cet article, je vais tenter de vous donner quelques clés pour corriger ce problème.

En tout premier lieu, je tiens à préciser que tout ce qui est décrit dans cet article ne doit en aucun cas être utilisé directement sur une base de données en production sans avoir fait l’objet d’un test préalable afin de valider que le problème est solutionné sans effet de bord.

Le point de départ de toute anomalie se produisant lors d’un processus quelconque de Project Server 2007 est l’analyse des logs ULS. Ces fichiers de logging sont générés par Windows Sharepoint Services et peuvent être personnalisés dans la partie Opérations de l’interface d’administration de Sharepoint.

clip_image002

Par défaut, vous les trouverez dans le répertoire <Program Files>\Common Files\Microsoft Shared\Web Server Extensions\12\LOGS\.

Dans ces fichiers ULS, vous pouvez trouver deux types d’erreurs que je vais détailler :

Erreur 1: Node Consistency Message: Exception Recreating Server Level Summary Resource Assignment. ResUid=<res_uid>

Normalement, dans les logs ULS, vous devriez trouver une séquence telle que:

Node Consistency Message: Resource Load. Uid=<res_uid>
   Node Consistency Message: Assignment Save. Uid=<assn_uid 1>
   Node Consistency Message: Assignment Save. Uid=<assn_uid 2>
   Node Consistency Message: Assignment Save. Uid=<assn_uid 3>
   Node Consistency Message: Assignment Save. Uid=…
   Node Consistency Message: Assignment Save. Uid=<assn_uid n>

Puis, une erreur apparait :

Node Consistency Message: Exception Recreating Server Level Summary Resource Assignment. ResUid=<res_uid>

Cette liste d’affectations est le résultat d’une procédure stockée particulière qui s’exécute avec les paramètres suivants :

exec MSP_SRA_GetAllProjectLevelSRAs @proj_uid='11111111-1111-1111-1111-111111111111',@res_uid=<res_uid>,@includeProposedBookings=1

C’est à partir de la liste renvoyée par cette procédure stockée que Project va tenter de réécrire les données SRA (Summary Resource Assignment) de chaque ressource dans la nase Published. Si les données envoyées ou déjà contenues dans la base Published ne sont pas correctes, une erreur apparait. Il faut donc corriger cela en manipulant la base Published directement.

Si l’on étudie d’un peu plus près le code de cette procédure stockée, on obtient le code suivant :

SELECT ASSN_UID FROM dbo.MSP_ASSN_ENTERPRISE WHERE PROJ_UID <> @proj_uid AND RES_UID = @res_uid AND (ASSN_BOOKING_TYPE <= 1)

Pour corriger le problème, vous pouvez alors exécuter la commande SQL suivante dans la base Published :

DELETE FROM MSP_ASSN_ENTERPRISE WHERE RES_UID LIKE '<indiquez ici le RES_UID qui apparait dans le log ULS>' AND PROJ_UID LIKE ‘<indiquez ici le PROJ_UID du projet qui a provoqué l’erreur>

Si vous constatez que le problème se produit sur de nombreux projets, vous pouvez utiliser la commande suivante :

DELETE FROM dbo.MSP_ASSN_ENTERPRISE WHERE PROJ_UID <> '11111111-1111-1111-1111-111111111111' AND RES_UID = '<indiquez ici le RES_UID qui apparait dans le log ULS>' AND (ASSN_BOOKING_TYPE <= 1)

A partir de maintenant, vous pouvez rouvrir un projet dans Project Professional et refaire une sauvegarder et une publication.

Error 2 : Node Consistency Message: Exception Updating Summary Resource Assignment. ProjUid=<proj_uid>, ResUid=<res_uid>

Normalement, dans les logs ULS, vous devriez trouver une séquence telle que:

Node Consistency Message: Resource Load. Uid=<res_uid>
   Node Consistency Message: Assignment Save. Uid=<assn_uid 1>
   Node Consistency Message: Assignment Save. Uid=<assn_uid 2>
   Node Consistency Message: Assignment Save. Uid=<assn_uid 3>
   Node Consistency Message: Assignment Save. Uid=…
   Node Consistency Message: Assignment Save. Uid=<assn_uid n>

Puis, une erreur apparait :

Node Consistency Message: Exception Updating Summary Resource Assignment. ProjUid=<proj_uid>, ResUid=<res_uid>

Tout comme l’erreur décrite précédemment, la liste d’affectation est le résultat de la même procédure stockée. Cependant, cette fois, l’erreur provient d’un problème d’écriture des données SRA lors d’une mise à jour des valeurs déjà existantes, pour la ressource <res_uid> dans le projet <proj_uid>.

La principale cause est une incohérence dans la répartition les données de Travail (appelé Work Contour) sur une affectation.

Dans ce cas, il n’y pas d’autre choix que d’analyser le contenu du projet dans lequel l’erreur de publication s’est produite.

Après être passé en affichage Utilisation des Ressources, vous pouvez, par exemple, trouver ce genre de répartition :

clip_image003

Il va de soi qu’il est fort improbable que la ressource ait saisi de si petites valeurs de Travail Réel sur une période aussi lointaine. Il y a donc fort à parier que l’erreur (ou une des erreurs) se trouvent à cet endroit.

Pour le vérifier, je vous conseille de supprimer manuellement les saisies qui vous semblent incorrectes et ce, pour toutes les ressources du projet. En effet, une erreur de répartition peut en cacher une autre. Dans les logs ULS, vous ne trouverez que la première erreur qui a bloqué le processus.

Une fois ce nettoyage effectué, vous pouvez essayer de sauvegarder et de republier le projet.

Je le répète à nouveau, mais on est jamais assez prudent, tout cela ne doit pas être testé sur une plateforme en production, mais sur un environnement de test seulement.

Ainsi, si aucune des solutions proposées dans cet article ne corrige le problème de publication, je vous encourage à restaurer les bases de données initiales sur votre environnement de test, et n’hésitez pas à ouvrir un incident au Support technique de Microsoft.

Bien entendu, vos commentaires sont les bienvenus.

Bonne journée

Marc Biarnès