diff --git a/src/ClassCodeBundle/Controller/StructureController.php b/src/ClassCodeBundle/Controller/StructureController.php
index 192a0fb37373e6f55733fd061b3fe045f2cae28f..db6b7662e256387e814025285d2350ac0abe7c7f 100644
--- a/src/ClassCodeBundle/Controller/StructureController.php
+++ b/src/ClassCodeBundle/Controller/StructureController.php
@@ -17,7 +17,11 @@ class StructureController extends Controller
   public function indexAction(Request $request)
   {
     $em = $this->getDoctrine()->getManager();
-    $structures =  $em->getRepository('ClassCodeBundle:Structure')->findAll(); 
+    //$structures =  $em->getRepository('ClassCodeBundle:Structure')->findAll();
+    $structures =  $em->getRepository('ClassCodeBundle:Structure')->findby(
+      array('mainType' => 'Partenaire ClassCode')
+    );
+     
     $format = $request->getRequestFormat(); 
     
     return $this->render('@ClassCode/Structure/list.'.$format.'.twig', array(
@@ -25,6 +29,22 @@ class StructureController extends Controller
     ));
   }
   
+  /**
+   * @Route("/structuresmap.{_format}", name="structuresmappage",defaults={"_format"="html"},requirements={"_format"="html|json"}))
+   */
+  public function structureMapAction(Request $request)
+  {
+    $em = $this->getDoctrine()->getManager();
+    $structures =  $em->getRepository('ClassCodeBundle:Structure')->findAll();
+   
+     
+    $format = $request->getRequestFormat(); 
+    
+    return $this->render('@ClassCode/Structure/listAll.'.$format.'.twig', array(
+      'structures' => $structures,
+    ));
+  }
+  
   /**
    * @Route("/createstructure", name="structure_create")
    */
diff --git a/src/ClassCodeBundle/Entity/Structure.php b/src/ClassCodeBundle/Entity/Structure.php
index fea1cbb8d96c8f7eaadb84904f92924d225b6244..64cedaecc0548ba668a1858cdf1d3413c7a06d27 100644
--- a/src/ClassCodeBundle/Entity/Structure.php
+++ b/src/ClassCodeBundle/Entity/Structure.php
@@ -97,6 +97,20 @@ class Structure
      */
     private $longitude;
     
+    /**
+     * @var string $mainType
+     *
+     * @ORM\Column(name="mainType", type="string", length=255)
+     */
+    private $mainType = 'Partenaire ClassCode';
+    
+    /**
+     * @var string $dataSource
+     *
+     * @ORM\Column(name="dataSource", type="string", length=255)
+     */
+    private $dataSource = "web";
+    
     /**
      * @var \DateTime $updated_at
      *
@@ -107,7 +121,7 @@ class Structure
     /**
      * @var string $updated_by
      *
-     * @ORM\Column(name="updated_by", type="text",  type="string", length=255, nullable=true)
+     * @ORM\Column(name="updated_by", type="string", length=255, nullable=true)
      */
     private $updated_by;
     
@@ -303,6 +317,51 @@ class Structure
       return $this->longitude;
     }    
     
+    /**
+     * Set mainType
+     *
+     * @param string $mainType
+     * @return Structure
+     */
+    public function setMainType($mainType)
+    {
+        $this->mainType = $mainType;
+    
+        return $this;
+    }
+
+    /**
+     * Get mainType
+     *
+     * @return string 
+     */
+    public function getMainType()
+    {
+        return $this->mainType;
+    }
+    
+    /**
+     * Set dataSource
+     *
+     * @param string $dataSource
+     * @return Structure
+     */
+    public function setDataSource($dataSource)
+    {
+        $this->dataSource = $dataSource;
+    
+        return $this;
+    }
+
+    /**
+     * Get dataSource
+     *
+     * @return string 
+     */
+    public function getDataSource()
+    {
+        return $this->dataSource;
+    }
     
     /**
      * Set updated_at
diff --git a/src/ClassCodeBundle/Resources/translations/messages.fr.yml b/src/ClassCodeBundle/Resources/translations/messages.fr.yml
index bec568bd162a040ae55359ba8970e9edc3485adc..d128d1bb95f8e1309cc84b62047349f692ac5485 100644
--- a/src/ClassCodeBundle/Resources/translations/messages.fr.yml
+++ b/src/ClassCodeBundle/Resources/translations/messages.fr.yml
@@ -120,3 +120,4 @@
 'success.peopleEdited' : "Profile edité"
 'error.meetingnotfound' : "La rencontre n'a pas été trouvée"
 'error.missingparameter' : "Un paramètre obligatoire est manquant"
+'Map' : "Carte des structures en lien avec l'enseignement ou la médiation des sciences du numérique"
diff --git a/src/ClassCodeBundle/Resources/views/Structure/listAll.html.twig b/src/ClassCodeBundle/Resources/views/Structure/listAll.html.twig
new file mode 100644
index 0000000000000000000000000000000000000000..91312e529873633283c0f1c4855038e64a45c8fd
--- /dev/null
+++ b/src/ClassCodeBundle/Resources/views/Structure/listAll.html.twig
@@ -0,0 +1,166 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+  <!-- Balise pour le rendu smartphone -->
+  <meta name="viewport" content="width= device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <title>{{ 'Map' | trans }}</title>
+  <!-- JQuery UI CSS-->
+  <link href="{{ asset('js/jquery-ui/1.10.4/themes/base/jquery-ui.css') }}" rel="stylesheet" type="text/css" />  
+  <!-- Font Awesome -->
+  <link href="{{ asset('fontawesome/css/fontawesome-all.min.css') }}" rel="stylesheet" media="all" />
+  <!-- Bootstrap 3.1.1 CSS -->
+  <link href="{{ asset('bootstrap 3.1.1/dist/css/bootstrap.min.css') }}" rel="stylesheet" type="text/css" />
+  <link href="{{ asset('bootstrap 3.1.1/dist/css/bootstrap-theme.css') }}" rel="stylesheet" type="text/css" />
+  <link href="{{ asset('bootstrap 3.1.1/docs/assets/css/docs.css') }}" rel="stylesheet" type="text/css" />
+  <!-- main css -->
+  <link rel="stylesheet" href="{{ asset('css/classcodeadmin.css') }}" />
+  <!-- Open Street Map css -->        
+  <link rel="stylesheet" href="{{ asset('js/leaflet-1.3.1/leaflet.css') }}" />
+  <link rel="stylesheet" href="{{ asset('js/leaflet-1.3.1/plugins/leaflet.markercluster-1.3.0/dist/MarkerCluster.Default.css') }}" />        
+  <link rel="shortcut icon" href="{{ asset('images/pixee-rouge-all.png') }}" />
+</head>
+
+<body>
+  <div id="classcodeadmin_content" class="col-md-12" style="display:none;">
+    <div class="col-sm-12 map-wrapper">
+      <div id="structuresMap" class="osMap" style="height:400px;"></div>
+      <div id="classCodeMapOverlay">     
+        <div id="classCodeMapOverlayTitle">           
+          <span id="classCodeMapOverlayTitleContent">Retour</span>
+          <a id="classCodeMapOverlayTitleLink" class="backCriteriaLink">
+            <span class="returnIcon"></span>
+          </a>
+        </div>
+        <div id="classCodeMapOverlayContent">   
+        </div>  
+      </div>           
+    </div>
+  </div>
+ 
+  <div id="loader">
+    <img src="{{ commons_url }}/images/pictos/loading_40.gif" alt="{{ 'Loading'|trans }}" title="{{ 'Loading'|trans }}">
+  </div> 
+
+  <!-- JQuery UI JS-->
+  <script src="{{ asset('js/jquery/1.11.0/jquery-1.11.0.js') }}" type="text/javascript"></script>
+  <script src="{{ asset('js/jquery/1.8.2/plugin/jquery-json/jquery.json-2.4.js') }}" type="text/javascript"></script>
+  <!-- JQuery UI JS-->
+  <script src="{{ asset('js/jquery-ui/1.10.4/ui/jquery-ui.js') }}" type="text/javascript"></script>
+  <!-- Bootstrap 3.1.1 JS -->
+  <script src="{{ asset('bootstrap 3.1.1/dist/js/bootstrap.min.js') }}" type="text/javascript"></script>
+  <!-- OSM JS -->
+  <script type="text/javascript" src="{{ asset('js/leaflet-1.3.1/leaflet.js') }}"></script> 
+  <script type="text/javascript" src="{{ asset('js/leaflet-1.3.1/plugins/leaflet.markercluster-1.3.0/dist/leaflet.markercluster.js') }}"></script>
+  <script>
+    var overlayShown = false;
+    var lastSelectedMarker = false;
+    $(document).ready(function() {    
+      $('#loader').hide();
+      $('#classcodeadmin_content').show();
+      //map
+      var structureMap = L.map('structuresMap',{maxZoom: 18}).setView([46.52863469527167, 2.43896484375], 5),
+          markers = L.markerClusterGroup({
+                spiderfyOnMaxZoom: true,
+                showCoverageOnHover: false,
+                zoomToBoundsOnClick: true,
+                polygonOptions: {
+                    fillColor: '#FFFFFF',
+                    color: '#FFFFFF',
+                    weight: 0.5,
+                    opacity: 1,
+                    fillOpacity: 0.5
+                    }
+            }),
+            lat = "",
+            lon = "",
+            LeafIcon = L.Icon.extend({
+                options: {
+                    iconSize:     [38, 95],
+                    shadowSize:   [50, 64],
+                    iconAnchor:   [22, 94],
+                    shadowAnchor: [4, 62],
+                    popupAnchor:  [-3, -76]
+                }
+            });
+            
+      var markerDetail = "";
+      var lat;
+      var lon;
+      var structureArrayMarker = [];
+      var structureContentString = '';
+      {% for structure in structures %} 
+        lat = "{{ structure.getLatitude }}" ;
+        lon = "{{ structure.getLongitude }}" ;
+        structureContentString= '';
+        structureLogo = "{{ structure.getLogo }}";
+        if(structureLogo != ""){
+          structureContentString = '<div class="classCodeMapOverlayContentLogo"><img src="'+structureLogo+'"></div>';
+        }       
+        structureContentString +=  '<br>';
+        structureWho = "{{ structure.getWho }}";
+        if (structureWho != ""){
+          structureContentString+=  '<div class="classCodeMapOverlayContentTitle">Contact</div><div class="classCodeMapOverlayEmphasis"><b>'+structureWho+'</b></div>';
+        }
+        structureAddress = "{{ structure.getAddress }}";
+        if (structureAddress != ""){
+          structureContentString+=  '<div>'+structureAddress+'</div>';
+        }
+        structureEmail = "{{ structure.getEmail }}";
+        if (structureEmail != ""){
+          structureContentString+=  '<div><a href="mailto:'+structureEmail+'" target="_blank">'+structureEmail+'</a></div>';
+        }
+        structureUrl = "{{ structure.getUrl }}";
+        if(structureUrl != ""){
+          structureContentString+=  '<div><a target="_blank" href="'+structureUrl+'">'+structureUrl+'</a></div>';
+        }
+        
+        if((lat !="0")&&(lon != "0")){      
+          structureArrayMarker[{{ loop.index0 }}] = L.marker(L.latLng(lat, lon), { title: '{{ structure.getName }}', id: '{{ loop.index0 }}', desc: structureContentString } );
+          markers.addLayer(structureArrayMarker[{{ loop.index0 }}]);
+          structureArrayMarker[{{ loop.index0 }}].on('click',function(event){clickMarker(this,structureMap);});     
+        }
+      {% endfor %}
+      structureMap.addLayer(markers);
+      L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
+        maxZoom: 18,
+        attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
+      }).addTo(structureMap);
+      
+    });
+    
+    function clickMarker(marker,map){
+      var overlay = document.getElementById('classCodeMapOverlay');
+      var overlayTitle = document.getElementById('classCodeMapOverlayTitleContent');
+      var overlayContent = document.getElementById('classCodeMapOverlayContent');
+      if (!overlayShown) {
+        overlayTitle.innerHTML = marker.options.title;
+        overlayContent.innerHTML = marker.options.desc;
+        
+        jQuery("#classCodeMapOverlay").toggle("slow");
+        overlayShown = marker.options.id;
+        lastSelectedMarker = marker.options.id;
+      }else {
+        if (overlayShown != marker.options.id) {
+          overlayTitle.innerHTML = marker.options.title;
+          overlayContent.innerHTML = marker.options.desc;
+   
+          overlayShown = marker.options.id;
+          lastSelectedMarker = marker.options.id;
+        }else{
+          hideMapOverlay();
+        }
+      }
+      //on centre la map sur le marker
+      map.panTo(marker.getLatLng());
+    }
+    
+    function hideMapOverlay(){
+      jQuery("#classCodeMapOverlay").toggle("slow");
+      overlayShown = false;
+      return false;
+    }
+  </script>
+</body>
+</html> 
\ No newline at end of file
diff --git a/src/ClassCodeBundle/Resources/views/Structure/listAll.json.twig b/src/ClassCodeBundle/Resources/views/Structure/listAll.json.twig
new file mode 100644
index 0000000000000000000000000000000000000000..84bc8777dc5d61ee6ddbe9ffc1e8476644f59628
--- /dev/null
+++ b/src/ClassCodeBundle/Resources/views/Structure/listAll.json.twig
@@ -0,0 +1,19 @@
+{ "structures":[ 
+  {% for structure in structures %}  
+    {
+      "type" : "{{ structure.getMainType }}" ,
+      "name" : "{{ structure.getName }}" ,
+      "logo" : "{{ structure.getLogo }}",
+      "url" : "{{ structure.getUrl }}",
+      "who" : "{{ structure.getWho }}",
+      "address" : "{{ structure.getAddress }}",
+      "location" : { "lat" : "{{structure.getLatitude }}" , "lng" :"{{ structure.getLongitude}}" },
+      "email" : "{{structure.getEmail }}"
+      "source" : "{{structure.getDataSource }}"
+    }
+    {% if loop.last == false %}
+    ,
+    {% endif %}
+  {% endfor %} 
+]
+}