Migrar work items de Jira a Azure DevOps

Hace no mucho estuve compartiendo contigo mis investigaciones sobre cómo migrar tu documentación de Confluence a Azure DevOps. Hoy te vengo con otra migración desde Atlassian, en este caso de Jira a Azure DevOps haciendo uso de la herramienta open source de Solidify.

Exportar desde Jira

Lo primero que debes hacer es descargarte la última versión de la herramienta de Solidify desde su repositorio de GitHub. Una vez hecho esto descomprímelo y abre la carpeta con Visual Studio Code, para tu comodidad 🙂 Si te fijas, hay una carpeta llamada Samples donde tienes tres ejemplos de los tres tipos de proyectos que podrías tener en Jira: Basic, Agile y SCRUM

Plantillas de ejemplo de los tipos de proyecto de Jira

Dependiendo del proyecto que tengas del lado de Jira deberás elegir una u otra. En mi caso, he escogido la llamada config-scrum.json ya que mi proyecto de ejemplo es de este tipo. Siempre hago una copia para tener siempre el ejemplo base intacto. Para que todo funcione correctamente hay que cambiar básicamente tres campos en estos archivos: source-project con el nombre abreviado de tu proyecto en Jira (en mi caso SD), target-project con el nombre que tendrá el proyecto en Azure DevOps (en mi caso Scrum-Demo-From-Jira) y hay que modificar la query con el nombre del proyecto, que coincide con el de source-project (en mi caso a project=SD ORDER BY Rank ASC)

Configuración minima para el archivo config-scrum.json

Hay muchos otros valores que se pueden modificar y que están recogidos en la documentación de Solidify, pero esto es lo mínimo que necesitas para comenzar a trastear.

Otra de las cosas que seguro que te va a hacer falta es hacer un mapeo de los usuarios que tienes en Jira frente a los que tienes en Azure DevOps, que posiblemente no coincidan. En el caso de que estés con Jira Cloud deberás usar el AccountId y el correo electronico del usuario en Azure DevOps para que el mapeo funcione correctamente. Los account ids de los usuarios de Jira puedes obtenerlos de diferentes maneras. De una forma rápida, el tuyo lo puedes ver cuando entras en tu perfil, como parte de la URL:

Y si es de otros al seleccionar su perfil te aparecerá también en la URL como assignee.

Una vez que tengas identificados los mapeos, debes crearte una carpeta en c:\Temp\JiraExport llamada users.txt con la siguiente información:

[email protected]
[email protected]
*[email protected]

Por supuesto toda esta información puedes obtenerla a través de la API REST que ofrece JIRA. Genera un archivo llamado users.txt y guardalo en una carpeta en c:\Temp\JiraExport.

Una vez que tienes los usuarios y has modificado los valores del archivo config-scrum.json ya puedes lanzar el siguiente comando:

### Export info from Jira ###

$USER_NAME="YOUR_EMAIL"
# Get API token for Jira (https://id.atlassian.com/manage-profile/security/api-tokens)
$API_TOKEN="YOUR_API_TOKEN"
$ALTASIAN_URL="https://YOUR_ACCOUNT.atlassian.net"
#Export from Jira
.\jira-export.exe -u $USER_NAME -p $API_TOKEN --url $ALTASIAN_URL --config config-scrum-scrum-demo-project.json --force

Si todo ha ido bien, en la carpeta anterior, en c:\Temp\JiraExport, tendrás todo lo que se ha exportado.

Elementos exportados de Jira con jira-exporter

Importar de Azure DevOps

Ahora falta que todos los elementos que tienes exportados de Jira puedas importalos en tu organización de Azure DevOps. En la documentación se indica que si el proyecto especificado en la configuración no existe es capaz de crearlo, pero a mi me daba errores. No pasa nada, simplemente voy a https://dev.azure.com y creo un nuevo proyecto en la organización que toque, asegurándome de que es del mismo tipo que quiero exportar, en este caso Scrum.

Crear un nuevo proyecto de tipo Scrum en Azure DevOps

Debes tener en cuenta que si estos usuarios no forman parte del proyecto que has creado no se hará el mapeo correctamente, por lo que deberías asegurarte de que estos existen antes. La última linea significa que si el mapeo no se ha podido realizar correctamente con los usuarios anteriores que se ponga el indicado por defecto.

Una vez hecho esto, debes generar un Personal Access Token y lanzar el siguiente comando:

### Import to Azure DevOps ###
# 1. Get Personal Access Token for Azure DevOps (https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=preview-page#create-a-pat)
#https://dev.azure.com/{YOUR_ORG}/_usersSettings/tokens
$PAT="YOUR_PERSONAL_ACCESS_TOKEN"
#(the project should be exist first)
.\wi-import.exe --token $PAT --url https://dev.azure.com/YOUR_ORG --config config-scrum-scrum-demo-project.json --force

Si todo ha ido bien deberías de ver tus work items de Jira en Azure DevOps.

Work items migrados de Jira a Azure DevOps

¡Saludos!