Blogs

PSVR2013: Erreur de chargement des vues après suppression des vues par défaut

  • Comments 6
  • Likes

Bonjour,

Je voulais partager avec vous un problème que nous avons rencontré suite à la migration de Project Server 2010 vers Project Server 2013

Description de problème:

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:

clip_image001

Si l’utilisateur clique sur OK, un message d’erreur rouge est affiché dans la page :

clip_image002

Cause:

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 :

clip_image003

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.

Résolution:

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.

Etape 1 : Provisionner la table [pub].MSP_WEB_USERPROPERTIES pour tous les utilisateurs avec les UID des vues par défaut personnalisées :

/****** 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;

Etape 2 : Provisionner la table [pub].MSP_WEB_USERPROPERTIES pour chaque nouvel utilisateur avec les UID des vues par défaut personnalisées :

/****** 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>

Information complémentaire:

Une demande de correctif est en cours. je vous tiendrais au courant.

Bonne journée,

Marc Biarnès

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
  • Bonjour,

    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é...)

  • Bonjour,

    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.

    Cordialement,

  • 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.

    Cordialement,