Blogs
Bonjour,
Je voulais partager avec vous un problème que nous avons rencontré suite à la migration de Project Server 2010 vers Project Server 2013
Le client a effectué la migration d’une plateforme EPM 2010 vers un environnement Project Server 2013 On-Premise.
Depuis, lorsque chaque utilisateur essaye de se connecter pour la première fois au Project Center ou au Resource Center, l’erreur suivante apparaît:
Si l’utilisateur clique sur OK, un message d’erreur rouge est affiché dans la page :
L’erreur se produit car les vues affectées par défaut au Project Center et au Resource Center ont été supprimées dans Project Server 2010.
En fait, l’information concernant les préférences des utilisateurs en terme de vue à afficher par exemple, est stockée dans la table [pub].MSP_WEB_USERPROPERTIES. Cette table contient en particulier, par utilisateur, la vue sélectionné sur chacune des pages affichées :
Ainsi, lorsqu’un utilisateurs revient sur une page qu’il a déjà affichée, il la retrouve telle qu’elle était.
Cette table n’est pas être prise en compte lors du processus de migration vers Project Server 2013. Cela signifie que cette table est vide lorsque la migration est terminée.
Dans ce cas, lors du premier affichage du Project Center ou du Resource Center (ou de toute autre page ayant des vues), Project Server va automatiquement remplir cette table en y appliquant les paramètres par défaut pour chaque utilisateur :
DECLARE @P2 DBO.USERPROPERTIES
INSERT INTO @P2 VALUES(N'JSGridWidthResourceCenterJSGridControl','827',NULL,N'resourcecenterjsgridcontrol')
INSERT INTO @P2 VALUES(N'SelectedResourcesResourceCenterJSGridControl','[]',NULL,N'resourcecenterjsgridcontrol')
INSERT INTO @P2 VALUES(N'SelectedResourceIdsResourceCenterJSGridControl','[]',NULL,N'resourcecenterjsgridcontrol')
INSERT INTO @P2 VALUES(N'ViewUidResourceCenterJSGridControl','"000010fc-7b06-45a9-9bd2-1cbfc2f64ce4"',NULL,N'resourcecenterjsgridcontrol')
INSERT INTO @P2 VALUES(N'ViewUidProjectCenterJSGridControl','"63d3499e-df27-401c-af58-ebb9607beae8"',NULL,N'projectcenterjsgridcontrol')
EXEC [PUB].MSP_WEB_SP_QRY_SETUSERPROPERTIES @RESID= '<RES_UID>',@PROPERTIES=@P2
Or, les vues par défaut ("000010fc-7b06-45a9-9bd2-1cbfc2f64ce4" et "63d3499e-df27-401c-af58-ebb9607beae8") ayant été supprimées, lors de l’affichage de la page, une erreur se produit.
Une demande de correctif est en cours. Il n’y a pas de statut pour le moment, mais si elle est acceptée, le correctif devrait être disponible dans le Cumulative Update d’avril 2014.
En attendant, vous pouvez résoudre le problème grâce aux scripts suivants :
IMPORTANT : Ces scripts ajoutent des données directement dans la base de données. Il est donc très important de ne pas les utiliser en Production sans les avoir tester au préalable sur une plateforme de test.
/****** Object: Script to populate User Properties table. Created by Marc Biarnes 07/11/2013 ******/
DECLARE @RESUID UID; DECLARE @P2 DBO.USERPROPERTIES INSERT INTO @P2 VALUES(N'JSGridWidthResourceCenterJSGridControl','827',NULL,N'resourcecenterjsgridcontrol') INSERT INTO @P2 VALUES(N'SelectedResourcesResourceCenterJSGridControl','[]',NULL,N'resourcecenterjsgridcontrol') INSERT INTO @P2 VALUES(N'SelectedResourceIdsResourceCenterJSGridControl','[]',NULL,N'resourcecenterjsgridcontrol') INSERT INTO @P2 VALUES(N'ViewUidResourceCenterJSGridControl','<View_UID of the custom view in [pub].MSP_WEB_VIEW_REPORTS>',NULL,N'resourcecenterjsgridcontrol') INSERT INTO @P2 VALUES(N'ViewUidProjectCenterJSGridControl','<View_UID of the custom view in [pub].MSP_WEB_VIEW_REPORTS>',NULL,N'projectcenterjsgridcontrol') DECLARE FIXRESVIEW CURSOR FOR SELECT RES_UID FROM PUB.MSP_RESOURCES; -- OPEN THE CURSOR. OPEN FIXRESVIEW; FETCH NEXT FROM FIXRESVIEW INTO @RESUID -- LOOP THROUGH THE RESOURCES. WHILE @@FETCH_STATUS = 0 BEGIN; EXEC [PUB].MSP_WEB_SP_QRY_SETUSERPROPERTIES @RESID=@RESUID,@PROPERTIES=@P2 FETCH NEXT FROM FIXRESVIEW INTO @RESUID END; -- CLOSE AND DEALLOCATE THE CURSOR. CLOSE FIXRESVIEW; DEALLOCATE FIXRESVIEW;
/****** Object: StoredProcedure [pub].[XMGS_SetDefaultViewByResUID] Script created by Marc Biarnes 07/11/2013 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [pub].[XMGS_SetDefaultViewByResUID] ( @RESUID UniqueIdentifier ) AS BEGIN DECLARE @P2 DBO.USERPROPERTIES INSERT INTO @P2 VALUES(N'JSGridWidthResourceCenterJSGridControl','827',NULL,N'resourcecenterjsgridcontrol') INSERT INTO @P2 VALUES(N'SelectedResourcesResourceCenterJSGridControl','[]',NULL,N'resourcecenterjsgridcontrol') INSERT INTO @P2 VALUES(N'SelectedResourceIdsResourceCenterJSGridControl','[]',NULL,N'resourcecenterjsgridcontrol') INSERT INTO @P2 VALUES(N'ViewUidResourceCenterJSGridControl','"000010FC-7B06-45A9-9BD2-1CBFC2F64CE4"',NULL,N'resourcecenterjsgridcontrol') INSERT INTO @P2 VALUES(N'ViewUidProjectCenterJSGridControl','<View_UID of the custom view in [pub].MSP_WEB_VIEW_REPORTS>',NULL,N'projectcenterjsgridcontrol') INSERT INTO @P2 VALUES(N'ViewUidProjectDrillDownJSGridControl','<View_UID of the custom view in [pub].MSP_WEB_VIEW_REPORTS>',NULL,'Nprojectdrilldownjsgridcontrol') EXEC [PUB].MSP_WEB_SP_QRY_SETUSERPROPERTIES @RESID= @RESUID,@PROPERTIES=@P2 END;
Une fois la procédure stockée créée, il suffit d’exécuter la commande suivante pour ajouter les paramètres de vues personnalisées à l’utilisateur :
EXEC [PUB].XMGS_SetDefaultViewByResUID @RESUID= ‘<RES_UID>’
Une demande de correctif est en cours. je vous tiendrais au courant.
Bonne journée,
Marc Biarnès
Sauf erreur ou lecture trop rapide de ma part, il y a manifestement des coquilles dans les scripts : certaines lignes comportant des instructions INSERT ne sont pas complètes (parenthèse ouvrante sans parenthèse fermante, nom de champ tronqué...)
Je ne pense pas qu'il y ait de problème de parenthèse. La seule coquille que j'ai trouvée et corrigée concerne la Procédure Stockée dans laquelle j'ai remplacé le '@P1' par '@RES_UID'.
Si vous en avez trouvé d'autres, n'hésitez pas à les indiquer.
Ces scripts ont été écrits sur SQL 2008 R2.
Cordialement,
Re bonjour,
Et merci de votre réactivité. Après discussion avec des collègues, il apparaît que ce que j'ai signalé comme une coquille est un - très vilain - défaut d'affichage : avec IE 8 comme avec d'autres navigateurs concurrents, l'affichage est tronqué si l'on utilise un zoom à 100% pour visionner la présente page... En l'occurence, un zoom à 100% sous IE 8/Firefox 25 ne permet de révéler que les 90 premiers caractères des lignes de code : c'est regrettable...
Bonjour Marc,
Nous avons rencontré le même problème avec Project Online (indépendamment d'une migration) lorsque les vues par défaut sont supprimées.
Bien cordialement,
Vincent Capitaine
Bonjour Vincent,
Effectivement, il existe d'autres scénarii.
Le point commun à tous les scénarii est qu'il faut que la table MSP_WEB_USERPROPERTIES soit vide où contienne des informations obsolètes.
La migration vers Project Server 2013 est un scenario intéressant car cette table nn'étant pas migrée, elle est donc vide par défaut.
Le correctif demandé prend en compte tous les cas connus.
Concernant le problème de zoom, il y a aussi deux paraètres à prendre en compte:
- la résolution d'affichage
- le facteur d'agrandissement des polices de caractères dans les paramètres de Windows.