diff --git a/src/module_urbalyon/web_service/ws/Popup.class.inc b/src/module_urbalyon/web_service/ws/Popup.class.inc
new file mode 100644
index 0000000000000000000000000000000000000000..dfcae2fc33e298991f7644da36b2c4a1bcee366e
--- /dev/null
+++ b/src/module_urbalyon/web_service/ws/Popup.class.inc
@@ -0,0 +1,97 @@
+<?php
+
+require_once __DIR__ . '/Urbalyon.class.inc';
+require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/ws/vitis/Vitis.class.inc';
+require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vitis_lib/Connection.class.inc';
+require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vmlib/BdDataAccess.inc';
+
+/**
+ * \file Popup.class.inc
+ * \class Popup
+ *
+ * \author Armand Bahi <armand.bahi@veremes.com>.
+ * \author Fabien Marty <f.marty@urbalyon.org>.
+ *
+ * 	\brief This file contains the Popup php class
+ *
+ * This class defines the rest api for popup
+ *
+ */
+class Popup extends Urbalyon {
+    /**
+     * @SWG\Definition(
+     *   definition="/popup",
+     *   allOf={
+     *     @SWG\Schema(ref="#/definitions/popup")
+     *   }
+     * )
+     * * @SWG\Tag(
+     *   name="Popup",
+     *   description="Popup for map"
+     * )
+     */
+
+    /**
+     * construct
+     * @param type $aPath url of the request
+     * @param type $aValues parameters of the request
+     * @param type $properties properties
+     * @param type $bShortcut false to reinit variables
+     * @param type $oConnection connection object
+     */
+    function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) {
+        parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection);
+    }
+
+    /**
+     * @SWG\Get(path="/popup/{map_id}",
+     *   tags={"Popup"},
+     *   summary="Get the popup content",
+     *   description="Request to get popup content",
+     *   operationId="GET",
+     *   produces={"application/json"},
+     * @SWG\Parameter(
+     *     name="token",
+     *     in="query",
+     *     description="user token",
+     *     required=true,
+     *     type="string"
+     *   ),
+     *   @SWG\Parameter(
+     *     name="map_id",
+     *     in="path",
+     *     description="map Id",
+     *     required=true,
+     *     type="integer"
+     *   ),
+     *   @SWG\Response(
+     *         response=200,
+     *         description="Popup Response",
+     *         @SWG\Schema(ref="#/definitions/popup")
+     *     )
+     *  )
+     */
+
+    /**
+     * Get function to get popup content
+     * @return the popup content values
+     */
+    function GET() {
+        $iMapId = $this->aPath[2];
+
+        if ($iMapId==-2){
+            $sContent = file_get_contents('template_popup/'.$iMapId.'.html', true);
+            $aReturn=array("result"=>1, "title"=>'<p class="text-center mb-0" style="font-weight: bold;font-size: 30px;">Atlas numérique du sport</p>', "message"=>$sContent);
+        } elseif ($iMapId==28) {
+            $sContent = file_get_contents('template_popup/'.$iMapId.'.html', true);
+            $aReturn=array("result"=>1, "title"=>'<p class="text-center mb-0" style="font-weight: bold;font-size: 30px;">Atlas numérique du sport</p>', "message"=>$sContent);
+		}else{
+            $aReturn=array("result"=>0, "message"=>'carte numéro '.$iMapId.' inconnu');
+        }
+
+        return json_encode($aReturn);
+    }
+
+}
+
+?>
diff --git a/src/module_urbalyon/web_service/ws/Urbalyon.class.inc b/src/module_urbalyon/web_service/ws/Urbalyon.class.inc
new file mode 100644
index 0000000000000000000000000000000000000000..09809ab2f92544f4196294f70e0c46e9ac5e312f
--- /dev/null
+++ b/src/module_urbalyon/web_service/ws/Urbalyon.class.inc
@@ -0,0 +1,17 @@
+<?php
+
+require_once dirname($_SERVER['SCRIPT_FILENAME']) . "/class/vitis_lib/DbClass.class.inc";
+require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/ws/vitis/Vitis.class.inc';
+require_once 'vmlib/logUtil.inc';
+
+class Urbalyon extends Vitis {
+
+    //Chemin du fichier de ressources contenant les requêtes SQL
+    var $sRessourcesFile = 'ws/urbalyon/Urbalyon.class.sql.inc';
+	
+    function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) {
+        parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection);
+    }
+
+}
+?>
\ No newline at end of file
diff --git a/src/module_urbalyon/web_service/ws/Urbalyon.class.sql.inc b/src/module_urbalyon/web_service/ws/Urbalyon.class.sql.inc
new file mode 100644
index 0000000000000000000000000000000000000000..32e49d777219b99b4bd321549fa7125a6e2cd267
--- /dev/null
+++ b/src/module_urbalyon/web_service/ws/Urbalyon.class.sql.inc
@@ -0,0 +1,13 @@
+<?php
+//Définition des requêtes de l'api Vitis
+$aSql['checkIP'] = "SELECT user_id, ip_constraint FROM [sSchemaFramework].user WHERE login ='[sLogin]'";
+$aSql['getGroups'] = "SELECT group_id FROM [sSchemaFramework].user_group WHERE user_id = [user_id]";
+$aSql['loginUnique'] = 'SELECT UPPER("login") FROM [sSchemaFramework]."user" WHERE UPPER("login")=UPPER(\'sLoginUser\')';
+$aSql['getLoginbyId'] = 'SELECT "login" FROM [sSchemaFramework]."user" WHERE user_id=[user_id]';
+$aSql['getTableColumn'] = 'SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = \'[sSchemaFramework]\' and table_name= \'[sTable]\'';
+$aSql['getUserPrivileges'] = 'SELECT groname FROM pg_user s LEFT OUTER JOIN pg_group g on (s.usesysid = any(g.grolist) )inner join [sSchemaFramework].user on "user".login = usename WHERE user_id = [user_id]';
+$aSql['listDomain'] = 'SELECT distinct domain, alias FROM [sSchemaFramework].domain WHERE "type" = \'AD\'';
+$aSql['createRolname'] = 'CREATE ROLE "vitis_[sDomain]" NOSUPERUSER INHERIT NOCREATEDB CREATEROLE;';
+$aSql['getInfoRolname'] = 'SELECT * FROM pg_catalog.pg_roles WHERE rolname = \'vitis_[sDomain]\'';
+
+?>
\ No newline at end of file
diff --git a/src/module_urbalyon/web_service/ws/template_popup/-2.html b/src/module_urbalyon/web_service/ws/template_popup/-2.html
new file mode 100644
index 0000000000000000000000000000000000000000..8f054c8464eb198c5200bdf1e47f6d601d5ce75b
--- /dev/null
+++ b/src/module_urbalyon/web_service/ws/template_popup/-2.html
@@ -0,0 +1,32 @@
+<p class="text-center mb-0" style="font-weight: bold;font-size: 20px;">Observatoire métropolitain du sport</p>
+<br>
+<p class="text-center mb-0">Cartographies et atlas réalisés avec les données du RES et du Ministère des Sports de février 2019.</p>
+<br>
+Vous pouvez consulter :
+<ul>
+    <li>l'ensemble des équipement sportifs geolocalisés à l'adresse</li>
+    <li>des cartographhies dynamiques des taux d'équipement et de licence par commune et par CTM</li>
+    <li>des fiches détaillées sur las caractéristiques par équipements et des activités sportives pour chaque CTM (PDF)</li>
+    <li>des fiches synthètiques des équipements et des activités sportives pour chaque CTM</li>
+</ul>
+<br>
+<br>
+<p class="text-center mb-0" style="font-style: italic;font-size: 16px;">Cliquer sur le bouton <img height="35" src="images/urbalyon/btn_map_vmap.png"> pour afficher la légende, les cartes, ...</p>
+<p class="text-center mb-0" style="font-style: italic;font-size: 16px;">Utiliser l'outil de sélection pour consulter les données et accéder aux fiches ...</p>
+<br>
+<p class="text-center mb-0" style="font-style: italic;font-size: 19px;color: red;">Cliquer sur "Continuer" pour afficher la carte</p>
+<br>
+<br>
+<div class="row">
+    <div class="col-sm-4">
+        <img height="80" src="images/urbalyon/urbalyon_logo.png">
+    </div>
+    <div class="col-sm-4">
+        <img height="60" src="images/urbalyon/grand_lyon_logo.png">
+    </div>
+    <div class="col-sm-4">
+        <img height="70" src="images/urbalyon/ministere_logo.png">
+    </div>
+</div>
+<br>
+<p style="font-style: italic;font-size: 10px;">V1 septembre 2019</p>
\ No newline at end of file
diff --git a/src/module_urbalyon/web_service/ws/template_popup/28.html b/src/module_urbalyon/web_service/ws/template_popup/28.html
new file mode 100644
index 0000000000000000000000000000000000000000..8f054c8464eb198c5200bdf1e47f6d601d5ce75b
--- /dev/null
+++ b/src/module_urbalyon/web_service/ws/template_popup/28.html
@@ -0,0 +1,32 @@
+<p class="text-center mb-0" style="font-weight: bold;font-size: 20px;">Observatoire métropolitain du sport</p>
+<br>
+<p class="text-center mb-0">Cartographies et atlas réalisés avec les données du RES et du Ministère des Sports de février 2019.</p>
+<br>
+Vous pouvez consulter :
+<ul>
+    <li>l'ensemble des équipement sportifs geolocalisés à l'adresse</li>
+    <li>des cartographhies dynamiques des taux d'équipement et de licence par commune et par CTM</li>
+    <li>des fiches détaillées sur las caractéristiques par équipements et des activités sportives pour chaque CTM (PDF)</li>
+    <li>des fiches synthètiques des équipements et des activités sportives pour chaque CTM</li>
+</ul>
+<br>
+<br>
+<p class="text-center mb-0" style="font-style: italic;font-size: 16px;">Cliquer sur le bouton <img height="35" src="images/urbalyon/btn_map_vmap.png"> pour afficher la légende, les cartes, ...</p>
+<p class="text-center mb-0" style="font-style: italic;font-size: 16px;">Utiliser l'outil de sélection pour consulter les données et accéder aux fiches ...</p>
+<br>
+<p class="text-center mb-0" style="font-style: italic;font-size: 19px;color: red;">Cliquer sur "Continuer" pour afficher la carte</p>
+<br>
+<br>
+<div class="row">
+    <div class="col-sm-4">
+        <img height="80" src="images/urbalyon/urbalyon_logo.png">
+    </div>
+    <div class="col-sm-4">
+        <img height="60" src="images/urbalyon/grand_lyon_logo.png">
+    </div>
+    <div class="col-sm-4">
+        <img height="70" src="images/urbalyon/ministere_logo.png">
+    </div>
+</div>
+<br>
+<p style="font-style: italic;font-size: 10px;">V1 septembre 2019</p>
\ No newline at end of file
diff --git a/src/module_vmap/module/javascript/app/modules/Urbalyon/urbalyonpopup.js b/src/module_vmap/module/javascript/app/modules/Urbalyon/urbalyonpopup.js
index 98f410583d6f352042760d74b3b6b3d96fc0a7b8..c03e7f55b94378d1be28e58dc148d3cdab3cdab6 100644
--- a/src/module_vmap/module/javascript/app/modules/Urbalyon/urbalyonpopup.js
+++ b/src/module_vmap/module/javascript/app/modules/Urbalyon/urbalyonpopup.js
@@ -1,9 +1,44 @@
+
+
 goog.provide('nsVmap.nsUrbalyon.popup');
 
+goog.require('oVmap');
+
 
 // Doc bootboxjs.com/v4.x/documentation.html
 nsVmap.nsUrbalyon.popup=function (map_id) {
 
-    bootbox.alert('id : '+map_id);
+    //console.log(oVmap);
+
+    // récupération du contenu sur le serveur
+    ajaxRequest({
+        "method": "GET",
+        "url": oVmap['properties']['web_server_name'] + "/" + oVmap['properties']['services_alias'] + "/urbalyon/popup/"+ map_id,
+        'async': false,
+        'responseType': '',
+        "success": function (response) {
+            data = JSON.parse(response.data);
+            //console.log(data);
+            if(data.result==1){
+                var dialog = bootbox.dialog({
+                    title: data.title,
+                    message: data.message,
+                    size: 'large',
+                    buttons: {
+                        ok: {
+                            label: "Continuer",
+                            className: 'btn-info',
+                            callback: function(){
+                                console.log('Custom OK clicked');
+                            }
+                        }
+                    }
+                });
+            }else{
+                console.log(data.message);
+            }
+        }
+    });
+
 }
 
diff --git a/src/module_vmap/module/javascript/app/vmap/mapmanager/layerstree.js b/src/module_vmap/module/javascript/app/vmap/mapmanager/layerstree.js
index 248a6c8c508dde1c0ca578301e10aaf7741c7335..ce753f095d9939d8165ffbb0fdce6edd85a14956 100755
--- a/src/module_vmap/module/javascript/app/vmap/mapmanager/layerstree.js
+++ b/src/module_vmap/module/javascript/app/vmap/mapmanager/layerstree.js
@@ -499,7 +499,8 @@ nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.loadTree
         }
     }
 
-    nsVmap.nsUrbalyon.popup(oVmap.getMapManager().oMapCatalog_.usedMap);
+    // urbalyon get popup at init map
+    nsVmap.nsUrbalyon.popup(oVmap.getMapManager().oMapCatalog_.maps[oVmap.getMapManager().oMapCatalog_.usedMap].map_id);
 };
 
 /**
diff --git a/src/vitis/client/images/urbalyon/btn_carte.png b/src/vitis/client/images/urbalyon/btn_carte.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a0c9205e85d7daab44cced0ea1962744f908e55
Binary files /dev/null and b/src/vitis/client/images/urbalyon/btn_carte.png differ
diff --git a/src/vitis/client/images/urbalyon/btn_map_vmap.png b/src/vitis/client/images/urbalyon/btn_map_vmap.png
new file mode 100644
index 0000000000000000000000000000000000000000..b0cf73f8118a870adacb1ce2503f14852e546c40
Binary files /dev/null and b/src/vitis/client/images/urbalyon/btn_map_vmap.png differ
diff --git a/src/vitis/client/images/urbalyon/grand_lyon_logo.png b/src/vitis/client/images/urbalyon/grand_lyon_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ecc936312a5c68eef586224b011b81ddc58adae
Binary files /dev/null and b/src/vitis/client/images/urbalyon/grand_lyon_logo.png differ
diff --git a/src/vitis/client/images/urbalyon/map_vieux_1.png b/src/vitis/client/images/urbalyon/map_vieux_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..0829c0065bfcc0d2b1712df16e3332062ce11fc6
Binary files /dev/null and b/src/vitis/client/images/urbalyon/map_vieux_1.png differ
diff --git a/src/vitis/client/images/urbalyon/map_vieux_2.png b/src/vitis/client/images/urbalyon/map_vieux_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..105fa9c947b76d79d6eabd931bc0a89da2600a21
Binary files /dev/null and b/src/vitis/client/images/urbalyon/map_vieux_2.png differ
diff --git a/src/vitis/client/images/urbalyon/map_vieux_3.png b/src/vitis/client/images/urbalyon/map_vieux_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..cc5be08d0c16bbb04f0f31d677653fe2f8eb6bc2
Binary files /dev/null and b/src/vitis/client/images/urbalyon/map_vieux_3.png differ
diff --git a/src/vitis/client/images/urbalyon/ministere_logo.png b/src/vitis/client/images/urbalyon/ministere_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..e6e7f278a8c9eb5be8ce611520908f86aa259bc3
Binary files /dev/null and b/src/vitis/client/images/urbalyon/ministere_logo.png differ
diff --git a/src/vitis/client/images/urbalyon/observa_metropo_sport.png b/src/vitis/client/images/urbalyon/observa_metropo_sport.png
new file mode 100644
index 0000000000000000000000000000000000000000..52593558f65b8e4675bb396c9136dc04417167d5
Binary files /dev/null and b/src/vitis/client/images/urbalyon/observa_metropo_sport.png differ
diff --git a/src/vitis/client/images/urbalyon/urbalyon_logo.png b/src/vitis/client/images/urbalyon/urbalyon_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..bb6f1787ae8cbb79e536c4702f0f45b77ab3c5be
Binary files /dev/null and b/src/vitis/client/images/urbalyon/urbalyon_logo.png differ