Skip to content

QlikFrancePlatform/migrate_sheets

Repository files navigation

Qlik Sheets Migration Tools

Collection d'outils pour gérer et migrer les feuilles entre Qlik Sense Client Managed et Qlik Cloud.

📋 Description

Ce projet contient une suite de scripts PowerShell et Bash pour automatiser la gestion des feuilles Qlik Sense, incluant :

  • Publication et dépublication de feuilles
  • Migration de feuilles entre Client Managed et Cloud
  • Gestion des propriétaires de feuilles
  • Mapping d'utilisateurs entre environnements
  • Listing et filtrage de feuilles par visibilité

🚀 Prérequis

  • Qlik CLI installé et configuré
  • PowerShell 5.1+ (pour les scripts .ps1)
  • Bash (pour les scripts .sh)
  • jq (pour les scripts Bash - parsing JSON)
  • Accès aux environnements Qlik Sense Client Managed et Qlik Cloud
  • Contextes Qlik CLI configurés :
    • Client Managed (par défaut: QSEoW)
    • Qlik Cloud (par défaut: tenant.fr.qlikcloud.com)

📁 Structure du projet

migrate_sheets/
├── README.md
├── LICENSE
├── .gitignore
├── create-user-mapping.ps1           # Création du mapping utilisateurs CM <-> Cloud
├── publish-sheet-client-managed.ps1  # Publication de feuilles dans Client Managed
├── unpublish-sheets-cloud.ps1        # Dépublication de feuilles dans Qlik Cloud
├── list-sheets-client-managed.ps1    # Liste des feuilles dans Client Managed
├── list-sheets-cloud.ps1             # Liste des feuilles dans Qlik Cloud
├── list-users-client-managed.ps1     # Liste des utilisateurs dans Client Managed
└── list-users-cloud.ps1              # Liste des utilisateurs dans Qlik Cloud

🛠️ Scripts disponibles

1. publish-sheet-client-managed.ps1

Script PowerShell pour lister et publier des feuilles privées dans Qlik Sense Client Managed.

Usage :

# Lister toutes les feuilles
.\publish-sheet-client-managed.ps1 -AppId "APP_ID" -List

# Lister uniquement les feuilles privées
.\publish-sheet-client-managed.ps1 -AppId "APP_ID" -List -Visibility private

# Publier une feuille spécifique
.\publish-sheet-client-managed.ps1 -AppId "APP_ID" -SheetId "SHEET_ID"

# Publier toutes les feuilles privées
.\publish-sheet-client-managed.ps1 -AppId "APP_ID" -AllPrive

Fonctionnalités :

  • Liste les feuilles avec leur statut (publique/privée)
  • Publie une feuille spécifique ou toutes les feuilles privées
  • Ajoute automatiquement le nom du propriétaire au titre de la feuille (format: Titre • Propriétaire)

Paramètres :

  • -AppId : ID de l'application (obligatoire)
  • -SheetId : ID de la feuille (optionnel, pour publication spécifique)
  • -AllPrive : Publier toutes les feuilles privées
  • -List : Mode liste
  • -Visibility : Filtre de visibilité (all, public, private)
  • -Context : Contexte Qlik CLI (défaut: QSEoW)

2. unpublish-sheets-cloud.ps1

Script PowerShell pour lister et dépublier des feuilles dans Qlik Cloud.

Usage :

# Lister toutes les feuilles
.\unpublish-sheets-cloud.ps1 -AppId "APP_ID" -List

# Lister uniquement les feuilles publiques
.\unpublish-sheets-cloud.ps1 -AppId "APP_ID" -List -Visibility public

# Dépublier une feuille spécifique
.\unpublish-sheets-cloud.ps1 -AppId "APP_ID" -SheetId "SHEET_ID"

# Dépublier toutes les feuilles publiques
.\unpublish-sheets-cloud.ps1 -AppId "APP_ID" -AllPrivate

Paramètres :

  • -AppId : ID de l'application (obligatoire)
  • -SheetId : ID de la feuille (optionnel)
  • -AllPrivate : Dépublier toutes les feuilles publiques
  • -List : Mode liste
  • -Visibility : Filtre de visibilité (all, public, private)
  • -Context : Contexte Qlik CLI (défaut: tenant.fr.qlikcloud.com)

3. list-sheets-client-managed.ps1

Script PowerShell pour lister les feuilles dans Qlik Sense Client Managed avec leurs informations détaillées.

Usage :

# Lister toutes les feuilles
.\list-sheets-client-managed.ps1 -AppId "APP_ID"

# Lister uniquement les feuilles privées
.\list-sheets-client-managed.ps1 -AppId "APP_ID" -Visibility private

Fonctionnalités :

  • Affiche l'ID, le titre, le propriétaire et le statut de chaque feuille
  • Filtrage par visibilité (all, public, private)
  • Export CSV optionnel

Paramètres :

  • -AppId : ID de l'application (obligatoire)
  • -Visibility : Filtre de visibilité (all, public, private)
  • -Context : Contexte Qlik CLI (défaut: QSEoW)

4. list-sheets-cloud.ps1

Script PowerShell pour lister les feuilles dans Qlik Cloud avec leurs informations détaillées.

Usage :

# Lister toutes les feuilles
.\list-sheets-cloud.ps1 -AppId "APP_ID"

# Lister uniquement les feuilles publiques
.\list-sheets-cloud.ps1 -AppId "APP_ID" -Visibility public

Fonctionnalités :

  • Affiche l'ID, le titre, le propriétaire et le statut de chaque feuille
  • Filtrage par visibilité (all, public, private)
  • Export CSV optionnel

Paramètres :

  • -AppId : ID de l'application (obligatoire)
  • -Visibility : Filtre de visibilité (all, public, private)
  • -Context : Contexte Qlik CLI (défaut: tenant.fr.qlikcloud.com)

5. list-users-client-managed.ps1

Script PowerShell pour lister les utilisateurs dans Qlik Sense Client Managed.

Usage :

# Lister tous les utilisateurs
.\list-users-client-managed.ps1

# Filtrer par userDirectory
.\list-users-client-managed.ps1 -UserDirectory "UserDirectory"

Fonctionnalités :

  • Affiche userDirectory, userId, nom et email
  • Filtrage par userDirectory
  • Statistiques par userDirectory
  • Export CSV optionnel

Paramètres :

  • -UserDirectory : Filtre par répertoire utilisateur (optionnel)
  • -Context : Contexte Qlik CLI (défaut: QSEoW)

6. list-users-cloud.ps1

Script PowerShell pour lister les utilisateurs dans Qlik Cloud.

Usage :

# Lister tous les utilisateurs
.\list-users-cloud.ps1

# Filtrer par domaine email
.\list-users-cloud.ps1 -EmailFilter "qlik.com"

Fonctionnalités :

  • Affiche subject, email et nom
  • Filtrage par domaine email
  • Statistiques par domaine
  • Export CSV optionnel

Paramètres :

  • -EmailFilter : Filtre par domaine email (optionnel)
  • -Context : Contexte Qlik CLI (défaut: tenant.fr.qlikcloud.com)

7. create-user-mapping.ps1

Script PowerShell pour créer un fichier de mapping entre les utilisateurs Client Managed et Qlik Cloud.

Usage :

# Avec les valeurs par défaut
.\create-user-mapping.ps1

# Avec des paramètres personnalisés
.\create-user-mapping.ps1 -CliContextClientManaged "QSEoW" -CliContextSaaS "tenant.fr.qlikcloud.com" -OutputFile "user-mapping.json"

Fonctionnalités :

  • Récupère les utilisateurs depuis Client Managed
  • Récupère les utilisateurs depuis Qlik Cloud
  • Crée un mapping basé sur le discriminant de l'email (partie avant @)
  • Génère un fichier JSON user-mapping.json

Paramètres :

  • -CliContextClientManaged : Contexte Client Managed (défaut: QSEoW)
  • -CliContextSaaS : Contexte Qlik Cloud (défaut: tenant.fr.qlikcloud.com)
  • -OutputFile : Fichier de sortie (défaut: user-mapping.json)

Format du fichier généré :

{
  "mappings": [
    {
      "cm": {
        "userDirectory": "UserDirectory",
        "userId": "qlik"
      },
      "cloud": {
        "subject": "tenant.fr.qlikcloud.com\\auth0|...",
        "email": "qlik@example.com"
      },
      "comment": "Mapping UserDirectory\\qlik -> tenant.fr.qlikcloud.com\\auth0|..."
    }
  ],
  "strategies": {
    "priority": ["manual_mapping", "email_match", "subject_match"]
  }
}

🔧 Configuration

Variables d'environnement (optionnel)

Vous pouvez définir des variables d'environnement pour personnaliser les contextes :

# PowerShell
$env:CLI_CONTEXT_CM = "QSEoW"
$env:CLI_CONTEXT_SAAS = "tenant.fr.qlikcloud.com"
$env:USER_MAPPING_FILE = "user-mapping.json"
# Bash
export CLI_CONTEXT_CM="QSEoW"
export CLI_CONTEXT_SAAS="tenant.fr.qlikcloud.com"
export USER_MAPPING_FILE="user-mapping.json"

🔄 Procédure de migration des feuilles privées (Client Managed → Cloud)

Cette procédure décrit la méthode recommandée pour migrer les feuilles privées du Client Managed vers Qlik Cloud en préservant l'attribution aux bons utilisateurs.

Vue d'ensemble

La meilleure méthode consiste à :

  1. Publier les feuilles sur Client Managed avec identification du propriétaire dans le titre
  2. Déployer l'application vers Qlik Cloud
  3. Dépublier les feuilles dans le Cloud pour les rendre privées et les attribuer aux bons utilisateurs

Étapes détaillées

Étape 1 : Publication des feuilles sur Client Managed

Sur l'environnement Client Managed, publiez toutes les feuilles privées en ajoutant automatiquement le nom du propriétaire dans le titre :

# Publier toutes les feuilles privées avec identification du propriétaire
.\publish-sheet-client-managed.ps1 -AppId "APP_ID" -AllPrive

Ce que fait cette étape :

  • Récupère toutes les feuilles privées de l'application
  • Pour chaque feuille, récupère le propriétaire (owner)
  • Ajoute le nom du propriétaire au titre de la feuille (format: Titre • Propriétaire)
  • Publie la feuille (la rend publique)

Exemple :

  • Feuille originale : "Tableau de bord" (privée, propriétaire: qlik)
  • Après publication : "Tableau de bord • qlik" (publique)

Étape 2 : Déploiement de l'application vers Qlik Cloud

Déployez l'application complète depuis Client Managed vers Qlik Cloud en utilisant votre méthode habituelle (export/import, Qlik Management Console, etc.).

Important : Les feuilles publiques avec leur titre identifié seront migrées automatiquement avec l'information du propriétaire dans le titre.

Étape 3 : Dépublication des feuilles dans Qlik Cloud

Sur l'environnement Qlik Cloud, dépubliez les feuilles pour les rendre privées. Grâce à l'identification dans le titre, chaque feuille peut être correctement attribuée au bon utilisateur :

# Lister les feuilles publiques pour vérification
.\unpublish-sheets-cloud.ps1 -AppId "APP_ID" -List -Visibility public

# Dépublier toutes les feuilles publiques
.\unpublish-sheets-cloud.ps1 -AppId "APP_ID" -AllPrivate

Ce que fait cette étape :

  • Récupère toutes les feuilles publiques de l'application Cloud
  • Dépublie chaque feuille (la rend privée)
  • L'attribution au bon utilisateur se fait automatiquement lors de la dépublication

Avantages de cette méthode

Simplicité : Processus automatisable avec les scripts fournis
Traçabilité : Identification claire du propriétaire via le titre
Fiabilité : Réduction des erreurs d'attribution
Efficacité : Migration en lot avec attribution automatique
Réversibilité : Possibilité de vérifier et corriger avant la dépublication finale

Workflow complet

graph LR
    A[Feuilles privées CM] -->|1. Publication avec owner| B[Feuilles publiques CM]
    B -->|2. Déploiement app| C[Feuilles publiques Cloud]
    C -->|3. Dépublication| D[Feuilles privées Cloud]
    D -->|Attribution auto| E[Feuilles attribuées aux bons users]
Loading

Scripts utilisés

  1. publish-sheet-client-managed.ps1 : Publication des feuilles sur Client Managed avec ajout du propriétaire dans le titre
  2. unpublish-sheets-cloud.ps1 : Dépublication des feuilles sur Qlik Cloud
  3. list-sheets-client-managed.ps1 : Vérification des feuilles avant migration
  4. list-sheets-cloud.ps1 : Vérification des feuilles après migration

📝 Notes importantes

  • Contexte Qlik CLI : Assurez-vous que vos contextes sont correctement configurés avant d'exécuter les scripts
  • Permissions : Les scripts nécessitent les permissions appropriées pour publier/dépublier des feuilles
  • Format des noms : Lors de la publication, le nom du propriétaire est ajouté au titre avec le format Titre • Propriétaire
  • Mapping utilisateurs : Le mapping est basé sur la correspondance entre le userId CM et le discriminant de l'email Cloud
  • Ordre des opérations : Respectez l'ordre des étapes (publication CM → déploiement → dépublication Cloud) pour garantir une attribution correcte

🐛 Dépannage

Erreur de contexte

Si vous obtenez une erreur de contexte, vérifiez que vos contextes sont bien configurés :

qlik context ls

Erreur de permissions

Assurez-vous d'avoir les permissions nécessaires pour :

  • Publier/dépublier des feuilles
  • Lire les informations des utilisateurs
  • Modifier les propriétés des objets

Erreur de parsing JSON

Vérifiez que jq est installé (pour les scripts Bash) et que les réponses de l'API sont valides.

📄 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.

👤 Auteur

Vincent Legeard

🙏 Remerciements

  • Qlik pour l'API et les outils CLI
  • La communauté Qlik pour le support

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors