SSIS On-demand – publier un package en OData Feed

 

Lors des dernières Journées SQL Server, j’ai présenté une session sur la gestion des données avec Power BI.

La majeure partie de la session était consacrée à Power Query et j’ai fait une démonstration de la consommation de données en provenance d’un package SSIS, tout cela dans Excel. Explication de texte…

 

Préambule

La solution technique repose sur un composant SSIS & un composant SQL Server fournis par Microsoft qui sont passés totalement inaperçus (sauf si vous suivez le blog de Matt Masson, la référence internationale sur SSIS).

Ce composant est :

SSIS Data Feed Publishing Components

Vous pouvez le télécharger ici : Télécharger SSIS Data Feed Components

Vous avez également un tutorial sur le site de Microsoft (mais je vous recommande le mien Tire la langue) : Publish SSIS packages as OData Feeds

J’en avais également parlé brièvement lors de ma session Power BI du dernier SQLSaturday Paris.

 

Etape 1 : SSIS

Autant vous le dire tout de suite, il va falloir redévelopper vos packages. Pas de panique, c’est juste la destination de vos packages qu’il va falloir modifier.
(En même temps, si vous y repensez, c’est tout à fait logique car il faut bien rediriger le flux de données.)

imageAprès l’installation de SSIS Data Feed Components, vous avez un nouveau composant destination de Data Flow : Data Streaming Destination

Il suffit juste d’envoyer les données que vous souhaitez rendre disponibles sous forme de Feed dedans.

image

Ici, je fais un bête transcodage entre une table et un fichier CSV, rien de bien passionnant mlais suffisant pour la démo.

 

Etape 2 : publication

Microsoft focalise sur la publication sous la forme de Data Feed (ou OData Feed). En réalité, techniquement, le composant SSIS Data Feed n’a rien à voir avec un feed.
Il publie tout simplement un package SSIS (je devrais dire un Data Flow) sous la forme d’une vue SQL.

Le composant que vous avez installé propose également un assistant que vous trouverez dans votre menu écran Démarrer sous le nom de Data Feed Publishing Wizard.

image

Ce wizard vous demande en premier lieu le package à publier. Il faudra donc au préalable déployer votre package (votre .ispac) dans un catalogue SSIS.

image

Ensuite, l’assistant vous propose de saisir une configuration pour votre package.

image

Ensuite, il vous demande où vous souhaitez publier le flux. On voit bien ici que la publication est sous la forme d’une Vue dans une base SQL Server.

image

Quelques paramètres comme la version du Runtime SSIS (32 ou 64 bits) ou le timeout mais aussi, l’assistant parle de Linked Server (??!?).

On voit d’ailleurs dans l’étape de validation qu’il installe et configure un serveur lié dans votre SQL Server

image

C’est là toute la magie de cette technologie. C’est en fait un driver OLEDB, utilisable comme un banal serveur lié, qui lance notre package et récupère les données streamées par le composant Data Streaming Destination.

En faisant un tour dans Management Studio, on voit bien les éléments :

image

Pour requêter mes données, je fais juste un simple SELECT :

SELECT * FROM dbo.MaVueSSIS

Cela permet un usage purement SQL Server et pas forcément avec un Feed OData.

 

Etape 3 : transformer en OData Feed

La troisième étape, c’est de transformer notre vue SQL en OData Feed. Pour cela nous allons avoir besoin de Power BI car il contient un module permettant d’exposer des données “simplement” à des utilisateurs. Ce module, c’est la Data Management Gateway mais pour que l’expérience soit complète, nous allons avoir besoin de Power Query et d’un site Power BI.

En raccourci, ça donne cela :

image

Je vous la fait courte sur la création de la Gateway entre votre tenant Power BI et votre SI (votre SQL Server si vous préférez).

  1. Téléchargement et Installation de la Data Management Gateway
  2. Configuration et ouverture de flux (port 8051 par défaut)
  3. Création d’une Gateway sur l’IT Admin Portal de votre tenant Power BI
  4. Configuration de la clé pour que votre DMG et Power BI communique

image

Pour publier notre package sous la forme d’un OData Feed, il suffit simplement de configurer une nouvelle source de données sur votre Gateway dans l’IT Admin Portal de votre site Power BI et ensuite d’exposer la vue SQL.

image

Dans les paramètres de la Data Source, on n’oubliera pas d’activer l’option OData pour que la source soit accessible de Power Query

image

 

Etape 4 : consommation depuis Power Query

La dernière étape, c’est de consommer notre package depuis Excel. Pour cela, je me rends dans Power Query, je lance une recherche et je n’ai qu’à “utiliser” la bonne query

image

On remarque bien que la source de données est vue par Power Query comme un flux OData et non comme une vue ou une table SQL Server.

OData, ça veut dire que le données passent par le Cloud ?

On est en droit de se poser la question mais qu’on se le dise de suite, les données ne transitent pas par le Cloud.

Pourtant, l’URL du feed OData est bien sur Azure ?!?

Voici ce qui se passe :

  1. La recherche interroge le Data Catalog qui contient les méta-données des Queries partagées et des Sources publiées, notamment l’URL
  2. Excel (Power Query) contacte le Cloud à l’URL du Feed OData
  3. Le Cloud lui donne les infos de connexion à la Gateway qui référence la source
  4. Excel communique directement avec la Data Management Gateway (et donc ne passe pas par le Cloud)

On peut vérifier cela avec un outil comme Fiddler qui trace les échanges HTTP.

image
(Cliquer pour agrandir)

 

Cela donne à peu près cela :

image

 

Et la sécurité ?

Bonne question. Mais j’y répondrai dans un prochain article.

 


Et concernant la session des JSS 2013, les Slides et vidéo seront bientôt disponibles, suivez lkes news sur http://GUSS.Pro ou Twitter (@GUSS_FRANCE).

Lancement de mon offre de Self-Service BI

Disclaimer : ce post est orienté Business. On pourrait me dire qu’il n’est pas approprié à ce blog. Autant je vous donne des infos techniques ou des news sur le monde SQL Server, autant je pense qu’il est aussi intéressant de vous présenter des offres liées à la Data & la Business Intelligence, surtout quand c’est moi qui les porte et qui y passe du temps. Rassurez-vous, vous aurez aussi quelques posts (non promotionnels) traitant du sujet.

Pour ceux qui me suivent ou qui travaillent avec moi depuis longtemps, vous savez que la Self-Service BI, c’est un de mes sujets de prédilection.

Depuis 2009, avec la beta de PowerPivot et Report Builder 3.0, je crois aux préceptes de la BI personnelle (en fait depuis le “BI for Masses” de Steve Ballmer).
Les choses se sont accélérées depuis 2011 avec Data Explorer (maintenant Power Query), Power Pivot 2012, SharePoint 2013, Power BI…
Les outils avancent, les mentalités évoluent, les usages progressent et le temps de la maturité arrive pour la Self-Service BI dans les entreprises.

J’ai également pu me confronter ces dernières années à des projets de mise en oeuvre chez des clients de toute taille, à Paris comme à Toulouse.

Ces années d’expérience m’ont permis de peaufiner une démarche et développer une offre packagée.
Cette offre, nous la lançons avec ma société AZEO le 11 décembre prochain (oui, mercredi).

Pour l’occasion, nous organisons une matinée de présentation chez Microsoft.

SSBI_Big

 

11 décembre 10-12h
Microsoft Technology Center
39 quai du Président Roosevelt
Issy-les-Moulineaux

Pour s’inscrire, c’est simple, c’est ici :

http://www.succes-partenaires.com/evenement/35136

Mais vous pouvez aussi tout simplement me contacter par mail ou téléphone.

Pour vous mettre l’eau à la bouche, cette offre couvre les besoins de mise en place de Self-Service en entreprise que ce soit pour une PME, un département, ou même un grand groupe qui voudrait ouvrir une offre de service.

Elle traite des aspects techniques :

  • Installation de plate-forme
  • Adaptation de plate-forme existante
  • On-Prem, Cloud ou Hybride
  • Gestion des flux de données
  • etc.

Mais elle traite également des aspects méthodologiques :

  • Gouvernance de données
  • Processus
  • Formation
  • Accompagnement
  • etc.

 

L’aspect “clé en main” est important car l’idée est de vous accompagner de bout en bout sur la mise en place de la Self-Service BI pour vos utilisateurs.

Toutefois, nous pouvons intervenir sur un point ou un aspect particulier, à l’instar de notre offre de formation sur les outils comme PowerPivot.
Sur ce point précis, nous distribuons en France les cours PowerPivot de Marco Russo et Alberto Ferrari mais j’y reviendrai dans quelques jours dans un autre post.

 

Alors, prêt à mettre une touche de Self-Service BI dans votre entreprise ?

Table ronde sur l’agilité aux Journées SQL Server

http://guss.pro/2013/11/30/table-ronde-sur-l-agilite-aux-journees-sql-server/

imageLe GUSS vous propose un nouveau format d’échange et de partage d’expérience en organisant une table ronde.

Pour cette première, nous vous proposons une discussion sur l’agilité dans le monde SQL Server, que ce soit pour des projets BI ou pour la gestion d’une base de données.

Cette table ronde aura lieu pendant les Journées SQL Server en préambule de la track dédiée au même sujet.

Mardi 3 décembre 2013
12h – 13h
Salle Corail

 

Vous souhaitez participez ? Inscrivez-vous auprès d’un des organisateurs sur le stand GUSS lors des Journées SQL Server

 

Les sujets abordés

Le principe d’une table ronde est de partager et de débattre donc ce seront les participants qui définiront le sens des discussions. Toutefois, voici quelques thèmes qui seront abordés:

 

  • Comment industrialiser les développements SQL Server ?
  • Comment gérer la qualité des projets BI ? 
  • Comment piloter des projets (BI ou pas) grâce à la BI ?
  • Comment concilier les problématiques des développeurs avec celles des DBA ?

     

    Les intervenants :

    Sébastien Cantini – Microsoft

    Sébastien est ingénieur avant-vente sur les solutions ALM (Application Lifecycle Management).

    Benoit Launay – Microsoft

    Benoit est chef de produit SQL Server mais s’occupait il y a peu de Visual Studio et Team Foundation Server.

    François Tonic – Nefer-IT

    Historien et journaliste IT. François est éditeur et rédacteur en chef de Programmez! depuis + 10 ans. Il a fondé cloudmagazine.fr en 2008. Ancien développeur – testeur, François s’intéresse à tout et suit les évolutions techniques et technologiques.

    Michel Perfetti – Cellenza

    Michel est MVP (Most Valuable Professional) ALM. Il travaille depuis 2006 sur les problématiques d’industrialisation sur la plateforme Microsoft.

    Florian Eiden – BIOS-Consulting

    Florian est MVP SQL Server mais aussi directeur de projets BI. Il a fait de l’organisation de projets son cheval de bataille.

    Christophe Goset – CACIB

    Christophe est Agile CRM IT Manager et traite l’agilité au quotidien avec ses équipes.

     

    Rappel des sessions de la track Agilité

    Pratiques et expérience du projet BI Agile
    Florian Eiden – Mardi 14h00 – Salle Rubis

    BI agile : le TDD avec DBFit et intégration continue avec TFS
    Damien Maresma – Mardi – 15h30 – Salle Rubis

    L’agilité expliquée aux pros de la donnée
    Michel Perfetti – Mardi 17h00 – Salle Rubis

    SSAS : Tests de montée en charge
    Arnaud Voisin – Mardi 17h00 – Salle Grand Bleu

  • Mes sessions des Journées SQL Server 2013

    JSS2013_WhiteC’est bon ? vous êtes inscrits et vous viendrez au moins une demi-journée écouter les experts français SQL Server ?

    Je vais détailler un peu les sessions que je vous présenterai pour ma part. N’oubliez pas que vous pouvez vous inscrire à chaque session sur le site web (pour nous aider à répartir sur les différentes salles).

    http://guss.pro/2013/11/07/journees-sql-server-inscription-aux-sessions/

     

    SQL Server 2014 : What’s new

    Là, je triche car ce n’est pas moi qui présente cette session mais une brochette d’experts qui se relaieront sur scène pour faire un tour complet de la prochaine édition de SQL Server.
    Mon rôle sera d’être le monsieur loyal organisant le relai et animant le débat (s’il doit y en avoir un).

    Jour 1 – Lundi 2 décembre 2013 – 10h30

     

    Power BI : gestion des données

    Il y a une track complète sur Power BI car le sujet est trop vaste pour être traité en 1h.
    Franck Mercier, évangéliste SQL Server chez Microsoft, débute avec un tour complet de ce qui se trouve dans Power BI.
    Isabelle Van Campenhoudt, MVP SQL Server en Belgique (accompagnée de son compère Serge Luca), terminera sur tous les aspects liés à la restitution des données (Power View, Power Map, Power Q&A, Mobile BI, etc.).

    Et moi au milieu, je traite de toute la partie “Gestion des données” pour répondre aux questions de la récupération et du façonnage des données mais aussi toute la problématique des flux, des droits, du partage, etc.
    Ma partie sera centralisée autour de Power Query, de la Data Management Gateway et de la partie cloud de Power BI avec les BI Sites.

    Bref, une Power Track avec des Power Sessions et des Power Speakers. De quoi tout connaitre pour faire des Power Projets.

    Jour 1 – Lundi 2 décembre 2013 – 14h00

     

    Self-Service BI : retour d’expérience

    Avec une track sur Power BI, on mets clairement l’accent sur la Self-Service BI. Mais qu’en est-il sur le terrain de ce sujet qui fait le buzz depuis quelques temps déjà.

    Je traite du sujet depuis quelques années déjà (eh, oui, recomptez) et je souhaitais vous remonter quelques feedbacks. Quoi de mieux qu’un client “grand compte” pour ça ? Mettre en place de la Self-Service BI dans une entreprise de 12 000 utilisateurs…

    C’est donc avec mon confrère Pierre-Sébastien Malleret que nous échangerons avec notre client la Banque de France sur leur expérience sur le sujet.

    Jour 1 – Lundi 2 décembre 2013 – 17h00

     

    Keynotes

    Comme les années précédentes, j’interviendrai également en Keynote pour vous parler de la communauté, du GUSS, du bilan de l’année et de ce qu’on prévoit pour l’année prochaine.

     

    Stands

    AzeoVous pourrez me trouver sur le stand AZEO majoritairement même si j’ai l’habitude de courir un peu partout pendant ces 2 jours.
    Dans tous les cas, il y aura toujours quelqu’un là-bas pour répondre à vos questions.

    Les Journées SQL Server 2013

    Un post rapide sur les JSS pour faire office de voiture balai, tous mes petits camarades de la #SQLFamily ayant déjà battu le rappel ces derniers jours.

    image

    2 et 3 décembre 2013
    Centre de Conférences Microsoft

    41 quai du président Roosevelt
    Issy-Les-Moulineaux

    Les JSS, c’est quoi ?

    Pour la 3ème fois, c’est le plus grand événement SQL Server en France. Il regroupe 50 speakers locaux et internationaux qui animeront près de 40 sessions sur 2 jours sur les technologies Data et Business Intelligence.

    C’est un événement gratuit, organisé par la communauté SQL Server France, ie. le GUSS (Groupe des Utilisateurs SQL Server) et par ses 10 partenaires.

    Et le cru 2013 ?

    C’est la 3ème édition et cette année, je trouve l’agenda super (non pas qu’il était nul les fois précédentes).

    Des nouveautés, des fils rouges, de la technique, de la guest star (dont l’intégralité des MVP SQL Server France), etc.
    Que vous veniez pour les 2 jours ou juste une demi-journée, il y a forcément du contenu pour vous.

    Je viens, je fais quoi ?

    C’est facile, ça ne prend pas plus de 5 minutes

    1. Je m’inscris à l’événement en appuyant sur le gros bouton orange en bas de cette page :
      http://guss.pro/2013/12/02/journees-sql-server-2013/
      image
    2. Je commande ma lunchbox si je veux manger sur place le midi sur cette page :
      http://guss.pro/jss2013-lunchbox/
      image
    3. Je m’inscris aux sessions qui me plaisent (non pas pour réserver mon siège mais pour que les organisateurs choisissent les bonnes salles) :
      http://guss.pro/2013/11/07/journees-sql-server-inscription-aux-sessions/
      image
    4. Je vérifie que mes collègues / patrons / employés / confrères / amis sont également inscrits et viendront à l’événement. Bref,  je relaie l’événement dans mon réseau SQL et dans ma #SQLFamily. Voici quelques pointeurs pour vos réseaux sociaux :
      http://guss.pro/2013/11/06/promotion-journees-sql-server-2013/

     

    Aller, je vous attend dans un peu plus d’une semaine

    Automatiser la création d’un classeur PowerPivot

     

    Il y quelques temps déjà, je vous indiquais qu’on avait, avec Excel 2013, accès au DataModel par programmation. Etrangement, personne n’en a parlé dans la communauté, française ou internationale.

    La documentation du modèle objet d’Excel contient bien les entrées avec un objet Model.

    image
    http://msdn.microsoft.com/en-us/library/office/jj230227.aspx

    Je me suis donc mis en tête de creuser ce sujet…

    Disclaimer

    Malgré ma ténacité (et une bonne partie de mon dimanche), je ne suis pas super satisfait de mes trouvailles car il y a encore beaucoup à creuser dans l’API pour avoir une solution totalement fonctionnelle. Et l’API n’est pas beaucoup documentée.

    Cet article vous donne les pointeurs pour démarrer et évidemment, si par la suite je trouve plus de choses, je vous en ferai part. Je compte sur vous pour en faire de même dans les commentaires de cet article.

     

    Mode DataModel Excel

    La manipulation du DataModel (Model) directement dans le modèle objet Excel (en VBA) est en ReadOnly uniquement. Elle est même carrément absente des API en VSTO.

    Il y a toutefois une méthode intéressante :

    Workbook.Connections.Add2

    Elle permet d’ajouter une connexion au DataModel grâce à un paramètre booléen qui pourrait passer inaperçu dans la doc : CreateModelConnection.

    image
    http://msdn.microsoft.com/en-us/library/office/ff195949.aspx

    Ce code ajoute la table Faits provenant de mon SQL Server local dans le modèle :

    ThisWorkbook.Connections.Add2 _
    	"VBA Connection", "A Description", _
    	"OLEDB;Provider=SQLNCLI11;Data Source=localhost;initial catalog=Lab;integrated security=SSPI", _
    	"Faits", 6, _
    	True, True
    

    Je n’ai pas poussé à récupérer un modèle complet mais il suffit d’indiquer plusieurs tables dans la CommandText.

    Il y a aussi tout un tas de spécificités en fonction de votre source. Avec une source OData, ça donne ça comme ConnectionString (source Azure DataMarket)

    "OLEDB;Data Source="Inline Service Document";Include Atom Elements=Auto;Include Expanded Entities=False;Persist Security Info=false;Time Out=600;Schema Sample Size=25;Retry Count=5;Retry Sleep=100;Keep Alive=False;Refresh Token=xxxxx

    Mode Table Liée dans Excel

    Dans la lignée de la première méthode, il est tout à fait possible par code de remplir une feuille Excel avec toutes les données (limité à 1M de lignes).

    Ensuite, un appel à la méthode Add2 avec d’autres paramètres que ceux présentés ci-dessus permet de l’ajouter au Model.

    Par contre, dans ce cas, le Data Refresh ne fonctionnera pas.

    ThisWorkbook.Connections.Add2 _
    	"LinkedTable_TableClasseur", "", _
    	"WORKSHEET;C:\Users\Jean-Pierre\Desktop\Book1.xlsm", _
    	"Book1.xlsm!TableClasseur",	7, _
    	True, False
    

    Mode OpenXML

    Il y a également une autre piste, c’est de passer par le SDK OpenXML qui permet de manipuler le fichier Excel sans ouvrir Excel.

    Télécharger le SDK OpenXML 2.5

    Le contenu du fichier Excel est un ZIP qui contient des fichiers XML et d’autres données (images, etc.).

    Dans le fichier workbook.xml, il y a un nœud <dataModel>
    documentation MSDN

    Pour le modèle en lui-même, c’est en fait un backup d’un cube SSAS Tabulaire.
    Vous pouvez en construire un avec l’API AMO, le sauvegarder et le ré-injecter dans le fichier Excel.

    Un projet CodePlex contient toutes les routines nécessaires : http://tabularamo2012.codeplex.com/

    clip_image002

    Notez que je n’ai pas investigué cette méthode donc impossible de vous dire si cela fonctionne bien.

     

    Conclusion

    L’API n’est pas documentée, il n’y a aucun exemple sur Internet mais les méthodes sont bien présentes. Je n’arrive pas à la conclusion que c’est impossible mais évidemment, il y a encore du travail pour suivre ces pointeurs et avoir un PoC totalement fonctionnel.

    Attention : Point important

    De ce que j’ai pu trouver, toutes ces méthodes ne sont pas forcément supportées. L’impact est que, si une macro ou le code qui manipule le OpenXML endommage le classeur Excel, le support Microsoft se désengagera.

     

    PS : quand je disais que la communauté n’avait rien écrit sur ces API, j’aimerai toutefois remonter 2 pointeurs :

    Notez que ces articles sont vieux et donc ne tiennent pas compte de l’extension de l’API en 2013.

    Commisionner-Décomissionner des VMs dans Azure en PowerShell

    imageUn post rapide pour partager un script Powershell que j’utilise pour bien gérer mon abonnement Azure.

    Comme vous le savez, on paie à l’usage et donc si vous laissez tourner vos VMs 24/7, la facture grossit très vite. D’autant plus qu’il ne suffit pas d’éteindre la machine.

    Mon abonnement servant pour des démos et des tests, je l’utilise quelques jours par mois et pas toute la journée. Vous avez la même situation pour un environnement de recette.

    Il est donc important de décommisionner vos VMs. Je ne parle pas de l’arrêter mais bien de la supprimer. Evidemment, les VHDs restent sur votre stockage (et continuent à être facturés) et vous pouvez sauvegarder la configuration de la VM en local.

    Les cmdlets à retenir :

    • Import-AzurePublishSettingsFile : branche le contexte sur votre abonnement. Le fichier en entrée est à récupérer sur le portail de gestion
    • Stop-AzureVM  : arrête la VM (autant faire cela propre)
    • Export-AzureVM : permet de récupérer toute la configuration de la VM (les VHDs) pour pouvoir la remonter par la suite
    • Remove-AzureVM : supprime la VM
    • Remove-AzureService : supprime le Service associé (DNS)
    • Import-AzureVM : recrée la VM
    • Start-AzureVM : démarre la VM

    Le script :

    Décommissionnement

     Import-AzurePublishSettingsFile "C:\AzureRoot\Djeepy1.publishsettings"
    
    $myVMsNames = @("djeepy1-bi-sql","djeepy1-bi-ad") #Service (DNS)
    $myVMsServices = @("djeepy1-bi-sql","djeepy1-bi-ad") #rolename (nom de la machine)
    
    $i = 0
    Foreach ( $myVMDNS in $myVMsServices )
    {
          $vmName = $myVMsNames[$i]
          Stop-AzureVM -ServiceName $myVMDNS -Name $vmName
          $ExportPath = "C:\AzureRoot\ExportVMs\ExportAzureVM-$vmName.xml"
          Export-AzureVM -ServiceName $myVMDNS -name $vmName -Path $ExportPath
          $i = $i+1
    }
    $i = 0
    Foreach ( $myVMDNS in $myVMsServices )
    {
          $vmName = $myVMsNames[$i]
          Remove-AzureVM -ServiceName $myVMDNS -name $vmName
          Remove-AzureService -ServiceName $myVMDNS -Force
          $i = $i+1
    }
    

     

    Commissionnement

     Import-AzurePublishSettingsFile "C:\AzureRoot\Djeepy1.publishsettings"  
    $myVNet = "djeepy1-bi-vlan"  
    $AG = "Djeepy1-BI"  
    $myStorageAccount = "djeepy1bivhds"  
    
    $myVMsNames = @("djeepy1-bi-ad","djeepy1-bi-sql") #DNS 
    $myVMsServices = @("djeepy1-bi-ad","djeepy1-bi-sql") #rolename (nom de la machine)  
    
    Get-AzureSubscription | Set-AzureSubscription -CurrentStorageAccount $myStorageAccount   
    
    $i = 0
    Foreach ( $myVMDNS in $myVMsServices )
    {
          $vmName = $myVMsNames[$i]
          $ExportPath = "C:\AzureRoot\ExportVMs\ExportAzureVM-$vmName.xml"
          Import-AzureVM -Path $ExportPath | New-AzureVM -ServiceName $myVMDNS -VNetName $myVNet -AffinityGroup $AG
          Start-AzureVM -ServiceName $myVMDNS -name $vmName
          $i = $i+1
    }
    

    Désolé si mon Powershell n’est pas des plus académiques :)

     

    Note : il est prévu qu’une VM éteinte ne soit pas facturée. Je ne sais pas si c’est actuellement le cas ou si ça arrivera plus tard. Je vous laisse creuser mais vous verrez