Collection d'outils pour gérer et migrer les feuilles entre Qlik Sense Client Managed et Qlik Cloud.
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é
- 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)
- Client Managed (par défaut:
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
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" -AllPriveFonctionnalité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)
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" -AllPrivateParamè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)
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 privateFonctionnalité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)
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 publicFonctionnalité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)
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)
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)
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"]
}
}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"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.
La meilleure méthode consiste à :
- Publier les feuilles sur Client Managed avec identification du propriétaire dans le titre
- Déployer l'application vers Qlik Cloud
- Dépublier les feuilles dans le Cloud pour les rendre privées et les attribuer aux bons utilisateurs
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" -AllPriveCe 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)
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.
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" -AllPrivateCe 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
✅ 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
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]
publish-sheet-client-managed.ps1: Publication des feuilles sur Client Managed avec ajout du propriétaire dans le titreunpublish-sheets-cloud.ps1: Dépublication des feuilles sur Qlik Cloudlist-sheets-client-managed.ps1: Vérification des feuilles avant migrationlist-sheets-cloud.ps1: Vérification des feuilles après migration
- 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
userIdCM 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
Si vous obtenez une erreur de contexte, vérifiez que vos contextes sont bien configurés :
qlik context lsAssurez-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
Vérifiez que jq est installé (pour les scripts Bash) et que les réponses de l'API sont valides.
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Vincent Legeard
- Qlik pour l'API et les outils CLI
- La communauté Qlik pour le support