• Impact sur les Feuilles de Temps de l’exportation/importation de projets dans Project Pro

    Nous sommes nombreux à avoir utilisé, avec Project 2003, la possibilité d’exporter et de réimporter un projet au format XML pour le “réparer” en cas de corruption de données après l’avoir supprimer de la base de données.

    Certains d’entres vous utilisez peut-être encore cette solution avec Project 2007. Cependant, cela n’est plus aussi simple qu’avant et il est bon de connaitre les risques d’une telle manipulation avec Project 2007.

    Tout d’abord, lorsque vous rencontrez un problème de corruption de projet, je vous recommande fortement d’utiliser au préalable les solutions suivantes:

    • Restaurer le Projet à partir d’une sauvegarde dans les paramètres du Serveur
    • Supprimer le projet de la base Published et le republier à partir de Project Pro
    • Modifier la valeur du champ PROJ_EXT_EDITED du projet dans la table MSP_PROJECTS de la table Published et le rouvrir dans Project Pro, puis le publier

    Si toutefois aucune de ces solutions ne vous permet de réparer le projet, il vous reste la possibilité d’exporter le projet en XML et de le réimporter dans la base de données. Cependant, comme nous allons le voir, cette manipulation anodine avec Project 2003, provoque quelques effets de bords avec Project 2007, dans les Feuilles de Temps en particulier.

    Création du projet:

    Un projet TEST avec une tâche de 3 jours MyTask sur laquelle une ressource a été affectée est créé, sauvegardé et publié:

    Dans la Feuille de Temps de la ressource, on observe l’apparition de la ligne d’affectation :

    image

    La ressource saisi 5h de Travail Réel pendant les 3 jours de la tâche puis soumet la Feuille de Temps, qui est automatiquement approuvée.

    Cette Feuille de Temps est alors importée dans Mes Tâches puis les changements sont soumis, acceptés par le chef de projet et le projet est mis à jour.

    Exportation et suppression du projet:

    Constatant un dysfonctionnement du projet lié à une corruption de données binaires, le chef de projet décide de sauvegarder le projet au format XML à partir de Project 2007.

    Puis, par l’intermédiaire des paramètres du serveur Project Server 2007, le chef de projet supprime le projet de toutes les bases de données.

    ATTENTION :

    La suppression complète d’un projet n’est pas sans effet sur la cohérence des données dans les bases de données Published et Reporting. En effet, les données de Feuilles de Temps et de Reporting font référence aux projets par l’intermédiaire de leur GUID. Lorsqu’un projet est supprimé, les liens entre les Feuilles de Temps existantes, les données de Reporting et le projet via son GUID sont cassés. De plus, les transactions en cours ou déjà effectuées, elles aussi basées sur le GUID du projet, deviennent orphelines et ne sont plus récupérables.

    Dans la Feuille de Temps de la ressource, la ligne d’affectation apparait toujours (ligne orpheline) :

    image

    Si au premier coup d’œil on ne constate pas de différence flagrante avec l’état précédent, en observant de plus près, on s’aperçoit que le nom de la tâche n’apparait plus sous la forme d’un lien hypertexte. Ceci est normal car la ligne de Feuille de Temps est maintenant orpheline et n’est plus liée à une tâche existante (page Détail de la Tâche).

    Voici un script SQL qui donne la liste des GUID manquants entre les Feuilles de Temps et le Travail Réel de la base de Reporting:

    #############################################################################

    IF OBJECT_ID(N'TEMPDB..#TIMESHEETTABLE',N'U') IS NOT NULL

    DROP TABLE #TIMESHEETTABLE

     

    IF OBJECT_ID(N'TEMPDB..#ACTUALSTABLE',N'U') IS NOT NULL

    DROP TABLE #ACTUALSTABLE

     

    IF OBJECT_ID(N'TEMPDB..#DIFFTS_PWA',N'U') IS NOT NULL

    DROP TABLE #DIFFTS_PWA

     

    USE PROJECTSERVER_PUBLISHED

    SELECT MTL.TS_LINE_CACHED_PROJ_NAME,MTK.TASK_NAME, MR.RES_NAME, MTL.ASSN_UID, MTA.TS_ACT_START_DATE, MTA.TS_ACT_FINISH_DATE, MTA.TS_ACT_VALUE/60000 AS 'TS_ACT_VALUE', MTA.TS_ACT_PLAN_VALUE/60000 AS 'TS_ACT_PLAN_VALUE', MT.TS_STATUS_ENUM, MTL.TS_LINE_STATUS, MT.TS_UID

    INTO #TIMESHEETTABLE

    FROM MSP_TIMESHEET_LINES MTL

    INNER JOIN MSP_TIMESHEET_ACTUALS MTA

    ON MTL.TS_LINE_UID=MTA.TS_LINE_UID

    AND MTL.TS_LINE_STATUS=3

    INNER JOIN MSP_ASSIGNMENTS MA

    ON MTL.ASSN_UID=MA.ASSN_UID

    INNER JOIN MSP_RESOURCES MR

    ON MA.RES_UID=MR.RES_UID

    INNER JOIN MSP_TIMESHEETS MT

    ON MTL.TS_UID=MT.TS_UID --AND MT.TS_STATUS_ENUM=3 AND MTL.TS_LINE_STATUS=3

    INNER JOIN MSP_TASKS_SAVED MTK

    ON MTL.TASK_UID=MTK.TASK_UID

     

    USE PROJECTSERVER_REPORTING

    SELECT MABD.ASSIGNMENTUID, MR.RESOURCENAME, MABD.TIMEBYDAY, MABD.PROJECTUID, MP.PROJECTNAME, MABD.TASKUID, MT.TASKNAME, MABD.ASSIGNMENTWORK, MABD.ASSIGNMENTACTUALWORK

    INTO #ACTUALSTABLE

    FROM MSP_EPMASSIGNMENTBYDAY MABD

    INNER JOIN MSP_EPMPROJECT MP

    ON MABD.PROJECTUID=MP.PROJECTUID

    INNER JOIN MSP_EPMTASK MT

    ON MABD.TASKUID=MT.TASKUID

    INNER JOIN MSP_EPMASSIGNMENT MA

    ON MABD.ASSIGNMENTUID=MA.ASSIGNMENTUID

    INNER JOIN MSP_EPMRESOURCE MR

    ON MA.RESOURCEUID=MR.RESOURCEUID

     

    SELECT ISNULL(AC.RESOURCENAME,TS.RES_NAME) AS RESOURCENAME, ISNULL(AC.PROJECTNAME,TS.TS_LINE_CACHED_PROJ_NAME)AS PROJECTNAME, ISNULL(AC.TASKNAME, TS.TASK_NAME) AS TASKNAME, ISNULL(AC.TIMEBYDAY,TS.TS_ACT_START_DATE) AS TIMEBYDAY, AC.ASSIGNMENTACTUALWORK AS ASSIGNMENTACTUALWORK, TS.TS_ACT_VALUE AS TIMESHEETACTUALWORK, TS_STATUS_ENUM, TS_LINE_STATUS, TS_UID AS TIMESHEETUID

    INTO #DIFFTS_PWA

    FROM #ACTUALSTABLE AC

    FULL OUTER JOIN #TIMESHEETTABLE TS

    ON AC.ASSIGNMENTUID=TS.ASSN_UID

    AND TS.TS_ACT_START_DATE=AC.TIMEBYDAY

    AND AC.ASSIGNMENTWORK>0

     

    SELECT RESOURCENAME, PROJECTNAME, TASKNAME, TIMEBYDAY, ASSIGNMENTACTUALWORK, TIMESHEETACTUALWORK, TIMESHEETUID

    FROM #DIFFTS_PWA

    WHERE (TIMESHEETACTUALWORK IS NULL AND ASSIGNMENTACTUALWORK > 0.01)

    OR (ASSIGNMENTACTUALWORK IS NULL AND TIMESHEETACTUALWORK > 0.01)

    OR (ABS(TIMESHEETACTUALWORK - ASSIGNMENTACTUALWORK) > 0.01)

    AND TS_STATUS_ENUM=3

    ORDER BY RESOURCENAME

     

    DROP TABLE #TIMESHEETTABLE

    DROP TABLE #ACTUALSTABLE

    DROP TABLE #DIFFTS_PWA

    #############################################################################

    Si on exécute ce script, on obtient dans le cas présent, le résultat suivant :

    image

    On voit ici que les valeurs de Travail Réel sont toujours présentes dans la base de Reporting mais ne correspondent plus à rien dans la Feuille de Temps.

    Importation et publication du projet:

    Dans Project Pro, le chef de projet ouvre le fichier XML et republie le projet dans la base de données Project Server.

    Dans la Feuille de Temps de la ressource, on observe l’apparition d’une nouvelle ligne d’affectation :

    image

    Il est intéressant de constater que ni l’une ni l’autre des deux lignes ne possède de lien hypertexte. En effet, lorsqu’un projet (ou une nouvelle affectation) est publié, la ligne n’est pas automatiquement insérée dans la Feuille de Temps. Elle apparait, mais cela est dû à l’exécution d’une procédure stockée (MSP_WEB_SP_QRY_GetAssnToAddToTimesheet ) qui permet de retourner la liste des affectations qui peuvent être insérées (mais ne le sont pas encore) dans la Feuille de Temps au moment de son chargement.

    Si on exécute le script, on obtient dans le cas présent, le résultat suivant :

    image

    On constate effectivement que les valeurs de Travail Réel sont toujours dans la base de Reporting mais n’existent pas encore dans la Feuille de Temps. Il n’y a pas encore d’enregistrement dans la table MSP_TIMESHEET_LINES pour le projet publié.

    Resynchroniser la Feuille de Temps

    Pour resynchroniser les données, il faut:

    1. Rappeler la Feuille de Temps
    2. Soumettre la Feuille de Temps

    A partir de là, les informations d’affectations retournées par la procédure stockée MSP_WEB_SP_QRY_GetAssnToAddToTimesheet sont intégrées dans la table MSP_TIMESHEET_LINES.

    Lorsque la ressource ouvre à nouveau sa Feuille de Temps, elle peut observer le changement :

    image

    Si on exécute le script, on obtient le résultat attendu:

    image

    Les données de Feuille de Temps et de la base Reporting sont à nouveau synchronisées.

    Ce point est très important car cela va permettre, lors de la mise à jour du Cube OLAP, de faire en sorte que les données intégrées dans le Cube soient bien celles du projet importé et non celles du projet supprimé.

    Supprimer les lignes orphelines:

    Il existe deux solutions pour supprimer les lignes orphelines dans la Feuille de Temps:

    • Rappeler la Feuille de Temps, la supprimer, la recréer
    • Utiliser le script suivant :

    #############################################################################

    SELECT TL.TS_LINE_UID, TL.TASK_UID, TL.PROJ_UID, TL.TS_LINE_CACHED_PROJ_NAME, TL.TS_LINE_CACHED_ASSIGN_NAME, TL.TS_LINE_VALIDATION_TYPE, MP.PROJ_NAME

    INTO #TSLINESCOMPARISON

    FROM MSP_TIMESHEET_LINES TL

    LEFT JOIN MSP_PROJECTS MP

    ON TL.PROJ_UID=MP.PROJ_UID

    ORDER BY TL.PROJ_UID

     

    SELECT TS_LINE_UID

    INTO #LISTOFLINEUIDFORDELETEDTSLINES

    FROM #TSLINESCOMPARISON

    WHERE PROJ_NAME IS NULL AND TS_LINE_VALIDATION_TYPE>0

     

    SELECT * FROM MSP_TIMESHEET_LINES TL

    INNER JOIN #LISTOFLINEUIDFORDELETEDTSLINES LDL

    ON TL.TS_LINE_UID=LDL.TS_LINE_UID

     

    DECLARE DELETE_TSLINE CURSOR FOR

    SELECT TL.TS_LINE_UID FROM MSP_TIMESHEET_LINES TL

    INNER JOIN #LISTOFLINEUIDFORDELETEDTSLINES LDL

    ON TL.TS_LINE_UID=LDL.TS_LINE_UID

     

    OPEN DELETE_TSLINE

    DECLARE @TS_LINE_UID UID

     

    FETCH NEXT FROM DELETE_TSLINE INTO @TS_LINE_UID

     

           WHILE @@FETCH_STATUS = 0

    BEGIN

           EXEC MSP_WEB_SP_QRY_DELETETIMESHEETLINE  @TS_LINE_UID 

           FETCH NEXT FROM DELETE_TSLINE INTO @TS_LINE_UID

    END

     

    DEALLOCATE DELETE_TSLINE

    DROP TABLE #LISTOFLINEUIDFORDELETEDTSLINES

    DROP TABLE #TSLINESCOMPARISON

    #############################################################################

    Après l’avoir exécuter, dans la Feuille de Temps, la ligne orpheline a été supprimée :

    image

    Conclusion:

    Encore une fois, je ne recommande d’utiliser cette solution que lorsque toutes les autres possibilités ont été testées sans succès.

     

    Marc Biarnès

  • Mauvaise repartition du Travail reel dans Project 2007

    Bonjour,

    Vous êtes nombreux à avoir rencontré des problèmes de répartition de Travail Réel dans Project Professionel et donc dans les projets.

    Ce phénomène s’illustre essentiellement de 3 manières:

    1. Les valeurs de Travail Réel contiennent plusieurs décimales

    2. Le Travail Réel se positionne dans le passé, en dehors de la période de saisie des temps

    3. Le Travail Réel se positionne dans le futur, au delà de la période de saisie des temps

    Ces phénomènes ont tous le même origine : La gestion des exceptions de calendrier des ressources suite à la saisie de temps Hors Projet dans les Feuilles de Temps.

    Qu’est-ce qu’une exception de calendrier ?

    Une exception de calendrier est une période de temps (heure, jour, semaine) qui n’est pas considérée comme une journée de Travail normale telle qu’elle est définie dans le calendrier Standard. Par exemple, lorsque vous définissez une journée avec des plages de travail personnalisées, ou tout simplement non travaillée, vous créez automatiquement une exception de calendrier pour la ressource concernée.

    Lorsque vous utilisez les Feuilles de Temps, vous avez le choix entre 2 types de saisie:

    1. Le Travail Réel effectué sur les tâches auxquelles vous êtes assignés

    2. Le Travail effectué sur des tâches dites “Hors Projet”

    Qu’est-ce que le Travail Hors Projet?

    Dans Project Server 2007, il existe 2 types de Travail Hors Projet: “Travail” et “Non Lié au Travail”.

    Lorsque vous créez des activités hors projet dans les paramètres du serveur de Project Server 2007,vous pouvez définir le type de Travail:

    image

    La différence entre chaque type de Travail n’est pas directement visible dans l’interface de Project Server. Si vous voulez voir cette différence, vous devez vérifier le calendrier de la ressource. Pourquoi ?

    Parce selon le type choisi pour une catégorie, les valeurs de Travail Hors Projet saisies par la ressource dans sa Feuille de Temps vont générer ou non des exceptions de calendrier:

    • Non Lié au Travail = Chaque valeur de Travail saisie créé une exception de calendrier (exemple : Vacances, Maladie, Formation suivie, etc.)
    • Travail = Chaque valeur de Travail saisie ne créé pas d’exception de calendrier (exemple : travail administratif, Formation donnée, etc.)

    Quel est le scénario ?

    Tout d’abord, je tiens à préciser qu’il n’existe pas un seul et unique scenario. Celui que je vais décrire en est un parmi d’autres qui sont toutefois très proches car faisant appel aux mêmes fonctionnalités de Project Server.

    1. La Ressource ouvre sa Feuille de Temps et saisi du Travail Réel pour ses tâches et du Travail Hors Projet dans une catégorie de type Non Lié au Travail (par exemple : Vacances):

     

    Lun

    Mar

    Mer

    Jeu

    Ven

    Travail

    Travail Réel

    1j

    1j

    1j

    1j

    Vacances

    1j

     

    2. La ressource soumet la Feuille de Temps

    3. La Feuille de Temps est importée dans Mes Tâches

    4. Les changements sont soumis

    5. Le Chef de Projet accepte et met à jour le projet dans Project 2007:

     

    Lun

    Mar

    Mer

    Jeu

    Ven

    Travail

    1j

    1j

    1j

    1j

    Travail Réel

    1j

    1j

    1j

    1j

    Exception Calendrier

    Non Travaillée

    6. Dans Project Web Access, la ressource rappelle sa Feuille de Temps et fait les modifications suivantes :

     

    Lun

    Mar

    Mer

    Jeu

    Ven

    Travail

    1j

    1j

    1j

    1j

    Travail Réel

    1j

    0.5j

    1j

    1j

    Vacances

    0.5j

    1j

     

    7. La ressource soumet la Feuille de Temps

    8. La Feuille de Temps est importée dans Mes Tâches

    9. Les changements sont soumis

    10. Le Chef de Projet accepte et met à jour le projet dans Project 2007:

    Lun

    Mar

    Mer

    Jeu

    Ven

    Travail

    1.14j

    0.57j

     

    1.14j

    1.14j

    Travail Réel

    1.14j

    0.57j

    0j

    1.14j

    1.14j

    Exception Calendrier

     

    Non Travaillée

    Non Travaillée

     

    Quelle est la cause ?

    Comme on le voit dans tableau précédent, le problème ici est que la répartition du Travail Réel n’est plus respectée et diffère des valeurs saisies par la ressource.

    Cela se produit parce que les conditions suivantes sont réunies:

    • La Ressource soumet du Travail Réel au jour J
    • La Ressource rappelle se Feuille de Temps
    • La Ressource soumet du Travail Hors Projet au jour J dans une catégorie de type Non Lié au Travail

    Dans ce cas, le Travail Réel précédemment affecté au jour J est alors réparti sur les autres jours.

    Dans certains cas, du Travail Réel supplémentaire peut apparaitre dans les passé ou dans le futur.

    Comment corriger ce problème ?

    La première chose à faire est de télécharger et d’installer le Cumulative Update du mois de Décembre, pour la partie Serveur ET la partie Cliente.

    Ensuite, afin de corriger les valeurs de Travail Réel erronées, vous pouvez (au choix):

    • Faire les corrections dans le projet via Project et republier
    • Rappeler les Feuilles de Temps et les resoumettre puis les réimporter dans Mes Tâches et soumettre des changements.

    Nous effectuons des recherches complémentaires afin de déterminer la meilleure procédure pour corriger les données.

    Marc Biarnès

  • Installation de Project Server 2007 sur Windows Server 2008 R2

    HomeBonjour tout le monde.

    Dans cet article, je vais vous expliquer les étapes à suivre pour installer Project Server 2007 sur un serveur Windows Server 2008 R2.

    Par défaut, lorsque vous essayez d'installer Project Server 2007 (soit RTM ou avec le Service Pack 1) sur un serveur Windows Server 2008 R2, le programme d’installation échoue et un message d’erreur apparait nous indiquant qu’il faut installer la dernière version disponible de Project Server 2007.

    Ce message nous redirige alors vers l’article technique : http://support.microsoft.com/kb/962935

    Honnêtement, cet article n’offre pas vraiment une aide utile pour résoudre le problème.

    En fait, le système détecte que la version de Project Server 2007 que nous tentons d’installer n’est pas la plus récente. C’est exact et la solution pour résoudre ce problème est de créer une source d’installation contenant déjà les fichiers inclus dans le Service Pack 2.

    Pour ce faire, il faut:

    1. Copier les fichiers de Project Server 2007 (RTM ou SP1) dans un répertoire (“C:\PS2007” par exemple)

    2. Télécharger les fichiers du Service Pack 2 de Project Server 2007 à partir de l’article suivant : http://support.microsoft.com/kb/953334

    3. Extraire ces fichiers et les inclure dans le répertoire <C:\PS2007\Updates> en suivant la procédure décrite dans l’article Technet suivant: http://technet.microsoft.com/es-es/library/dd745010.aspx

    4. Relancer la procédure d’installation

    Si vous rencontrez des problèmes d’installation malgré la mise en place de cette procédure, vous pouvez contacter le Support Technique de Microsoft ou laisser un commentaire sur cet article. Nous nous efforcerons d’y répondre dans les plus brefs délais.

     

    Marc Biarnès

  • Disponibilite du Cumulative Update de decembre 2009

    Depuis ce matin, le Cumulative Update de décembre est en ligne sur le site de Microsoft.

    Je rappelle que ce Cumulative Update contient un correctif très important concernant la gestions des exceptions de calendriers et la désynchronisation du Travail Réel. Ce correctif est composé d’une partie cliente et serveur. Il faut donc installer les deux correctifs pour corriger complètement le problème.

    Voici les informations nécessaires à son téléchargement, ainsi que le descriptif des problèmes corrigés :

    • WSS 3.0 - Hotfix Final Release for Rollup KB 977022
    • Office 2007 Server - Hotfix Final Release for Rollup KB 977023
    • Project 2007 Server - Hotfix Final Release for Rollup KB 977028
    • Project 2007 - Hotfix Final Release for Rollup KB 977266
    • WSS Localized - Hotfix Final Release for Rollup KB 977731
    • WSS Localized - Hotfix Final Release for Rollup KB 977732

    Bons téléchargements.

    Marc Biarnès

  • Ouverture du Blog

    Bienvenue sur le Blog de l’équipe francophone de Support Technique EPM

    Le Support Technique EPM rejoint aujourd’hui la communauté des blogueurs EPM. Vous trouverez régulièrement sur ce blog les contributions des différents membres de l’équipe et plus précisément des membres appartement à l’équipe Escalation Services.

    Sur ce blog, nous allons nous focaliser essentiellement sur 2 types d’informations :

    image

    - Des informations et des méthodes de Troubleshooting que nous voulons partager avec la communauté et qui parfois ne sont pas assez documentés dans les articles disponibles sur le web. Ces informations seront souvent issues de notre propre expérience et de nos propres résultats de résolution d’incidents clients.

    - Des informations sur les ressources, outils, logiciel, évènements techniques qui vous aideront à utiliser la solution EPM dans votre environnement. Par exemple, nous pouvons créer un article sur la disponibilité des correctifs et des Service Packs disponibles et y ajouter des informations et des bonnes pratiques d’installation sur le serveur et les stations.

    Ce blog n’a pas pour rôle de se substituer au Support Technique de Microsoft. Bien sûr, vos commentaires et opinions sur les articles publiés seront toujours les bienvenus, mais en cas d’urgence ou de problème important dans votre environnement, nous vous demandons de bien vouloir suivre le processus normal d’accès au Support Technique. Vous pouvez trouver toutes les informations sur le site http://support.microsoft.com.

    Enfin, je voudrais ajouter qu’un des rôles principaux de ce blog est de promouvoir l’aide personnelle. Nous souhaitons que les membres de la communauté aient les outils pour mieux comprendre et résoudre les problèmes qu’ils pourraient rencontrer dans la gestion quotidienne de leur plate-forme EPM. Ce blog est une partie des nombreuses aides disponibles sur le web.

    Nous attendons avec impatience de pouvoir partager des idées et des informations tous ensemble sur ce blog.

    Marc Biarnès

    Escalation Engineer, Microsoft CSS - France