Vérification et nettoyage préalables à la migration
Mis à jour: mai 2009
Dernière rubrique modifiée : 2015-02-27
Dans cet article :
Exécuter l’outil de migration avec l’option -verify
Effectuer des tests manuels pour déterminer si des problèmes affectent la migration
Cet article décrit la procédure à suivre pour vérifier que les données sources Microsoft Office Project Server 2003 que vous envisagez de migrer sont dans un état qui permet leur migration vers Microsoft Office Project Server 2007. Cet article décrit des outils qui permettent de vérifier que les données que vous envisagez de migrer sont valides et saines. Il s’agit notamment de l’option -verify de l’outil de migration et de requêtes SQL à exécuter sur vos bases de données Project Server 2003. Il décrit également les vérifications générales que vous devez effectuer dans votre environnement Project Server 2003 avant la migration.
Important : |
---|
Suivant la taille de votre base de données, la migration peut être un processus très long. (Pour plus d’informations, voir Données de performance de la migration pour Project Server 2007.) Si la migration des données globales échoue pendant le processus (par exemple, en raison de ressources d’entreprise en double), vous devez résoudre le problème et répéter le processus de migration des données globales à partir du début. Si vous effectuez une vérification et un nettoyage préalables à la migration, vous pouvez considérablement réduire les risques d’échec de l’outil de migration. |
Exécuter l’outil de migration avec l’option -verify
L’option -verify de l’outil de migration examine vos données Project Server 2003 des points de vue suivants :
projets extraits ;
projets modifiés de manière externe ;
projets dont l’état est en attente d’une mise à jour ;
ressources d’entreprise en double.
L’outil de migration détermine si des modifications doivent être apportées aux données afin qu’elles soient appropriées pour la migration. Il écrit ces modifications dans le fichier journal de migration. Il ne résout pas les données automatiquement.
Notez que l’option -verify ne constitue pas le seul ensemble de contrôles que vous devez effectuer sur vos données. Vous devez suivre les autres procédures de vérification indiquées dans cet article pour vous assurer que vos données sont dans un état valide en vue de leur migration.
Vous devez lire le fichier journal généré et apporter les modifications nécessaires à vos données Project Server 2003 afin d’éliminer les problèmes susceptibles de survenir lors de la migration des données.
Remarque : |
---|
L’exécution de l’outil de migration avec l’option -verify ne migre pas les données globales ou de projet, même si le fichier de configuration de la migration prévoit cette opération |
Déterminer si des projets sont extraits
Un projet ne peut pas être migré s’il est extrait. Il est conseillé avant toute migration de placer les données sources dans un état stable ; le fait d’archiver soigneusement les projets permet de les placer dans un état stable en vue de leur migration. Les coordinateurs de migration peuvent définir une date échéance avant laquelle les responsables de projets doivent archiver leurs projets et au-delà de laquelle tous les projets peuvent être archivés d’office.
Comment vérifier l’existence du problème
Si un projet à migrer est extrait lorsque vous exécutez l’outil de migration avec l’option -verify, le message suivant apparaît dans la console et dans le journal :
Les projets suivants sont extraits. Ces projets ne seront pas migrés par l'outil de migration. (L'outil de migration ne s'arrête pas, il ignore simplement ces projets.) Archivez-les.
Résultat de la réussite du test | Résultat de l’échec du test |
---|---|
Le message précédent n’apparaît pas si tous les projets sont archivés. |
Le message précédent apparaît, suivi des noms des projets. Chaque nom de projet apparaît sur une ligne distincte. |
Comment résoudre le problème
Archivez tous les projets qui sont extraits.
Archiver les projets qui sont extraits dans Project Server 2003
Dans Project Server 2003 Project Web Access, cliquez sur Admin.
Cliquez sur Gérer les fonctionnalités d’entreprise.
Cliquez sur Archiver les projets d’entreprise et déterminez les projets extraits. Coordonnez leur archivage ou exécutez une opération d’archivage forcé à partir de Project Web Access.
Remarque : |
---|
Vous pouvez également déterminer si des projets sont extraits en exécutant la requête SQL suivante dans les bases de données « Project Server 2003 Project tables » et « Project Server 2003 Web Tables ».select PROJ_NAME from dbo.MSP_PROJECTS where PROJ_CHECKEDOUT = 1 and PROJ_TYPE in (0, 1) Si des résultats sont retournés, les projets référencés sont extraits. |
Déterminer si des projets ont été modifiés de manière externe
Un projet ne peut pas être migré s’il a été modifié de manière externe.
Comment vérifier l’existence du problème
Lorsque vous exécutez l’outil de migration avec l’option -verify, si un projet à migrer a été modifié de manière externe, le message suivant apparaît dans la console et dans le journal :
Le sprojets suivants ont été modifiés en externe. Ces projets ne seront pas migrés par l'outil de migration. (L'outil de migration ne s'arrête pas, il ignore juste ces projets.) Ouvrez-les avec Project Professional 2003 et enregistrez-les au format Project Server 2003.
Résultat de la réussite du test | Résultat de l’échec du test |
---|---|
Le message précédent n’apparaît pas si aucun projet n’a été modifié de manière externe. |
Le message précédent apparaît, suivi des noms des projets. Chaque nom de projet apparaît sur une ligne distincte. |
Comment résoudre le problème
Ouvrez le projet modifié de manière externe dans Project Professional 2003, enregistrez-le, puis archivez-le sur le serveur. Cette action doit définir l’indicateur Données modifiées hors programme sur false.
Remarque : |
---|
Vous pouvez également déterminer si des projets ont été modifiés de manière externe en exécutant la requête SQL suivante dans les bases de données « Project Server 2003 Project tables » et « Project Server 2003 Web Tables ».select PROJ_NAME from dbo.MSP_PROJECTS where (PROJ_EXT_EDITED = 1 or RESERVED_BINARY_DATA is null) and PROJ_TYPE in (0, 1) |
Si des lignes sont retournées, les projets référencés ont été modifiés de manière externe.
Déterminer si l’état de certains projets est en attente d’une mise à jour
Par défaut, si des projets Project Server 2003 sont en attente d’une mise à jour, ils ne sont pas migrés vers Office Project Server 2007. Avant la migration, il est recommandé que les utilisateurs acceptent ou refusent les mises à jour de l’état afin que les projets se trouvent dans un état stable.
Comment vérifier l’existence du problème
Si l’état d’un projet est en attente d’une mise à jour, lorsque vous exécutez l’outil de migration avec l’option -verify, le message suivant apparaît dans la console et dans le journal :
Les projets suivants comportent des mises à jour en attente. Ces projets ne seront pas migrés par l'outil de migration. (L'outil de migration ne s'arrête pas, il ignore simplement ces projets.) Appliquez les mises à jour en attente.
Résultat de la réussite du test | Résultat de l’échec du test |
---|---|
Le message précédent n’apparaît pas si aucun état d’un projet n’est en attente d’une mise à jour. |
Le message précédent apparaît, suivi des noms des projets. Chaque nom de projet apparaît sur une ligne distincte. |
Comment résoudre le problème
Le paramètre StopProjectMigrationIfStatusUpdatesPending dans le fichier de configuration de la migration peut être configuré de manière à permettre la migration des projets en attente d’une mise à jour. Pour plus d’informations sur ce paramètre, voir Configurer l'outil de migration pour Project Server.
Parmi les mesures que nous vous recommandons de prendre préalablement à la migration, vous pouvez définir une date échéance avant laquelle les responsables de projets doivent accepter ou rejeter les mises à jour d’état en attente. Au-delà de cette date, vous pouvez forcer la migration de tous les projets (même si l’état n’est pas à jour).
Remarque : |
---|
Vous pouvez également déterminer s’il existe des projets dont l’état est en attente d’une mise à jour en exécutant la requête SQL suivante dans la base de données « Project Server 2003 Web Tables ».select distinct PROJ_NAME from dbo.MSP_WEB_ASSIGNMENTS wa, dbo.MSP_WEB_TRANSACTIONS trans, dbo.MSP_WEB_PROJECTS wp where wa.WPROJ_ID = wp.WPROJ_ID and trans.WASSN_ID = wa.WASSN_ID and trans.WTRANS_STATE in (0, 1, 2) Si des résultats sont retournés, l’état des projets référencés est en attente d’une mise à jour. |
Déterminer s’il existe des ressources d’entreprise en double
L’existence dans la liste des ressources d’entreprise de ressources portant le même nom n’est pas prise en charge dans Project 2003 ou Project 2007. Si cette situation se produit, elle peut résulter de modifications directes de la base de données. Notez que les noms en double peuvent ne pas apparaître dans Project Professional lorsque vous modifiez la liste des ressources d’entreprise. En effet, il se peut que la table MSP_WEB_RESOURCES ne comporte qu’une entrée pour une ressource d’entreprise portant ce nom. Il n’existe aucun moyen pour résoudre simplement ce problème. À cette fin, consultez votre expert Project Server. Voici quelques indications pour rechercher et résoudre les problèmes liés aux ressources d’entreprise en double.
Comment vérifier l’existence du problème
S’il existe des ressources d’entreprise en double, lorsque vous exécutez l’outil de migration avec l’option -verify, le message suivant apparaît dans la console et dans le journal :
Le pool de ressources d'entreprise contient des doublons pour les ressources suivantes. Ce scénario n'est pas pris en charge dans Project 2003 et pourrait provoquer l'échec de la migration. Vérifiez qu'il n'existe pas de doublons dans les ressources avant d'essayer de lancer la migration.
Résultat de la réussite du test | Résultat de l’échec du test |
---|---|
Le message précédent n’apparaît pas s’il n’existe aucune ressource d’entreprise en double. |
Le message précédent apparaît, suivi des noms des ressources. Chaque nom de ressource apparaît sur une ligne distincte. |
Remarque : |
---|
Vous pouvez également vérifier s’il existe des ressources d’entreprise en double en exécutant la requête SQL suivante dans les tables Project Server 2003 Project. La requête recense toutes les ressources d’entreprise en double dans la liste des ressources d’entreprise. Requête 1 : select res_uid, res_name, res_euid from msp_resources where res_name in (select distinct r1.RES_NAME from dbo.MSP_RESOURCES r1 inner join dbo.MSP_RESOURCES r2 on (r1.RES_NAME = r2.RES_NAME and r1.PROJ_ID = r2.PROJ_ID) where r1.PROJ_ID = 1 and r1.RES_UID != r2.RES_UID) and proj_id = 1 order by res_name asc Si le script détecte des ressources d’entreprise en double, les données sont affichées de la même façon que l’exemple suivant de deux ressources en double. |
RES_UID | RES_NAME | RES_EUID |
---|---|---|
123 |
Pierre Durant |
123 |
124 |
Pierre Durant |
123 |
125 |
Jean Dupont |
125 |
126 |
Jean Dupont |
126 |
Vérifier l’existence de ressources d’entreprise en double dans vos projets
La requête SQL suivante détermine si des ressources d’entreprise en double sont utilisées dans vos projets. Étant donné que nous ferons référence à cette requête dans les sections suivantes, nous l’appellerons « requête 2».
Requête 2 :
select distinct res_name, res_euid from msp_resources where res_name in (select distinct r1.RES_NAME from dbo.MSP_RESOURCES r1 inner join dbo.MSP_RESOURCES r2 on (r1.RES_NAME = r2.RES_NAME and r1.PROJ_ID = r2.PROJ_ID) where r1.PROJ_ID = 1 and r1.RES_UID != r2.RES_UID) and proj_id <> 1 and res_euid is not null order by res_name, res_euid asc
L’exécution de la requête génère la liste des ressources d’entreprise en double utilisées dans les projets. Si seule une ligne apparaît par nom de ressource, exécutez la requête 4, située dans la section « Corriger les ressources d’entreprise en double afin de désigner la ressource adéquate ». Si plus d’une ligne apparaît par nom de ressource, exécutez la requête 3, située dans la section « Corriger les projets qui utilisent des ressources d’entreprise en double ».
Dans l’exemple suivant, notez que des instances en double de « Jean Dupont » sont utilisées dans les projets. Cela doit être corrigé.
RES_NAME | RES_EUID |
---|---|
Pierre Durant |
123 |
Jean Dupont |
125 |
Jean Dupont |
126 |
Corriger les projets qui utilisent des ressources d’entreprise en double
L’exécution de la requête suivante (requête 3) retourne les ID de projet qui sont associés à des ressources d’entreprise en double. Vous devez éliminer ce type de doublon afin qu’une seule combinaison « res_name, res_euid » soit utilisée dans vos projets. Si des doublons existent, vous devez désigner l’un d’eux en tant que ressource « correcte » et vous assurer que tous les projets utilisent cette ressource. (Mettez à jour la colonne MSP_RESOURCES.RES_EUID pour ce projet afin qu’elle pointe vers la ressource d’entreprise que vous avez désignée en tant que ressource « correcte ».) Ensuite, exécutez la requête 2 pour répéter le test de vérification de la présence de ressources d’entreprise en double dans les projets.
Requête 3 :
select res_name, res_euid, proj_id from msp_resources where res_name in (select distinct r1.RES_NAME from dbo.MSP_RESOURCES r1 inner join dbo.MSP_RESOURCES r2 on (r1.RES_NAME = r2.RES_NAME and r1.PROJ_ID = r2.PROJ_ID) where r1.PROJ_ID = 1 and r1.RES_UID != r2.RES_UID) and proj_id <> 1 and res_euid is not null order by res_name, res_euid asc
Par exemple, supposons que l’exécution du script 3 retourne les résultats suivants :
RES_NAME | RES_EUID | PROJ_ID |
---|---|---|
Jean Dupont |
125 |
12 |
Jean Dupont |
126 |
13 |
Jean Dupont |
125 |
14 |
Pour résoudre cette situation, vous pouvez choisir « Jean Dupont » avec RES_EUID=125 comme ressource d’entreprise « correcte » et corriger les lignes comme suit :
RES_NAME | RES_EUID | PROJ_ID |
---|---|---|
Jean Dupont |
125 |
12 |
Jean Dupont |
125 |
13 |
Jean Dupont |
125 |
14 |
Corriger les ressources d’entreprise en double afin de désigner la ressource adéquate
Dans la section précédente, vous avez désigné une ressource correcte parmi les doublons et corrigé les projets afin qu’ils pointent vers celle-ci. À présent, vous devez modifier la table MSP_RESOURCES en fonction de la ressource que vous avez désignée. Exécutez la requête 4 (qui est identique à la requête 1) pour obtenir la liste des ressources d’entreprise en double. Mettez à jour la colonne RES_EUID pour la ressource en double afin qu’elle pointe vers la ressource que vous avez désignée en tant que ressource correcte.
Requête 4 :
select res_uid, res_name, res_euid from msp_resources where res_name in (select distinct r1.RES_NAME from dbo.MSP_RESOURCES r1 inner join dbo.MSP_RESOURCES r2 on (r1.RES_NAME = r2.RES_NAME and r1.PROJ_ID = r2.PROJ_ID) where r1.PROJ_ID = 1 and r1.RES_UID != r2.RES_UID) and proj_id = 1 order by res_name asc
Par exemple, supposons que l’exécution de la requête 4 retourne les résultats suivants. La ligne « Pierre Durant » est correcte. La ligne « Jean Dupont » doit être corrigée.
RES_UID | RES_NAME | RES_EUID |
---|---|---|
123 |
Pierre Durant |
123 |
124 |
Pierre Durant |
123 |
125 |
Jean Dupont |
125 |
126 |
Jean Dupont |
126 |
Pour résoudre cette situation, vous pouvez choisir « Jean Dupont » avec RES_UID=125 comme ressource « correcte » et mettre à jour l’autre ligne afin qu’elle pointe vers cet élément. Par exemple :
RES_UID | RES_NAME | RES_EUID |
---|---|---|
123 |
Pierre Durant |
123 |
124 |
Pierre Durant |
123 |
125 |
Jean Dupont |
125 |
126 |
Jean Dupont |
125 |
Supprimer la ressource en double de la liste des ressources d’entreprise
Vous pouvez supprimer de la liste des ressources d’entreprise une ressource en double en la faisant pointer vers un projet fictif (PROJ_ID = valeur entière maximale). En outre, nous devons nettoyer les calendriers d’entreprise connexes. Pour ce faire, exécutez la requête 5.
Requête 5 :
update msp_resources set proj_id=2147483647 WHERE res_uid != res_euid and res_euid is not null and res_uid > 0 and proj_id = 1
update msp_calendars set proj_id=2147483647 WHERE res_uid not in (select res_uid from msp_resources where proj_id=1) and proj_id = 1 and cal_uid > 0 and res_uid is not null
Après avoir effectué les étapes précédentes, réexécutez l’outil de migration avec l’option –verify pour vérifier que le problème de ressource en double est résolu.
Effectuer des tests manuels pour déterminer si des problèmes affectent la migration
L’exécution de l’outil de migration avec l’option -verify vous permet de vérifier automatiquement si les données Project Server 2003 sont affectées par des problèmes qui peuvent provoquer l’échec de la migration. Vous pouvez également exécuter ces vérifications (ainsi que d’autres qui ne sont pas disponibles par le biais de l’option verify) manuellement. La première moitié de cet article décrit les vérifications automatiques que vous pouvez effectuer. Le reste de l’article explique comment exécuter des vérifications manuelles sur vos données Project Server 2003 afin de les préparer pour la migration.
La version de Project doit être au moins Project Server 2003 SP2a
Microsoft prend en charge la migration depuis Project Server 2003 SP2a. Si ce Service Pack n’est pas installé, vous devez l’appliquer. Pour plus d’informations sur le Service Pack, voir l’article de la Base de connaissances intitulé Description du Service Pack 2a Project Server 2003 (https://support.microsoft.com/kb/887621?amp;clcid=0x40c).
Comment vérifier l’existence du problème
Exécutez la requête SQL suivante dans la base de données « Project Server 2003 Web tables ». Cette requête vous indique la version de Project Server, notamment le numéro du Service Pack.
select replace(str(WADMIN_VERSION_MAJOR)+'.'+str(WADMIN_VERSION_MINOR),' ','') as 'Project Server Version' from dbo.MSP_WEB_ADMIN
Résultat de la réussite du test | Résultat de l’échec du test |
---|---|
11.2 |
11.1 |
Comment résoudre le problème
Appliquez Project Server 2003 SP2a à votre installation Project Server 2003. Pour plus d’informations sur l’application de Project Server 2003 SP2a, voir Préparer la migration vers Project Server 2007.
Le modèle global d’entreprise ne doit pas être modifié de manière externe
L’indicateur Données modifiées hors programme est défini sur True lorsque le modèle global d’entreprise est modifié en dehors de Project (par exemple, par une application tierce). Project Professional vérifie cet indicateur : s’il est défini sur True, Project Professional recalcule toutes les données dans le modèle global d’entreprise afin de garantir la cohérence. Définissez cet indicateur sur False pour activer la migration.
Comment vérifier l’existence du problème
Exécutez la requête SQL suivante dans la base de données « Project Server 2003 Project tables ». La requête suivante vérifie si la base de données Project Server 2003 comprend des projets modifiés de manière externe. Si des lignes sont retournées, le modèle global d’entreprise ne peut pas être migré dans son état actuel.
select PROJ_NAME from dbo.MSP_PROJECTS where (PROJ_EXT_EDITED = 1 or RESERVED_BINARY_DATA is null) and PROJ_TYPE = 2
Résultat de la réussite du test | Résultat de l’échec du test |
---|---|
Aucune ligne n’est retournée. |
Une ou plusieurs lignes sont retournées. |
Comment résoudre le problème
Ouvrez l’entreprise globale dans Project Professional et enregistrez-la.
Déterminer si le modèle global d’entreprise a été extrait
Le modèle global d’entreprise ne doit pas être extrait lorsque vous effectuez la migration de vos projets.
Comment vérifier l’existence du problème
La requête SQL suivante vérifie si l’entreprise globale est extraite. Exécutez la requête SQL suivante dans la base de données « Project Server 2003 Project tables ».
select count(*) from dbo.MSP_PROJECTS where PROJ_CHECKEDOUT = 1 and PROJ_TYPE = 2
Résultat de la réussite du test | Résultat de l’échec du test |
---|---|
0 |
Une valeur supérieure à 0 est retournée. |
Comment résoudre le problème
Assurez-vous que l’entreprise globale est archivée.
Dans Project Server 2003 Project Web Access, cliquez sur Admin.
Cliquez sur Gérer les fonctionnalités d’entreprise.
Cliquez sur Archiver les projets d’entreprise et déterminez qui a extrait l’entreprise globale. Coordonnez son archivage ou exécutez une opération d’archivage forcé à partir de Project Web Access.
Déterminer si le modèle global d’entreprise a été verrouillé
Un projet est verrouillé si l’ordinateur s’arrête de façon anormale ou si Project Professional se ferme de façon anormale. Si le modèle global d’entreprise est verrouillé, l’outil de migration ne peut pas s’exécuter.
Comment vérifier l’existence du problème
La requête SQL suivante vérifie si le fichier du modèle global d’entreprise est verrouillé. Exécutez la requête SQL suivante dans la base de données « Project Server 2003 Project tables ».
select cast(isnull(PROJ_LOCKED, '0') as int) from dbo.MSP_PROJECTS where PROJ_TYPE = 2
Résultat de la réussite du test | Résultat de l’échec du test |
---|---|
0 |
1 |
Comment résoudre le problème
La requête SQL suivante déverrouille le modèle global d’entreprise. Exécutez-la dans la base de données « Project Server 2003 Project tables ».
Update MSP_PROJECTS set PROJ_LOCKED = 1 where PROJ_TYPE = 2
Déterminer si la langue par défaut associée à la base de données Web tables et celle associée à la base de données Project tables correspondent
La langue par défaut associée à la base de données Project Server 2003 Web Tables et celle associée à la base de données Project Server 2003 project tables doivent correspondre avant la migration.
Comment vérifier l’existence du problème
Cette requête détermine la langue par défaut associée à chaque base de données. Si les résultats de la requête ne correspondent pas, la migration échoue. Exécutez la requête SQL suivante dans les bases de données « Project Server 2003 Project tables » et « Project Server 2003 Web Tables ».
select WADMIN_DEFAULT_LANGUAGE from dbo.MSP_WEB_ADMIN.
Résultat de la réussite du test | Résultat de l’échec du test |
---|---|
Les résultats correspondent lorsque la requête est exécutée sur les deux bases de données. |
Les résultats ne correspondent pas lorsque la requête est exécutée sur les deux bases de données. |
Comment résoudre le problème
Contactez votre administrateur pour obtenir une cohérence d’état entre les deux bases de données.
Déterminer si une ressource possède une virgule dans son nom
Office Project Server 2007 ne prend pas en charge les ressources d’entreprise (quelle que soit la langue) dont le nom comprend une virgule (,). Le caractère doit être remplacé par un caractère valide.
Comment vérifier l’existence du problème
Cette requête vérifie si la liste des ressources d’entreprise comprend des noms de ressource comportant une virgule. Exécutez-la dans la base de données « Project Server 2003 Project tables ».
select RES_NAME from MSP_RESOURCES where RES_NAME is not null and charindex(',', RES_NAME) > 0
Résultat de la réussite du test | Résultat de l’échec du test |
---|---|
Aucune ligne n’est retournée. |
Une ou plusieurs lignes sont retournées. |
Comment résoudre le problème
Exécutez la requête SQL suivante dans les bases de données « Project Server 2003 Project tables » et « Project Server 2003 Web tables ». Elle remplace la virgule par un trait de soulignement. Si vous souhaitez utiliser un autre caractère valide, vous pouvez modifier la requête.
-- run this against the project tables db
declare @replacement_char char
declare @char_to_replace char
set @replacement_char = '_'
set @char_to_replace = ','
update dbo.MSP_RESOURCES set RES_NAME = replace(RES_NAME, @char_to_replace, @replacement_char)
where RES_NAME is not null and charindex(@char_to_replace, RES_NAME) > 0
-- run this against the web tables db
declare @replacement_char char
declare @char_to_replace char
set @replacement_char = '_'
set @char_to_replace = ','
update dbo.MSP_WEB_RESOURCES set RES_NAME = replace(RES_NAME, @char_to_replace, @replacement_char)
where RES_NAME is not null and charindex(@char_to_replace, RES_NAME) > 0
Déterminer si des champs personnalisés de ressource d’entreprise obligatoires sont dépourvus de valeurs
Toute ressource d’entreprise qui ne possède pas de valeur pour un champ personnalisé d’entreprise obligatoire (comme la structure RBS) ne peut pas être correctement migrée. Cela se traduit par la publication d’une erreur dans le journal de migration au cours de la migration. Nous vous recommandons de vérifier si cette situation concerne votre environnement avant d’effectuer la migration. Si vos ressources d’entreprise sont très anciennes (créées avant que le champ personnalisé n’ait été défini sur Obligatoire) ou inactives, il est possible qu’elles ne possèdent pas de valeurs pour le champ personnalisé obligatoire.
Une façon de résoudre cette situation consiste à faire en sorte que tous les champs personnalisés de ressource Office Project Server 2007 soient définis sur Non obligatoire. Vous pouvez ensuite les modifier manuellement dans Office Project Server 2007.
Deux méthodes de vérification vous permettent de déterminer les champs personnalisés à l’origine du problème affectant la migration.
La méthode de vérification 1 consiste à exécuter une requête SQL sur la base de données « Project Server 2003 Project tables ».
La méthode de vérification 2 consiste à utiliser l’interface utilisateur Project Professional 2003.
Comment déterminer l’existence du problème à l’aide de la méthode de vérification 1
La requête SQL suivante retourne les ressources d’entreprise qui possèdent des champs personnalisés d’entreprise obligatoires dépourvus de valeur. Exécutez-la dans la base de données « Project Server 2003 Project tables ».
declare @eglobal_proj_id int
set @eglobal_proj_id = (select PROJ_ID from dbo.MSP_PROJECTS where PROJ_TYPE = 2)
select
r1.RES_NAME as 'Resource Name',
ast1.AS_VALUE as 'Custom Field Name'
from
dbo.MSP_RESOURCES r1
inner join dbo.MSP_CODE_FIELDS cf1 on (r1.RES_UID = cf1.CODE_REF_UID)
inner join dbo.MSP_FIELD_ATTRIBUTES fa1 on (cf1.CODE_FIELD_ID = fa1.ATTRIB_FIELD_ID)
inner join dbo.MSP_ATTRIBUTE_STRINGS ast1 on (fa1.AS_ID = ast1.AS_ID)
inner join dbo.MSP_OUTLINE_CODES oc3 on (cf1.CODE_UID = oc3.CODE_UID and oc3.PROJ_ID = @eglobal_proj_id)
left join dbo.MSP_OUTLINE_CODES oc1 on (oc1.CODE_UID = cf1.CODE_UID and cf1.CODE_FIELD_ID = oc1.OC_FIELD_ID and oc1.PROJ_ID = @eglobal_proj_id)
left join (
select
oc.CODE_UID,
fa.ATTRIB_FIELD_ID as OC_FIELD_ID,
@eglobal_proj_id as PROJ_ID
from
dbo.MSP_OUTLINE_CODES oc
inner join dbo.MSP_FIELD_ATTRIBUTES fa on (fa.PROJ_ID = oc.PROJ_ID and fa.ATTRIB_VALUE = oc.OC_FIELD_ID and fa.ATTRIB_ID = 212)
where
oc.PROJ_ID = @eglobal_proj_id
and fa.PROJ_ID = @eglobal_proj_id
and fa.ATTRIB_ID = 212
) as oc2 on (oc2.CODE_UID = cf1.CODE_UID and cf1.CODE_FIELD_ID = oc2.OC_FIELD_ID and oc2.PROJ_ID = @eglobal_proj_id)
where
r1.PROJ_ID = 1
and cf1.proj_id = 1
and fa1.PROJ_ID = @eglobal_proj_id
and fa1.ATTRIB_ID = 206
and ast1.PROJ_ID = @eglobal_proj_id
and oc3.PROJ_ID = @eglobal_proj_id
and oc1.CODE_UID is null
and oc2.CODE_UID is null
order by
r1.RES_NAME,
ast1.AS_VALUE
Résultat de la réussite du test | Résultat de l’échec du test |
---|---|
Aucune ligne n’est retournée. |
Une ou plusieurs lignes sont retournées. |
Comment résoudre le problème
Dans Project Server 2003, ouvrez la liste des ressources d’entreprise et définissez des valeurs pour les champs personnalisés obligatoires ou définissez les champs personnalisés affectés sur « Non obligatoire ».
Comment déterminer l’existence du problème à l’aide de la méthode de vérification 2
Cette méthode nécessite l’utilisation de Project Professional 2003 pour ouvrir la liste des ressources d’entreprise. En tentant d’enregistrer la liste des ressources d’entreprise, vous allez vérifier si toutes les ressources d’entreprise sélectionnées possèdent des valeurs pour leurs champs personnalisés obligatoires.
Ouvrez Project Professional 2003 en étant connecté au serveur Project Server 2003.
Dans le menu Outils, cliquez sur Options d’entreprise, puis sur Ouvrir la liste des ressources d’entreprise.
Dans la boîte de dialogue Ouvrir les ressources d’entreprise qui s’affiche, activez la case à cocher Inclure des ressources inactives. Vérifiez que l’option Lecture/écriture pour extraire est sélectionnée. Cliquez sur le bouton Appliquer le filtre.
Cliquez sur le bouton Sélectionner/désélectionner tout pour vous assurer que toutes les ressources sont sélectionnées.
Cliquez sur le bouton Ouvrir/Ajouter. Une fois les ressources ouvertes en vue de leur modification, cliquez sur Enregistrer. Project Professional vérifie ensuite si chaque ressource d’entreprise (active ou inactive) possède des valeurs pour les champs personnalisés obligatoires.
Résultat de la réussite du test Résultat de l’échec du test Une fois l’enregistrement effectué, aucun message d’erreur ne s’affiche.
Un message d’erreur apparaît, répertoriant les erreurs liées aux ressources qui n’ont pas de valeurs pour les champs personnalisés d’entreprise obligatoires.
Comment résoudre le problème
Dans Project Server 2003, définissez des valeurs pour les champs personnalisés obligatoires ou définissez les champs personnalisés affectés sur Non obligatoire.
Déterminer si un champ personnalisé de ressource a une valeur qui ne se trouve pas dans la définition de la table de choix
Les valeurs d’un champ personnalisé de ressource doivent toutes se trouver dans la définition de la table de choix.
Comment vérifier l’existence du problème
Cette requête SQL recherche les champs personnalisés de ressource non valides en vérifiant si la valeur des champs personnalisés se trouve dans la table de choix correspondante.
Exécutez la requête SQL suivante dans les bases de données « Project Server 2003 Project tables » et « Project Server 2003 Web Tables ».
declare @eglobal_proj_id int
set @eglobal_proj_id = (select PROJ_ID from dbo.MSP_PROJECTS where PROJ_TYPE = 2)
select
r1.RES_NAME,
ast1.AS_VALUE
from
dbo.MSP_RESOURCES r1
inner join dbo.MSP_CODE_FIELDS cf1 on (r1.RES_UID = cf1.CODE_REF_UID)
inner join dbo.MSP_FIELD_ATTRIBUTES fa1 on (cf1.CODE_FIELD_ID = fa1.ATTRIB_FIELD_ID)
inner join dbo.MSP_ATTRIBUTE_STRINGS ast1 on (fa1.AS_ID = ast1.AS_ID)
left join dbo.MSP_OUTLINE_CODES oc1 on (oc1.CODE_UID = cf1.CODE_UID and cf1.CODE_FIELD_ID = oc1.OC_FIELD_ID and oc1.PROJ_ID = @eglobal_proj_id)
left join (
select
oc.CODE_UID,
fa.ATTRIB_FIELD_ID as OC_FIELD_ID,
@eglobal_proj_id as PROJ_ID
from
dbo.MSP_OUTLINE_CODES oc
inner join dbo.MSP_FIELD_ATTRIBUTES fa on (fa.PROJ_ID = oc.PROJ_ID and fa.ATTRIB_VALUE = oc.OC_FIELD_ID and fa.ATTRIB_ID = 212)
where
oc.PROJ_ID = @eglobal_proj_id
and fa.PROJ_ID = @eglobal_proj_id
and fa.ATTRIB_ID = 212
) as oc2 on (oc2.CODE_UID = cf1.CODE_UID and cf1.CODE_FIELD_ID = oc2.OC_FIELD_ID and oc2.PROJ_ID = @eglobal_proj_id)
where
r1.PROJ_ID = 1
and cf1.proj_id = 1
and cf1.code_uid is not null
and fa1.PROJ_ID = @eglobal_proj_id
and fa1.ATTRIB_ID = 206
and ast1.PROJ_ID = @eglobal_proj_id
and oc1.CODE_UID is null
and oc2.CODE_UID is null
union
select
r1.RES_NAME,
ast1.AS_VALUE
from
dbo.MSP_RESOURCES r1
inner join dbo.MSP_MV_FIELDS cf1 on (r1.RES_UID = cf1.CODE_REF_UID)
inner join dbo.MSP_FIELD_ATTRIBUTES fa1 on (cf1.CODE_FIELD_ID = fa1.ATTRIB_FIELD_ID)
inner join dbo.MSP_ATTRIBUTE_STRINGS ast1 on (fa1.AS_ID = ast1.AS_ID)
left join dbo.MSP_OUTLINE_CODES oc1 on (oc1.CODE_UID = cf1.CODE_UID and (cf1.CODE_FIELD_ID - 76) = oc1.OC_FIELD_ID and oc1.PROJ_ID = @eglobal_proj_id)
left join (
select
oc.CODE_UID,
fa.ATTRIB_FIELD_ID as OC_FIELD_ID,
@eglobal_proj_id as PROJ_ID
from
dbo.MSP_OUTLINE_CODES oc
inner join dbo.MSP_FIELD_ATTRIBUTES fa on (fa.PROJ_ID = oc.PROJ_ID and fa.ATTRIB_VALUE = oc.OC_FIELD_ID and fa.ATTRIB_ID = 212)
where
oc.PROJ_ID = @eglobal_proj_id
and fa.PROJ_ID = @eglobal_proj_id
and fa.ATTRIB_ID = 212
) as oc2 on (oc2.CODE_UID = cf1.CODE_UID and (cf1.CODE_FIELD_ID - 76) = oc2.OC_FIELD_ID and oc2.PROJ_ID = @eglobal_proj_id)
where
r1.PROJ_ID = 1
and cf1.proj_id = 1
and cf1.code_uid is not null
and fa1.PROJ_ID = @eglobal_proj_id
and fa1.ATTRIB_ID = 206
and ast1.PROJ_ID = @eglobal_proj_id
and oc1.CODE_UID is null
and oc2.CODE_UID is null
order by
r1.RES_NAME,
ast1.AS_VALUE
Résultat de la réussite du test | Résultat de l’échec du test |
---|---|
Aucune ligne n’est retournée. |
Une ou plusieurs lignes sont retournées. |
Comment résoudre le problème
La requête SQL suivante définit les valeurs des champs personnalisés de ressource non valides sur NULL. Exécutez-la dans les bases de données « Project Server 2003 Project tables ».
declare @eglobal_proj_id int
set @eglobal_proj_id = (select PROJ_ID from dbo.MSP_PROJECTS where PROJ_TYPE = 2)
update dbo.MSP_MV_FIELDS
set
CODE_UID = NULL
from dbo.MSP_MV_FIELDS cf1
left join dbo.MSP_OUTLINE_CODES oc1 on (oc1.CODE_UID = cf1.CODE_UID and (cf1.CODE_FIELD_ID - 76) = oc1.OC_FIELD_ID and oc1.PROJ_ID = @eglobal_proj_id)
left join (
select
oc.CODE_UID,
fa.ATTRIB_FIELD_ID as OC_FIELD_ID,
@eglobal_proj_id as PROJ_ID
from
dbo.MSP_OUTLINE_CODES oc
inner join dbo.MSP_FIELD_ATTRIBUTES fa on (fa.PROJ_ID = oc.PROJ_ID and fa.ATTRIB_VALUE = oc.OC_FIELD_ID and fa.ATTRIB_ID = 212)
where
oc.PROJ_ID = @eglobal_proj_id
and fa.PROJ_ID = @eglobal_proj_id
and fa.ATTRIB_ID = 212
) as oc2 on (oc2.CODE_UID = cf1.CODE_UID and (cf1.CODE_FIELD_ID - 76) = oc2.OC_FIELD_ID and oc2.PROJ_ID = @eglobal_proj_id)
where
cf1.proj_id = 1
and oc1.CODE_UID is null
and oc2.CODE_UID is null
update dbo.MSP_CODE_FIELDS
set
CODE_UID = NULL
from dbo.MSP_CODE_FIELDS cf1
left join dbo.MSP_OUTLINE_CODES oc1 on (oc1.CODE_UID = cf1.CODE_UID and cf1.CODE_FIELD_ID = oc1.OC_FIELD_ID and oc1.PROJ_ID = @eglobal_proj_id)
left join (
select
oc.CODE_UID,
fa.ATTRIB_FIELD_ID as OC_FIELD_ID,
@eglobal_proj_id as PROJ_ID
from
dbo.MSP_OUTLINE_CODES oc
inner join dbo.MSP_FIELD_ATTRIBUTES fa on (fa.PROJ_ID = oc.PROJ_ID and fa.ATTRIB_VALUE = oc.OC_FIELD_ID and fa.ATTRIB_ID = 212)
where
oc.PROJ_ID = @eglobal_proj_id
and fa.PROJ_ID = @eglobal_proj_id
and fa.ATTRIB_ID = 212
) as oc2 on (oc2.CODE_UID = cf1.CODE_UID and cf1.CODE_FIELD_ID = oc2.OC_FIELD_ID and oc2.PROJ_ID = @eglobal_proj_id)
where
cf1.proj_id = 1
and oc1.CODE_UID is null
and oc2.CODE_UID is null
update dbo.MSP_PROJECTS set PROJ_EXT_EDITED = 1, PROJ_EXT_EDITED_CODE = 1 where PROJ_ID = 1
Déterminer si les ressources d’entreprise sont modifiées de manière externe
Pour que les ressources d’entreprise puissent être migrées depuis Project Server 2003 vers Project Server 2007, elles ne doivent pas être modifiées de manière externe.
Comment vérifier l’existence du problème
La requête suivante vérifie si la liste des ressources d’entreprise comprend des ressources qui ont été modifiées de manière externe. Si le test échoue, la liste des ressources d’entreprise ne peut pas être migrée dans son état actuel. Exécutez la requête SQL suivante dans la base de données « Project Server 2003 Project tables ».
select count(*) from dbo.MSP_RESOURCES where PROJ_ID = 1 and cast(EXT_EDIT_REF_DATA as varchar(1)) = '1'
Résultat de la réussite du test | Résultat de l’échec du test |
---|---|
0 |
Une valeur supérieure à 0 est retournée. |
Comment résoudre le problème
Pour résoudre le problème, vous devez tout d’abord définir toutes les ressources d’entreprise comme étant modifiées de manière externe. Vous pouvez effectuer cette opération par le biais d’une requête SQL. Ensuite, vous pouvez apporter une modification à chaque ressource d’entreprise afin que toutes les actualisations pertinentes soient effectuées par Project Professional lorsque la liste des ressources d’entreprise est enregistrée. Cette action supprime l’indicateur Données modifiées hors programme pour chaque ressource d’entreprise. Si une ressource d’entreprise n’est pas modifiée, aucun nouveau calcul n’est effectué par Project Professional pour celle-ci. Cette ressource d’entreprise continue d’être signalée comme étant modifiée de manière externe et la liste des ressources d’entreprise ne sera pas migrée.
Remarque : |
---|
Une fois la liste des ressources d’entreprise migrée, les modifications apportées à chaque ressource d’entreprise peuvent être supprimées. |
Vous pouvez utiliser la solution de contournement générale suivante pour supprimer tous les indicateurs Données modifiées hors programme de vos ressources d’entreprise.
Définissez toutes les ressources d’entreprise comme étant modifiées de manière externe. Pour ce faire, exécutez la requête SQL suivante dans les bases de données « Project Server 2003 Project tables ».
Update dbo.MSP_RESOURCES set EXT_EDIT_REF_DATA = 1 where PROJ_ID = 1
Update dbo.MSP_PROJECTS set PROJ_EXT_EDITED = 1, PROJ_EXT_EDITED_DATE = 1, PROJ_EXT_EDITED_DUR = 1, PROJ_EXT_EDITED_NUM = 1, PROJ_EXT_EDITED_FLAG = 1, PROJ_EXT_EDITED_CODE = 1, PROJ_EXT_EDITED_TEXT = 1 where PROJ_ID = 1
Ajoutez provisoirement un champ personnalisé de ressources sans importance à chaque ressource d’entreprise pour obliger Project Professional 2003 à effectuer les recalculs. Les recalculs forcés marqueront chaque ressource d’entreprise comme n’étant plus modifiée de manière externe. Par exemple, dans Project Professional 2003, vous pouvez créer un champ personnalisé de ressource « test » qui sera ajouté à chaque ressource d’entreprise. Vous pouvez utiliser n’importe quel type de champ personnalisé. Par exemple, vous pouvez recourir à un champ personnalisé Ressource Durée, champ rarement utilisé.
Remarque : Si vous utilisez un champ personnalisé Entreprise Ressource Durée, ne créez pas de liste de valeurs pour celui-ci. Les champs personnalisés Entreprise Ressource Durée ne seront pas migrés. Lorsque vous créez ce champ personnalisé temporaire, utilisez une valeur numérique. Vous pouvez nommer le nouveau champ personnalisé « CP ressource test ». Après avoir créé le champ personnalisé « CP ressource test », ouvrez la liste des ressources d’entreprise et ajoutez la colonne « CP ressource test ». Définissez une valeur valide pour ce champ personnalisé, pour toutes les ressources. Enregistrez la liste des ressources d’entreprise et effectuez la migration. Après la migration, supprimez le champ personnalisé « CP ressource test » dans Microsoft Office Project Professional 2007.
Déterminer s’il existe des champs personnalisés Entreprise Ressource Durée comportant des listes de valeurs
Les champs personnalisés Entreprise Ressource Durée auxquels sont associées des listes de valeurs entraînent l’échec de la migration.
Comment vérifier l’existence du problème
La requête SQL suivante recherche les champs personnalisés Entreprise Ressource Durée auxquels sont associées des listes de valeurs. Exécutez-la dans la base de données « Project Server 2003 Project tables ».
declare @proj_id int
set @proj_id = (select proj_id from msp_projects where proj_type = 2)
select ats.as_value as CustomFieldName from msp_attribute_strings ats
inner join msp_field_attributes fa on (fa.proj_id = ats.proj_id and fa.as_id = ats.as_id)
where fa.attrib_id = 206 and fa.proj_id = @proj_id and fa.attrib_field_id >= 205521382 and fa.attrib_field_id <= 205521391
and exists (select * from msp_field_attributes fa2 where fa2.proj_id = fa.proj_id and fa2.attrib_field_id = fa.attrib_field_id and fa2.attrib_id = 210)
Résultat de la réussite du test | Résultat de l’échec du test |
---|---|
Aucune ligne n’est retournée. |
Une ou plusieurs lignes sont retournées. Des listes de valeurs sont associées à ces champs personnalisés Entreprise Ressource Durée. La liste de valeurs doit être supprimée manuellement pour chacun d’eux. |
Comment résoudre le problème
Pour résoudre le problème, vous devez supprimer manuellement toutes les listes des valeurs de chaque champ personnalisé Entreprise Ressource Durée trouvé par la requête SQL. Pour ce faire, vous pouvez procéder comme suit.
Ouvrez Project Professional 2003 en étant connecté au serveur Project Server 2003.
Dans le menu Outils, pointez sur Options d'entreprise, puis cliquez sur Ouvrir l'entreprise globale.
Dans la page Microsoft Project - Entreprise globale extraite, dans le menu Outils, pointez sur Personnaliser, puis cliquez sur Champs d’entreprise.
Dans la page Personnaliser les champs d’entreprise, sous l’onglet Champs personnalisés, dans la section Champs, cliquez sur Ressource.
Dans la liste déroulante Type, cliquez sur Durée. Tous les champs personnalisés Entreprise Durée apparaissent dans la liste Champ.
Dans la liste Champ, sélectionnez le premier champ personnalisé Entreprise Ressource Durée qui correspond à ceux retournés par la requête SQL que vous avez exécutée précédemment. Dans la section Attributs personnalisés, cliquez sur le bouton Liste de valeurs. Dans la liste de valeurs du champ personnalisé Entreprise Durée spécifique, supprimez toutes les valeurs dans la colonne Valeur, puis cliquez sur OK. Dans la boîte de dialogue Microsoft Office Project qui s’affiche, cliquez sur OK.
Dans la page Personnaliser les champs d’entreprise, dans la section Attributs personnalisés, vérifiez que l’option Liste de valeurs n’est pas sélectionnée pour le champ personnalisé Entreprise Ressource Durée sélectionné dans la liste Champ. Si l’option Liste de valeurs est sélectionnée, sélectionnez Aucun.
Dans la liste Champ, sélectionnez tous les autres champs personnalisés Entreprise Ressource Durée qui correspondent à la requête SQL et répétez les étapes 6 et 7.
Cliquez sur OK.
Déterminer si les champs personnalisés Entreprise Ressource Durée contiennent des valeurs valides
Office Project Server 2007 n’autorise pas les valeurs de durée négatives ou les valeurs de durée supérieures à 34689600. Si vous essayez de migrer des champs personnalisés Entreprise Ressource Durée Project Server 2003 qui contiennent l’un ou l’autre de ces types de valeurs, la migration échoue.
Comment vérifier l’existence du problème
Pour vérifier l’existence du problème, exécutez la requête SQL suivante sur la base de données « Project Server 2003 Project tables ». Cette requête retourne les champs personnalisés Entreprise Ressource Durée comportant des valeurs non valides.
select r.res_name, mas.as_value from msp_resources r
inner join msp_duration_fields df on (df.dur_ref_uid = r.res_euid and df.proj_id = r.proj_id)
inner join msp_projects p on (p.proj_type = 2)
inner join msp_field_attributes fa on (fa.proj_id = p.proj_id and fa.attrib_field_id = df.dur_field_id)
inner join msp_attribute_strings mas on (mas.proj_id = p.proj_id and fa.as_id = mas.as_id)
where (dur_value < 0 or dur_value > 34689600) and df.proj_id = 1 and p.proj_type = 2 and fa.attrib_id = 206
Résultat de la réussite du test | Résultat de l’échec du test |
---|---|
Aucune ligne n’est retournée. |
Une ou plusieurs lignes sont retournées. |
Comment résoudre le problème
Pour résoudre le problème, vous devez modifier manuellement la valeur de chaque champ personnalisé Entreprise Ressource Durée identifié. Vous devez faire en sorte que les valeurs des champs soient valides (entre 0 et 34689600).
Si le champ identifié par la requête est un champ personnalisé simple (pas un champ de formule), vous pouvez modifier la valeur de champ de manière à ce qu’elle appartienne à la plage autorisée. Si le champ identifié par la requête est un champ de formule, vous devrez modifier la formule de manière à ce que les résultats appartiennent à la plage valide.
Déterminer si les noms des champs personnalisés d’entreprise ne contiennent pas des espaces de début ou de fin
Vérifiez que les noms des champs personnalisés Office Project Server 2007 ne contiennent pas des espaces de début ou de fin (par exemple, __Champ personnalisé_ (où le caractère de soulignement représente un espace). Si vous essayez de migrer des champs personnalisés comportant des espaces de début ou de fin, la migration échoue avec une erreur.
Déterminer si le compte d’administrateur de migration existe dans Project Server 2003
Si le compte d’administrateur de migration existe dans Project Server 2003 (sous la forme d’un nom ou d’un compte Windows), ces autorisations utilisateur, mappages de catégories et propriétés utilisateur ne seront pas migrés vers Office Project Server 2007. Pour l’essentiel, l’utilisateur Office Project Server 2007 l’emporte. Si le compte d’administrateur de migration est utilisé dans les projets, ces ressources sont remplacées par le compte d’administrateur de migration.
Remplacement des virgules dans les noms de ressource d'entreprise
Si les bases de données Project Server 2003 ont des noms de ressource d'entreprise contenant une virgule, la migration de la ressource échouera. Cela peut présenter un problème chez les clients de certains paramètres régionaux où l'utilisation de la virgule dans les noms des ressource est une pratique courante.
Comment résoudre le problème
Utilisez les requêtes SQL suivantes pour remplacer chaque virgule par un caractère de soulignement neutre.
Exécutez cette requête sur la base de données des tables Project :
declare @replacement_char char
declare @char_to_replace char
set @replacement_char = '_'
set @char_to_replace = ','
update dbo.MSP_RESOURCES set RES_NAME = replace(RES_NAME, @char_to_replace, @replacement_char)
where RES_NAME is not null and charindex(@char_to_replace, RES_NAME) > 0
Exécutez cette requête sur la base de données des tables Web :
declare @replacement_char char
declare @char_to_replace char
set @replacement_char = '_'
set @char_to_replace = ','
update dbo.MSP_WEB_RESOURCES set RES_NAME = replace(RES_NAME, @char_to_replace, @replacement_char)
where RES_NAME is not null and charindex(@char_to_replace, RES_NAME) > 0