Jira: Solucionar error: “Cannot read property ‘value’ of undefined”

En esta entrada voy a explicaros como solucionar el error de Jira “Cannot read property ‘value’ of undefined” cuando intentamos asignar una incidencia a un usuario.

Descripción del error

Este error normalmente se debe a la existencia de algún dato incorrecto en las propiedades de los usuarios lo cual hace que cuando pinchamos sobre el combo de responsable para asignar una incidencia nos muestre el siguiente error.

Error aplicación web

Error log Jira

Caused by: java.lang.IllegalStateException: User 'XXXX' has no unique key mapping.

Solución del Error

En primer lugar debemos realizar un backup de nuestra instancia de Jira para disponer de un respaldo en caso que algo fuera mal.

Una vez tenemos el respaldo pararemos el servicio de Jira.

Ejecutamos la siguiente sentencia SQL para determinar cuales son los usuarios con problemas.

SELECT
    lower_user_name
FROM
    cwd_user
WHERE
    lower_user_name NOT IN (
        SELECT lower_user_name FROM app_user
);

Comprobamos si los usuarios devueltos por la anterior consulta tienen una entrada en la tabla app_user

SELECT * 
FROM app_user 
WHERE lower_user_name = 'modificar por el usuario' OR user_key = 'modificar por el usuario';

Si la sentencia anterior devuelve un valor entonces actualizaremos la entrada para que las columnas lower_user_name y user_key coincidan con el nombre del usuario. En caso de no obtener ningún valor tendremos que ejecutar las siguientes sentencias en función del motor de base de datos que utilicemos.

PostgreSQL

INSERT INTO app_user 
VALUES (
	(SELECT max(id) + 1 FROM app_user),
	'modificar por el usuario',
	'modificar por el usuario'
); 

# Ejecutar la siguiente sentencia sólo para instancias de JIRA 6.1 o superior
UPDATE sequence_value_item 
SET seq_id = (SELECT max(id) FROM app_user) + 10 
WHERE seq_name = 'ApplicationUser';

MySQL

INSERT INTO app_user 
SELECT (max(id) + 1),
    'modificar por el usuario',
    'modificar por el usuario' 
FROM app_user;

# Ejecutar la siguiente sentencia sólo para instancias de JIRA 6.1 o superior
UPDATE SEQUENCE_VALUE_ITEM 
SET seq_id = (SELECT max(id) FROM app_user) + 10 
WHERE seq_name = 'ApplicationUser'; 

SQL Server

# Obtenemos el ID que utilizaremos en la segunda sentencia
SELECT max(id) FROM app_user;
 
INSERT INTO app_user 
VALUE ('<id de la sentencia anterior + 1>',
       'modificar por el usuario', 
       'modificar por el usuario');
 

# Ejecutar la siguiente sentencia sólo para instancias de JIRA 6.1 o superior
UPDATE sequence_value_item 
SET seq_id = <id de la sentencia anterior + 10> 
WHERE seq_name = 'ApplicationUser';

Oracle

INSERT INTO app_user 

VALUES (
	(SELECT ( max(id) + 1 ) from app_user), 
	'modificar por el usuario', 
	'modificar por el usuario'
);
 
# Ejecutar la siguiente sentencia sólo para instancias de JIRA 6.1 o superior
UPDATE sequence_value_item 
SET seq_id=(SELECT ((MAX(id)+10)) FROM app_user) 
WHERE seq_name = 'ApplicationUser';	
 
COMMIT;

Una vez realizados todos los pasos iniciamos el servicio de Jira y ya podremos asignar tareas a usuarios sin problemas.

Espero os haya servido de utilidad.

Deja un comentario