Isi-APP Docs fonctionnelles
Toutes les docs
Markdown brut
Guide de préparation du fichier Excel pour l'import
Actif demo functional Revu le 2026-07-06 demo/demo-account-excel-guide.md

Guide de préparation du fichier Excel pour l'import

Ce guide explique comment préparer un fichier XLSX pour créer un compte client de démonstration via la commande demo:import.


Structure générale du fichier

Le fichier Excel doit contenir :

  1. Un onglet _config (obligatoire, en premier)
  2. Un ou plusieurs onglets de tables (un onglet = une table de données)

Format des onglets de données

Chaque onglet de table suit cette structure :

  • Ligne 1 : Noms des colonnes (doivent correspondre aux colonnes de la base de données)
  • Ligne 2 : Métadonnées (optionnel, pour documentation)
  • Ligne 3+ : Données

Onglet _config

Cet onglet contient les paramètres généraux du fichier.

Colonne A (clé) Colonne B (valeur) Description
version 1.0 Version du format (laisser 1.0)
source_idc 999 ou GENERATED ID source si exporté, ou GENERATED si créé manuellement
export_date 2026-01-13 10:00:00 Date de création du fichier
target_idc (vide) Ne pas remplir, sera défini à l'import
target_name (vide) Ne pas remplir, sera défini à l'import

Ce qui est automatique vs ce que vous devez définir

Ce qui est généré AUTOMATIQUEMENT à l'import

Élément Description
IDs réels Tous les IDs temporaires (TEMP_XXX) sont remplacés par de vrais IDs auto-générés
_id (customer parent) Automatiquement mis à jour vers le target_idc fourni à l'import
SIRET Un nouveau SIRET unique est généré pour chaque customer
Emails utilisateurs Rendus uniques en ajoutant +demoXXX avant le @
Mot de passe Hashé automatiquement (valeur par défaut : password123)
Décalage des dates Toutes les dates sont décalées pour être relatives à aujourd'hui

Ce que VOUS devez définir

Élément Description
Noms et libellés lbname, lbproject, lbask, etc.
Descriptions txdesc, lbdesc, etc.
Types et statuts tpstate, tpurgency, tphard, etc.
Relations via TEMP_IDs Les liens entre enregistrements
Données métier Tout ce qui est spécifique à votre scénario de démo

Système des IDs temporaires

Principe

Les IDs temporaires permettent de créer des relations entre les enregistrements avant que les vrais IDs n'existent.

Format

TEMP_{TABLE}_{NUMERO}

Exemples :

  • TEMP_CUSTOMER_0001 - Premier customer
  • TEMP_USERS_0042 - 42ème utilisateur
  • TEMP_PROJECT_0003 - 3ème projet

Comment les utiliser

  1. Dans la colonne clé primaire : Attribuez un TEMP_ID unique à chaque enregistrement
  2. Dans les colonnes de référence (FK) : Utilisez le TEMP_ID de l'enregistrement cible

Exemple :

Onglet customer : | idc | lbname | _id | |-----|--------|-----| | TEMP_CUSTOMER_0001 | Mon Entreprise | TEMP_CUSTOMER_0001 | | TEMP_CUSTOMER_0002 | Filiale A | TEMP_CUSTOMER_0001 |

Onglet users : | id | name | idc | _id | |----|------|-----|-----| | TEMP_USERS_0001 | Dupont | TEMP_CUSTOMER_0001 | TEMP_CUSTOMER_0001 | | TEMP_USERS_0002 | Martin | TEMP_CUSTOMER_0002 | TEMP_CUSTOMER_0001 |

L'utilisateur Martin appartient à la Filiale A (idc), mais son _id pointe vers le customer principal.


Tables principales et leurs colonnes clés

customer - Clients/Entités

Colonne Type Obligatoire Description
idc TEMP_ID Oui Clé primaire (TEMP_CUSTOMER_XXXX)
lbname Texte Oui Nom de l'entité
_id TEMP_ID Oui Référence au customer parent (= idc pour le principal)
idref Texte Non Code court (ex: SIEGE, AGENCE1)
tpsector Texte Non Secteur d'activité
lbmail Email Non Email de contact
lbtel Texte Non Téléphone

Note : Le premier customer de la liste devient le customer principal et reçoit le target_idc et target_name fournis à l'import.


customer_addr - Adresses

Colonne Type Obligatoire Description
idaddr TEMP_ID Oui Clé primaire
lbaddr Texte Oui Format: customer_addr.lbaddr.{TEMP_ID}
lbline1 Texte Non Adresse ligne 1
idc TEMP_ID Oui Référence au customer
blmaster 0/1 Non 1 = adresse principale
_hide_cdpostal Texte Non Code postal
_hide_lbtown Texte Non Ville

users - Utilisateurs

Colonne Type Obligatoire Description
id TEMP_ID Oui Clé primaire
name Texte Oui Nom de famille
forname Texte Non Prénom
email Email Oui Email (sera rendu unique automatiquement)
idc TEMP_ID Oui Customer d'appartenance
_id TEMP_ID Oui Customer principal
tpuser Texte Non Type (S=Staff, A=Admin, M=Manager, T=Tech)

Note : Le mot de passe est automatiquement défini à password123 (hashé).


tickets - Tickets support

Colonne Type Obligatoire Description
idask TEMP_ID Oui Clé primaire
lbask Texte Oui Sujet du ticket
idc TEMP_ID Oui Customer concerné
idaddr TEMP_ID Non Adresse liée
iduser_asker TEMP_ID Non Utilisateur demandeur
tpstate Texte Non État (NEW, OPEN, PEND, CLOSE)
tpurgency Texte Non Urgence (1=faible à 4=urgent)
created_at Date Non Date de création

project - Projets

Colonne Type Obligatoire Description
idproject TEMP_ID Oui Clé primaire
lbproject Texte Oui Nom du projet
_id TEMP_ID Oui Customer principal
lbdesc Texte Non Description
tpstade Texte Non Stade (P=Planifié, E=En cours, F=Fini)
tpgo Texte Non Go/NoGo (O=Oui, N=Non)
dtbegin Date Non Date de début
dtend Date Non Date de fin
csadvance Nombre Non % d'avancement (0-100)

Données par défaut

Si un onglet est absent ou vide, des données par défaut peuvent être insérées automatiquement pour certaines tables :

Table Données par défaut
dsi_hwvm 10 serveurs virtuels types
dsi_lic 8 licences logicielles courantes
dsi_tel 1 installation téléphonie IP
dsi_planip 12 VLANs réseau standards
supplier 10 fournisseurs IT courants
customer_act_san 5 activités sanitaires
customer_act_ms 3 activités médico-sociales
_com_wiki 8 articles de documentation
_com_know 5 fiches de résolution

Pour éviter les données par défaut, créez un onglet avec au moins une ligne de données.


Gestion des dates

Format attendu

YYYY-MM-DD

ou

YYYY-MM-DD HH:MM:SS

Exemples : 2026-01-15 ou 2026-01-15 14:30:00

Décalage automatique

À l'import, toutes les dates sont décalées pour être relatives à la date actuelle.

Exemple :

  • Export fait le 01/01/2025 avec un ticket créé le 15/12/2024
  • Import fait le 15/03/2025
  • Le ticket aura une date de création au 27/02/2025 (même écart relatif)

Pour désactiver le décalage : --date-offset=0


Colonnes ignorées automatiquement

Ces colonnes sont automatiquement gérées et n'ont pas besoin d'être remplies :

Colonne Raison
password Hashé automatiquement
remember_token Session, non pertinent
_id Remplacé par target_idc
idsiret Régénéré pour unicité

Ordre des onglets

L'ordre des onglets n'est pas important. Le système importe automatiquement dans le bon ordre de dépendance :

  1. customer (niveau 0)
  2. customer_addr, users, supplier... (niveau 1)
  3. customer_addr_bat, tickets, project... (niveau 2)
  4. Et ainsi de suite...

Conseils pratiques

Commencer simple

  1. Créez d'abord les customers et users
  2. Ajoutez progressivement les autres tables
  3. Testez avec --dry-run après chaque ajout

Tester avant d'importer

# Toujours valider en dry-run d'abord
php artisan demo:import mon_fichier.xlsx --dry-run

Utiliser un template existant

# Générer un template hospital complet
php artisan demo:generate-hospital

# Ou exporter un client existant comme base
php artisan demo:export 999 --output=exports/template.xlsx

Nommage des TEMP_IDs

Utilisez des noms cohérents et séquentiels :

  • TEMP_CUSTOMER_0001, TEMP_CUSTOMER_0002...
  • TEMP_USERS_0001, TEMP_USERS_0002...

Erreurs courantes

"Column not found"

La colonne spécifiée n'existe pas dans la table. Vérifiez le nom exact de la colonne.

"Duplicate entry for key 'PRIMARY'"

Le target_idc existe déjà en base. Choisissez un autre ID.

"Cannot be null"

Une colonne obligatoire est vide. Remplissez-la ou supprimez la ligne.

"Reference not found"

Un TEMP_ID référencé n'existe pas. Vérifiez que l'onglet source contient bien cet ID.


Exemple minimal

Un fichier Excel minimal valide :

Onglet _config : | key | value | |-----|-------| | version | 1.0 | | source_idc | GENERATED | | export_date | 2026-01-13 |

Onglet customer : | idc | lbname | _id | tpsector | |-----|--------|-----|----------| | TEMP_CUSTOMER_0001 | Ma Société | TEMP_CUSTOMER_0001 | IT |

Onglet users : | id | name | forname | email | idc | _id | |----|------|---------|-------|-----|-----| | TEMP_USERS_0001 | Admin | Jean | admin@masociete.fr | TEMP_CUSTOMER_0001 | TEMP_CUSTOMER_0001 |

Import :

php artisan demo:import mon_fichier.xlsx --target-idc=500 --target-name="Ma Société Demo"