PROJECT SERVER 2013. ERROR AL CARGAR LAS VISTAS DESPUES DE ELIMINAR LAS VISTAS ORIGINALES PREDETERMINADAS. THE VIEW FAILED TO LOAD.

Buenas,

Después de leer el post original de nuestro colega y mentor, Marc Biarnes, donde explica este asunto, no hemos podido evitar proceder a publicarlo en nuestro blog. El post original se puede encontrar aquí:

https://blogs.technet.com/b/frenchpjblog/archive/2013/12/06/3616538.aspx

A continuación procedemos a traducir el artículo:

“Hola,

Quería compartir con vosotros un problema que hemos detectado después de realizar una migración de Project Server 2010 a Project Server 2013.

DESCRIPCIÓN DEL PROBLEMA:

En un cliente que había migrado una plataforma de EPM2010 a EPM2013, cuando cada usuario intentaba conectarse por primera vez al Centro de Proyectos, o de Recursos, aparecía el siguiente error:

clip_image001

Si el usuario afectado pinchaba en “OK”, aparecía el mensaje de error

clip_image002

Indicando que no tenía permisos para ver ningún proyecto.

CAUSA:

El error se produce porque las vistas por defecto del Centro de Proyectos y del Centro de Recursos se han eliminado en Project Server 2010.

De hecho, la información sobre las preferencias de los usuarios en cuanto a la vista a mostrar, por ejemplo, se almacena en la tabla [pub].MSP_WEB_USERPROPERTIES. Esta tabla contiene, en particular, para el usuario, la vista seleccionada en cada una de las páginas mostradas.

clip_image003

Así, cuando un usuario vuelve a una página que ya ha publicado, descubre cómo era. Esta tabla no se tiene en cuenta durante el proceso de migración a Project Server 2013. Esto significa que esta tabla está vacía cuando termine la migración. En este caso, cuando la primera vez que se muestra el Centro de Proyectos o el Centro de Recursos u otra página con vistas, Project Server automáticamente rellena esta tabla, usando la configuración predeterminada para cada usuario:

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

RESOLUCIÓN:

Se ha solicitado una revisión para este comportamiento. Mientras se decide al respecto, se estima que la revisión del código debiera estar disponible para la actualización acumulativa correspondiente a Abril de 2014. Si nos vemos afectados por este problema, podríamos ejecutar los siguientes scripts:

Paso 1: Rellenar la tabla [pub].MSP_WEB_USERPROPERTIES para todos los usuarios con el UID de las vistas predeterminadas personalizadas:

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

Paso 2: Rellenar la tabla [pub].MSP_WEB_USERPROPERTIES para cada usuario nuevo con el UID de las vistas predeterminadas personalizadas:

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

Una vez generado el procedimiento almacenado, no tenemos más que ejecutar el siguiente comando para agregar las vistas personalizadas a la configuración de usuario:

EXEC [PUB].XMGS_SetDefaultViewByResUID @RESUID= ‘<RES_UID>’

Por último, no queda más que recordar que se ha solicitado una revisión al grupo de producto, la cual está pendiente de confirmación, etc. Os daremos más detalles cuando los tengamos.”

 

Esperamos os resulte de interés, un saludo.

 

Jorge Puig