diff --git a/FEATURES/78660 b/FEATURES/78660
new file mode 100644
index 0000000000000000000000000000000000000000..61a84821e1ef821c4cd5ee6e3262b7aa67a98354
--- /dev/null
+++ b/FEATURES/78660
@@ -0,0 +1,10 @@
+        '78660' =>
+            ['Label' => $this->_('Numel'),
+             'Desc' => $this->_('Ajout de la ressource numérique Numel. Cette ressource moissonne le fond patrimonial de Melun'),
+             'Image' => '',
+             'Video' => '',
+             'Category' => $this->_('Ressources numériques'),
+             'Right' => function($feature_description, $user) {return true;},
+             'Wiki' => 'http://wiki.bokeh-library-portal.org/index.php/Numel',
+             'Test' => '',
+             'Date' => '2018-09-11'],
\ No newline at end of file
diff --git a/VERSIONS_WIP/78660 b/VERSIONS_WIP/78660
new file mode 100644
index 0000000000000000000000000000000000000000..faafc6ba5e2d0a646e58e13a861d41360f394e76
--- /dev/null
+++ b/VERSIONS_WIP/78660
@@ -0,0 +1,2 @@
+ - ticket #78660 : Bibliothèque numérique : ajout de la ressource numérique Numel.
+ 
\ No newline at end of file
diff --git a/library/Class/Album.php b/library/Class/Album.php
index 77f8dd5bee6f822daaed37f533ead29756798f0e..00327be53a755aa1122ed5b7648c1cf989664eb6 100644
--- a/library/Class/Album.php
+++ b/library/Class/Album.php
@@ -54,6 +54,10 @@
  */
 
 class AlbumLoader extends Storm_Model_Loader {
+
+  use Trait_MemoryCleaner;
+
+
   public function getItemsOf($categoryId) {
     return Class_Album::findAllBy([
                                    'cat_id' => Class_AlbumCategorie::getAllCatAndSubCat([$categoryId]),
@@ -61,6 +65,23 @@ class AlbumLoader extends Storm_Model_Loader {
                                    'limit' => 1000
                                    ]);
   }
+
+
+  public function findFirstWithPosterBy($params) {
+    while($albums = Class_Album::findAllBy(array_merge($params,
+                                                       ['limitPage'=> [($page = 1), 100]]))) {
+
+      if ($album = (new Storm_Model_Collection($albums))
+        ->detect(function($model)
+                 {
+                   return $model->hasPoster();
+                 }))
+        return $album;
+
+      $this->_cleanMemory();
+      $page++;
+    }
+  }
 }
 
 
diff --git a/library/Class/Batch/BuildSiteMap.php b/library/Class/Batch/BuildSiteMap.php
index 8f968a535f601025ef18e05e6247ab3945819d48..88ac67a32f106c8f8d99866506d1585e73141e0a 100644
--- a/library/Class/Batch/BuildSiteMap.php
+++ b/library/Class/Batch/BuildSiteMap.php
@@ -29,7 +29,6 @@ class Class_Batch_BuildSiteMap extends Class_Batch_Abstract {
 
 
   public function run() {
-    xdebug_break();
     $sitemap = new Class_Sitemap();
     $profiles = $this->sitemapProfiles();
 
diff --git a/library/Class/DigitalResource/Config.php b/library/Class/DigitalResource/Config.php
index c79929972c2ceb20004e20be86c1bbad23c0ac1d..a6e819cee89b63899c0d68cdb128017c1e170d99 100644
--- a/library/Class/DigitalResource/Config.php
+++ b/library/Class/DigitalResource/Config.php
@@ -86,6 +86,11 @@ class Class_DigitalResource_Config extends Class_Entity {
   }
 
 
+  public function isHarvestingEnabled() {
+    return Class_Batch::findFirstBy(['type' => $this->getBatch()]);
+  }
+
+
   public function getDashboardUrl() {
     return Class_Url::absolute(['module' => $this->getModuleName()],
                                null,
@@ -278,6 +283,11 @@ class Class_DigitalResource_Config extends Class_Entity {
   }
 
 
+  public function countAlbums() {
+    return Class_Album::countBy(['type_doc_id' => $this->getDocType()]);
+  }
+
+
   public function getHarvestUrl($page = 1) {
     return '';
   }
diff --git a/library/Class/DigitalResource/Controller.php b/library/Class/DigitalResource/Controller.php
index cc8415c8618cae9c19beb732a3b8af982ea770bf..305e608324061ae569d7ee667d3f3d36ca8aa604 100644
--- a/library/Class/DigitalResource/Controller.php
+++ b/library/Class/DigitalResource/Controller.php
@@ -51,9 +51,7 @@ class Class_DigitalResource_Controller extends ZendAfi_Controller_Action {
     if(!$user = Class_Users::getIdentity())
       return $this->_afterLoginRedirectTo($this->view->absoluteUrl(),
                                           $this->_('Vous devez vous connecter pour accéder à cette page'));
-
     $url = $this->_config->urlFor($user, $this->_request->getParams());
-
     return $url
       ? $this->_javascriptRedirectTo($url)
       : $this->_redirectToIndex($this->_config->getNotAllowedMessage());
diff --git a/library/Class/Testing/HttpResponse.php b/library/Class/Testing/HttpResponse.php
new file mode 100644
index 0000000000000000000000000000000000000000..847aed641423fbd5121f85781bcac3e292836117
--- /dev/null
+++ b/library/Class/Testing/HttpResponse.php
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Class_Testing_HttpResponse extends Class_Entity {
+  public function isSuccessful() {
+    return true;
+  }
+}
\ No newline at end of file
diff --git a/library/Class/WebService/Abstract.php b/library/Class/WebService/Abstract.php
index bec5e5f1f3eebee9f73d4cb076285e24fa8b4be9..ab848cf14d10e4a849544ed561c85a71c1f1852f 100644
--- a/library/Class/WebService/Abstract.php
+++ b/library/Class/WebService/Abstract.php
@@ -36,9 +36,8 @@ class Class_WebService_Abstract {
 
 
   public static function getHttpClient() {
-    if (static::$_http_client==null ||  !isset(static::$_http_client)) {
+    if (static::$_http_client==null ||  !isset(static::$_http_client))
       static::$_http_client = new Class_WebService_SimpleWebClient();
-    }
 
     return  static::$_http_client;
   }
@@ -53,4 +52,23 @@ class Class_WebService_Abstract {
     $params = array_filter([$url,$options]);
     return call_user_func_array([$this->getHttpClient(),'open_url'],$params); // avoid mocking of 2nd parameters
   }
+
+
+  public function httpGetResponse($url, $options= []) {
+    $params = array_filter([$url,$options]);
+    return call_user_func_array([$this->getHttpClient(), 'getResponse'], $params); // avoid mocking of 2nd parameters
+  }
+
+
+  public function httpTypeFrom($response, $filter=[]) {
+    if (!$content_type = $response->getHeader('Content-Type'))
+      return;
+
+    $parts = explode('/', current(explode(';', $content_type)));
+    if (!$filter)
+      return $parts[1];
+
+    if (in_array(current($parts), $filter))
+      return $parts[1];
+  }
 }
\ No newline at end of file
diff --git a/library/Class/WebService/BibNumerique/Dilicom/Book.php b/library/Class/WebService/BibNumerique/Dilicom/Book.php
index 82a7c2741c5d8eaec054275343cd3f62c7185da6..02db28f52f91e16b2b8952aed6b2b1be56d4748c 100644
--- a/library/Class/WebService/BibNumerique/Dilicom/Book.php
+++ b/library/Class/WebService/BibNumerique/Dilicom/Book.php
@@ -27,7 +27,6 @@ class Class_WebService_BibNumerique_Dilicom_Book extends Class_WebService_BibNum
     $_subtitle,
     $_order_line_id,
     $_order_date,
-    $_collections = [],
     $_items = [],
     $_usage_constraints = [];
 
@@ -65,7 +64,6 @@ class Class_WebService_BibNumerique_Dilicom_Book extends Class_WebService_BibNum
       ->addEditor($this->getEditeur())
       ->setDroits($this->_('Tous droits réservés'))
       ->setItems($this->_items);
-    array_map([$album, 'addCollection'], $this->_collections);
   }
 
 
diff --git a/library/Class/WebService/BibNumerique/RessourceNumerique.php b/library/Class/WebService/BibNumerique/RessourceNumerique.php
index e9248fb6aa535902790dc09e2608c3c23efdb4cc..0819fc45e88fff6071c54cdac0d2cbc7dab1679e 100644
--- a/library/Class/WebService/BibNumerique/RessourceNumerique.php
+++ b/library/Class/WebService/BibNumerique/RessourceNumerique.php
@@ -27,6 +27,9 @@ class Class_WebService_BibNumerique_RessourceNumerique {
 
   protected
     $_id,
+    $_base_url,
+    $_collections = [],
+    $_cote,
     $_title,
     $_subtitle,
     $_description,
@@ -78,6 +81,12 @@ class Class_WebService_BibNumerique_RessourceNumerique {
   }
 
 
+  public function setBaseUrl($url) {
+    $this->_base_url = $url;
+    return $this;
+  }
+
+
   public function setExternalUri($uri) {
     $this->_external_uri = $uri;
     return $this;
@@ -259,6 +268,12 @@ class Class_WebService_BibNumerique_RessourceNumerique {
   }
 
 
+  protected function _importCollections($album) {
+    array_map([$album, 'addCollection'], $this->_collections);
+    return $this;
+  }
+
+
   public function importMatieres($album) {
     $ids = [];
     foreach (array_filter($this->_matieres) as $label)
@@ -267,6 +282,8 @@ class Class_WebService_BibNumerique_RessourceNumerique {
 
     if ($ids)
       $album->setMatiere(implode(';',$ids));
+
+    return $this;
   }
 
 
@@ -344,6 +361,8 @@ class Class_WebService_BibNumerique_RessourceNumerique {
 
     $this->importMatieres($album);
 
+    $this->_importCollections($album);
+
     $this->fillAlbum($album);
 
     $this->fillAlbumTypeDoc($album);
@@ -458,8 +477,24 @@ class Class_WebService_BibNumerique_RessourceNumerique {
     return $this->_is_deleted;
   }
 
+
   public function setDeleted($is_deleted=true) {
     $this->_is_deleted = $is_deleted;
     return $this;
   }
+
+
+  public function addCollection($collection) {
+    if (! $data = trim($collection))
+      return $this;
+
+    $this->_collections []= $data;
+    return $this;
+  }
+
+
+  public function setCote($data) {
+    $this->_cote = $data;
+    return $this;
+  }
 }
diff --git a/library/Class/WebService/BibNumerique/Vignette.php b/library/Class/WebService/BibNumerique/Vignette.php
index f663be676c9a3f80023632e825eea8ce56aa4021..0857da8d1578fd52330841de4fa39e49b53efc41 100644
--- a/library/Class/WebService/BibNumerique/Vignette.php
+++ b/library/Class/WebService/BibNumerique/Vignette.php
@@ -80,12 +80,11 @@ class Class_WebService_BibNumerique_Vignette extends Class_WebService_Abstract {
       return;
     }
 
-    if (!$poster = $this->httpGet($url)) {
-      $this->getLogger()->log($this->_('Impossible de télécharger l\'image "%s" sur le serveur', $url));
-      return;
-    }
+    $response = $this->httpGetResponse($url);
+    if (!$response->isSuccessful() || (!$poster = $response->getBody()))
+      return $this->getLogger()->log($this->_('Impossible de télécharger l\'image "%s" sur le serveur', $url));
 
-    if(!$filename = $this->_initFilename($url, $poster, $album))
+    if(!$filename = $this->_initFilename($url, $poster, $album, $response))
       return;
 
     $album->setUploadMover('fichier', $this->_upload_mover);
@@ -102,10 +101,17 @@ class Class_WebService_BibNumerique_Vignette extends Class_WebService_Abstract {
   }
 
 
-  protected function _initFilename($url, $poster, $album) {
-    $parts = explode('/', $url);
-    $filename = array_pop($parts);
-    $filename = $this->_formatFilename($filename, $album);
+  protected function _initFilename($url, $poster, $album, $response) {
+    $filename = ($type = $this->httpTypeFrom($response, ['image']))
+      ? md5($url) . '.' . $type
+      : null;
+
+    if (!$filename) {
+      $parts = explode('/', $url);
+      $filename = array_pop($parts);
+      $filename = $this->_formatFilename($filename, $album);
+    }
+
     $temp_name = PATH_TEMP . $filename;
 
     if (false === $this->getFileWriter()->putContents($temp_name, $poster)) {
diff --git a/library/Class/WebService/SimpleWebClient.php b/library/Class/WebService/SimpleWebClient.php
index 1e0774569b1a9f182a6e0739d582f61f86a870de..5ec8ffc117230e3f8539a530c83e639aef7172f5 100644
--- a/library/Class/WebService/SimpleWebClient.php
+++ b/library/Class/WebService/SimpleWebClient.php
@@ -32,6 +32,11 @@ class Class_WebService_SimpleWebClient {
 
 
   public function open_url($url,$options = []) {
+    return $this->getResponse($url, $options)->getBody();
+  }
+
+
+  public function getResponse($url, $options=[]) {
     $httpClient = $this->getHttpClient();
 
     if (isset($options['headers']))
@@ -41,7 +46,7 @@ class Class_WebService_SimpleWebClient {
 
     $httpClient->setMethod(Zend_Http_Client::GET);
     $httpClient->setUri($url);
-    return $httpClient->request()->getBody();
+    return $httpClient->request();
   }
 
 
diff --git a/library/ZendAfi/Controller/Action/Helper/ListViewMode/Album.php b/library/ZendAfi/Controller/Action/Helper/ListViewMode/Album.php
index 183007782cef401f1e380481436906ca5a1f9b6e..15e7732c2be398a1a453286cc4325af387e84583 100644
--- a/library/ZendAfi/Controller/Action/Helper/ListViewMode/Album.php
+++ b/library/ZendAfi/Controller/Action/Helper/ListViewMode/Album.php
@@ -138,4 +138,10 @@ class ZendAfi_Controller_Action_Helper_ListViewMode_Album extends ZendAfi_Contro
   public function getStrategyLabel() {
     return 'album';
   }
+
+
+  protected function getSearchColumns() {
+    return ['titre',
+            'type_doc_id'];
+  }
 }
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/BaseHelper.php b/library/ZendAfi/View/Helper/BaseHelper.php
index c03ffb0280c133a9e1bf6066f0c70903650089a4..884a7eb2e02a133aa3d19b47b7677f5cd1b84513 100644
--- a/library/ZendAfi/View/Helper/BaseHelper.php
+++ b/library/ZendAfi/View/Helper/BaseHelper.php
@@ -53,17 +53,22 @@ class ZendAfi_View_Helper_BaseHelper extends Zend_View_Helper_HtmlElement {
   }
 
 
+  protected function _tagPre() {
+    return call_user_func_array([$this->view, 'tagPre'], func_get_args());
+  }
+
+
   protected function _tagError($message) {
-    return $this->view->tagError($message);
+    return call_user_func_array([$this->view, 'tagError'], func_get_args());
   }
 
 
   protected function _tagNotice($message) {
-    return $this->view->tagNotice($message);
+    return call_user_func_array([$this->view, 'tagNotice'], func_get_args());
   }
 
 
   protected function _tagWarning($message) {
-    return $this->view->tagWarning($message);
+    return call_user_func_array([$this->view, 'tagWarning'], func_get_args());
   }
 }
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/DigitalResource/Dashboard/Harvest.php b/library/ZendAfi/View/Helper/DigitalResource/Dashboard/Harvest.php
index ac0690faab7d467d9233c2fecd76f01e8e9fb8bd..4f1fff36495db85c4c8a9c71b16e8dcd15089d3b 100644
--- a/library/ZendAfi/View/Helper/DigitalResource/Dashboard/Harvest.php
+++ b/library/ZendAfi/View/Helper/DigitalResource/Dashboard/Harvest.php
@@ -31,12 +31,8 @@ class ZendAfi_View_Helper_DigitalResource_Dashboard_Harvest extends ZendAfi_View
       return implode($html);
     }
 
-    if (!$config->isEnabled()) {
-      $html [] = $this->_tagWarning($this->_('Veuillez activer la ressource pour pouvoir gérer le moissonage'));
-      return implode($html);
-    }
-
     $html [] = $this->_getBatchHtml($config);
+
     $html [] = $this->_getHarvestHtml($config);
 
     $html [] = $this->_tag('h4',
@@ -63,16 +59,23 @@ class ZendAfi_View_Helper_DigitalResource_Dashboard_Harvest extends ZendAfi_View
       return $this->_tag('p', $this->_('Vignette de l\'album : '
                                        . $this->view->tagImg(Class_Url::absolute($album->getThumbnailUrl()))));
 
-    return $this->_tag('p', implode(BR, $errors), ['class' => 'error']);
+    return $this->_tagError(implode(BR, $errors));
   }
 
 
   protected function _getBatchHtml($config) {
     $batch_name = $config->getBatch();
-    if(!$batch = Class_Batch::findFirstBy(['type' => $batch_name]))
+
+    if(!$batch = $config->isHarvestingEnabled())
       return implode([$this->_tagWarning($this->_('Le moissonnage n\'est pas programmé')),
                       $this->view->button((new Class_Entity())
                                           ->setText($this->_('Activer le moissonnage'))
+                                          ->setAttribs(array_filter(['title' => $config->isEnabled()
+                                                                     ? $this->_('Activer le moissonnage')
+                                                                     : $this->_('Veuillez activer la ressource pour pouvoir activer le moissonnage.'),
+                                                                     'disabled' => $config->isEnabled()
+                                                                     ? ''
+                                                                     : 'disabled']))
                                           ->setUrl($this->view->absoluteUrl(['module' => 'admin',
                                                                              'controller' => 'batch',
                                                                              'action' => 'activate',
@@ -143,32 +146,37 @@ class ZendAfi_View_Helper_DigitalResource_Dashboard_Harvest extends ZendAfi_View
     return ($url = $config->getHarvestUrl())
       ? ($this->_tag('h4',
                      $this->_('URL de moissonnage générée pour la première page'))
-         . $this->_tag('pre', $url))
+         . $this->_tagPre($url))
       : $this->_tagNotice($this->_('Cette ressource ne prend pas en charge l\'affichage de l\'url de moissonnage'));
   }
 
 
   protected function _getAlbumsHtml($config) {
-    if(!$count = Class_Album::countBy(['type_doc_id' => $config->getDocType()]))
+    if(!$count = $config->countAlbums())
       return $this->_tagWarning($this->_('Aucun album présent pour cette ressource'));
 
-    $first_album = Class_Album::findFirstBy(['type_doc_id' => $config->getDocType(),
-                                             'order' => 'titre asc']);
-
     $albums_link = $this->_tagAnchor($this->view->absoluteUrl(['module' => 'admin',
                                                                'controller' => 'album',
                                                                'action' => 'index',
-                                                               'cat_id' => $first_album->getRootCategoryId()], null, true),
+                                                               'title_search' => $config->getDocType()], null, true),
                                      $this->_('Voir les albums'),
                                      ['target' => '_blank']);
 
     return implode([$this->_tag('h4',
                                 $this->_('Nombre d\'albums présents dans Bokeh : %d', $count)),
                     $albums_link,
-                    $this->_tag('h4',
+                    $this->_thumbnailing($config)]);
+  }
+
+
+  protected function _thumbnailing($config) {
+    if (!$first_album = Class_Album::findFirstWithPosterBy(['type_doc_id' => $config->getDocType(),
+                                                            'order' => 'titre asc']))
+      return '';
+
+    return implode([$this->_tag('h4',
                                 $this->_('Tentative de vignettage de l\'album "%s" : ', $first_album->getTitre())),
-                    $this->_tag('pre',
-                                $this->_('Image source : %s', $first_album->getPoster())),
+                    $this->_tagPre($this->_('Image source : %s', $first_album->getPoster())),
                     $this->_renderThumbnailerLog($first_album)]);
   }
 
diff --git a/library/ZendAfi/View/Helper/DigitalResource/Dashboard/SSO.php b/library/ZendAfi/View/Helper/DigitalResource/Dashboard/SSO.php
index 097e80aec6cd1dc73987485e8e3783061e749cc4..92e7ec14541374698235084d32cb889560dc31aa 100644
--- a/library/ZendAfi/View/Helper/DigitalResource/Dashboard/SSO.php
+++ b/library/ZendAfi/View/Helper/DigitalResource/Dashboard/SSO.php
@@ -25,7 +25,7 @@ class ZendAfi_View_Helper_DigitalResource_Dashboard_SSO extends ZendAfi_View_Hel
     $html = [$this->_tag('h3', $this->_('Diagnostic SSO'))];
 
     if(!$config->getSsoAction()) {
-      $html [] = $this->_tag('p', $this->_('Cette ressource ne prend pas en charge la connexion SSO'), ['class' => 'error']) ;
+      $html [] = $this->_tagNotice($this->_('Cette ressource ne prend pas en charge la connexion SSO')) ;
       return implode($html);
     }
 
diff --git a/library/ZendAfi/View/Helper/DigitalResource/Dashboard/Status.php b/library/ZendAfi/View/Helper/DigitalResource/Dashboard/Status.php
index da5b4e7bd836558c494345063957ec30ed027f2f..be065d7f17949858b831ff8a974c10743975d9c0 100644
--- a/library/ZendAfi/View/Helper/DigitalResource/Dashboard/Status.php
+++ b/library/ZendAfi/View/Helper/DigitalResource/Dashboard/Status.php
@@ -57,7 +57,7 @@ class ZendAfi_View_Helper_DigitalResource_Dashboard_Status extends ZendAfi_View_
     $label = $this->_('Moissonnage désactivé');
     $class = 'digital_connectors_status';
 
-    if (Class_Batch::findFirstBy(['type' => $batch])) {
+    if ($this->_config->isHarvestingEnabled()) {
       $label = $this->_('Moissonnage activé');
       $class .= ' enabled';
     }
diff --git a/library/ZendAfi/View/Helper/TagPre.php b/library/ZendAfi/View/Helper/TagPre.php
new file mode 100644
index 0000000000000000000000000000000000000000..7283ba18515dee44819cb059ba34fa6457af0f4d
--- /dev/null
+++ b/library/ZendAfi/View/Helper/TagPre.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class ZendAfi_View_Helper_TagPre extends ZendAfi_View_Helper_BaseHelper {
+  public function tagPre($content, $attribs = []) {
+    return $this->_tag('pre',
+                       $this->view->escape($content),
+                       $attribs);
+  }
+}
\ No newline at end of file
diff --git a/library/digital_resources/DiMusic/tests/DiMusicTest.php b/library/digital_resources/DiMusic/tests/DiMusicTest.php
index d7e84caa5d2eca79319891728a5bdc9f6515aba5..20301543a77147f669fdd88b34874f4b73530b49 100644
--- a/library/digital_resources/DiMusic/tests/DiMusicTest.php
+++ b/library/digital_resources/DiMusic/tests/DiMusicTest.php
@@ -133,8 +133,8 @@ class DiMusicDashboardActivatedTest extends DiMusicActivatedTestCase {
           ->assertSave();
 
     Class_WebService_BibNumerique_Vignette::setHttpClient($this->mock()
-                                                          ->whenCalled('open_url')
-                                                          ->answers(true));
+                                                          ->whenCalled('getResponse')
+                                                          ->answers(new Class_Testing_HttpResponse(['Body' => true])));
 
     ZendAfi_Auth::getInstance()
       ->logUser($this->fixture('Class_Users',
@@ -179,7 +179,7 @@ class DiMusicDashboardActivatedTest extends DiMusicActivatedTestCase {
 
   /** @test */
   public function harvestUrlShouldBeDisplay() {
-    $this->assertContains('<pre>https://export.divercities.eu/oai?verb=ListRecords&metadataPrefix=oai1dtouch_dc&set=music</pre>',
+    $this->assertContains('<pre>https://export.divercities.eu/oai?verb=ListRecords&amp;metadataPrefix=oai1dtouch_dc&amp;set=music</pre>',
                           $this->_response->getBody());
   }
 
diff --git a/library/digital_resources/Numel/Batch.php b/library/digital_resources/Numel/Batch.php
new file mode 100644
index 0000000000000000000000000000000000000000..77f7e45151ec6a841ce93f802628921cf3c03507
--- /dev/null
+++ b/library/digital_resources/Numel/Batch.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ * Copyright (c) 2012-2018, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Numel_Batch extends Class_DigitalResource_Batch {}
\ No newline at end of file
diff --git a/library/digital_resources/Numel/Config.php b/library/digital_resources/Numel/Config.php
new file mode 100644
index 0000000000000000000000000000000000000000..27dc476788e4dd70c2de2958134e668ff3e219f4
--- /dev/null
+++ b/library/digital_resources/Numel/Config.php
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Numel_Config extends Class_DigitalResource_Config {
+
+  protected function _getConfig() {
+    return ['Introduction' => $this->_('Numel'),
+            'HelpLink' => 'http://wiki.bokeh-library-portal.org/index.php/Numel',
+            'Url' => '',
+            'Icon' => 'http://melun.preprod-osiros.decalog.net/img/logo-melun.png',
+
+            'PermissionLabel' => $this->_('Bibliothèque numérique: accéder à Numel'),
+            'NotAllowedMessage' => $this->_('Votre compte n\'est pas autorisé à accéder à cette ressource.'),
+
+            'SsoAction' => true,
+
+            'MenuLabel' => $this->_('Lien vers NuMel'),
+            'ModuleMenu' => $this->withNameSpace('ModuleMenu'),
+
+            'Service' => $this->withNameSpace('Service'),
+            'Batch' => $this->withNameSpace('Batch'),
+
+            'DocTypeLabel' => $this->_('NuMel'),
+
+            'AdminVars' => ['Harvest_Url' => Class_AdminVar_Meta::newDefault($this->_('URL du service OAI de l\'entrepôt numérique de Melun'),
+                                                                         ['value' => 'http://melun.preprod-osiros.decalog.net/oai/'])->bePrivate(),
+
+                            'OAI_metadataPrefix' => Class_AdminVar_Meta::newDefault($this->_('MetadataPrefix du service OAI de l\'entrepôt numérique de Melun.'),
+                                                                                    ['value' => 'oai_numel'])->bePrivate(),
+                            $this->getName() => Class_AdminVar_Meta::newOnOff($this->_('Activer / Désactiver l\'intégration de l\'entrepôt numérique de Melun'))->bePrivate()
+            ]
+    ];
+  }
+
+
+  public function getAlbumSsoUrl($user, $album) {
+    return '';
+  }
+
+
+  public function newOAIClient() {
+    return parent::newOAIClient()
+      ->setMetadataPrefix($this->getAdminVar('OAI_metadataPrefix'));
+  }
+
+
+  public function getHarvestUrl($page = 1) {
+    return 1 === $page
+      ? $this->newOAIClient()->getRecordsUrl()
+      : '';
+  }
+
+
+  public function getSsoAction() {
+    return;
+  }
+}
\ No newline at end of file
diff --git a/library/digital_resources/Numel/ModuleMenu.php b/library/digital_resources/Numel/ModuleMenu.php
new file mode 100644
index 0000000000000000000000000000000000000000..4deaafabb63df817ef5299d5b8d64af70466195c
--- /dev/null
+++ b/library/digital_resources/Numel/ModuleMenu.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Numel_ModuleMenu extends Class_DigitalResource_ModuleMenu {}
\ No newline at end of file
diff --git a/library/digital_resources/Numel/Service.php b/library/digital_resources/Numel/Service.php
new file mode 100644
index 0000000000000000000000000000000000000000..c190705fbed4f6f354e4eaea265a028a18f50b43
--- /dev/null
+++ b/library/digital_resources/Numel/Service.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ * Copyright (c) 2012-2018, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Numel_Service extends Class_DigitalResource_ServiceOAI {}
\ No newline at end of file
diff --git a/library/digital_resources/Numel/Service/Album.php b/library/digital_resources/Numel/Service/Album.php
new file mode 100644
index 0000000000000000000000000000000000000000..caa049c5279f7d0b24b3bca9b890fd56bad7aea6
--- /dev/null
+++ b/library/digital_resources/Numel/Service/Album.php
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Copyright (c) 2012-2018, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Numel_Service_Album extends Class_WebService_BibNumerique_RessourceNumerique {
+
+  protected $_origine_doc_type;
+
+
+  public function getBaseUrl() {
+    return $this->_base_url;
+  }
+
+
+  protected function getTypeDoc() {
+    return Numel_Config::getInstance()->getDocType();
+  }
+
+  public function fillAlbum($album) {
+    $album
+      ->setIdLangue($this->_id_language)
+      ->setCote($this->_cote)
+      ->addNote('915$a', $this->_origine_doc_type)
+      ->setTypeDocId($this->getTypeDoc());
+
+    return $this;
+  }
+
+
+  public function setOrigineDocType($doc_type) {
+    $this->_origine_doc_type = $doc_type;
+    return $this;
+  }
+
+
+  public function getRessourceCategorieLibelle() {
+    return Numel_Config::getInstance()->getDocTypeLabel();
+  }
+}
\ No newline at end of file
diff --git a/library/digital_resources/Numel/Service/Parser.php b/library/digital_resources/Numel/Service/Parser.php
new file mode 100644
index 0000000000000000000000000000000000000000..770bae0cae74d389b5a7aa53d1f24cf105c4d18a
--- /dev/null
+++ b/library/digital_resources/Numel/Service/Parser.php
@@ -0,0 +1,99 @@
+<?php
+/**
+ * Copyright (c) 2012-2018, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Numel_Service_Parser
+  extends Class_WebService_OAI_DublinCoreParser_ForRessourceNumerique {
+
+  public function endIdentifier($data) {
+    $this->enddc_identifier(trim($data));
+  }
+
+
+  public function enddcterms_identifier($data) {
+    $this->getRessourceNumerique()->setBaseUrl(trim($data));
+  }
+
+
+  public function enddcterms_title($data) {
+    $this->enddc_title(trim($data));
+  }
+
+
+  public function enddcterms_langage($data) {
+    $this->enddc_language('Fre');
+  }
+
+
+  public function enddcterms_isPartOf($data) {
+    $this->getRessourceNumerique()->addCollection(trim($data));
+  }
+
+
+  public function enddcterms_source($data) {
+    $this->getRessourceNumerique()->setCote(trim($data));
+  }
+
+
+  public function enddcterms_issued($data) {
+    $this->enddc_date(trim($data));
+  }
+
+
+  public function enddcterms_type($data) {
+    $this->getRessourceNumerique()->setOrigineDocType(trim($data));
+  }
+
+
+  public function enddcterms_description($data) {
+    $this->enddc_description(trim($data));
+  }
+
+
+  public function enddcterms_subject($data) {
+    $this->enddc_subject(trim($data));
+  }
+
+
+  public function startdcterms_relation($attributes) {
+    if (!isset($attributes['XSI:TYPE']))
+      return;
+
+    $map = ['vignette' => 'addPoster',
+            'ressource' => 'setExternalUri'];
+
+    if (!array_key_exists($attributes['XSI:TYPE'], $map))
+      return;
+
+    $this->_current_relation = function($data) use ($attributes, $map) {
+      if ($uri = trim($data))
+        call_user_func([$this->getRessourceNumerique(), $map[$attributes['XSI:TYPE']]], trim($uri));
+    };
+  }
+
+
+  public function enddcterms_relation($data) {
+    if ($callback = $this->_current_relation)
+      $callback($data);
+
+    $this->_current_relation = null;
+  }
+}
\ No newline at end of file
diff --git a/library/digital_resources/Numel/View/Helper/Album.php b/library/digital_resources/Numel/View/Helper/Album.php
new file mode 100644
index 0000000000000000000000000000000000000000..cc6b97498ed8dff15f6369d9aaa3482ece240370
--- /dev/null
+++ b/library/digital_resources/Numel/View/Helper/Album.php
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Copyright (c) 2012-2018, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Numel_View_Helper_Album extends Class_DigitalResource_AlbumViewHelper {
+  public function album($album) {
+    if (!$album)
+      return '';
+
+    if (!$viewer = $album->getExternalUri())
+      return '';
+
+    $class = $this->_config->getName(). '_viewer';
+
+    Class_ScriptLoader::getInstance()
+      ->addInlineStyle(sprintf('iframe.%s { height: %dpx; width: %dpx; margin-top: 2ex; }',
+                               $class,
+                               900,
+                               600));
+
+    return
+      $this->_tagAnchor($viewer,
+                        $this->_('Voir en pleine page'),
+                        ['class' => 'bouton',
+                         'target' => '_blank'])
+      . $this->_tag('iframe',
+                    null,
+                    ['src' => $viewer,
+                     'class' => $class]);
+  }
+}
\ No newline at end of file
diff --git a/library/digital_resources/Numel/controllers/IndexController.php b/library/digital_resources/Numel/controllers/IndexController.php
new file mode 100644
index 0000000000000000000000000000000000000000..c1396572c0612d3f3f6c0859fe60a9a13818900b
--- /dev/null
+++ b/library/digital_resources/Numel/controllers/IndexController.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ * Copyright (c) 2012-2018, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class Numel_Plugin_IndexController extends Class_DigitalResource_Controller {}
\ No newline at end of file
diff --git a/library/digital_resources/Numel/images/icon.png b/library/digital_resources/Numel/images/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..fddc45646eb7073a847e8bf34c44a24d938eb87c
Binary files /dev/null and b/library/digital_resources/Numel/images/icon.png differ
diff --git a/library/digital_resources/Numel/tests/NumelTest.php b/library/digital_resources/Numel/tests/NumelTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..c60464694c05f383122df45a248e836815732fd1
--- /dev/null
+++ b/library/digital_resources/Numel/tests/NumelTest.php
@@ -0,0 +1,219 @@
+<?php
+/**
+ * Copyright (c) 2012-2018, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+abstract class NumelActivatedTestCase extends AbstractControllerTestCase {
+  protected
+    $_storm_default_to_volatile = true,
+    $_user;
+
+
+  public function setUp() {
+    parent::setUp();
+    Class_AdminVar::set('Numel_SSO_URL', 'https://test.org/api/bokeh/login');
+    Class_AdminVar::set('Numel_Numel', '1');
+
+    $group = $this->fixture('Class_UserGroup',
+                            ['id' => 1,
+                             'libelle' => 'Digital resources']);
+
+    $this->_user = $this->fixture('Class_Users',
+                                  ['id' => 1,
+                                   'login' => 'Tom',
+                                   'password' => 'pwd'])
+                        ->setUserGroups([$group]);
+
+    $this->fixture('Class_Permission',
+                   ['id' => 1,
+                    'code' => 'Numel'])
+         ->permitTo($group,  new Class_Entity());
+  }
+}
+
+
+
+
+class NumelDashboardUnactivatedTest extends Admin_AbstractControllerTestCase {
+  protected $_storm_default_to_volatile = true;
+
+
+  public function setUp() {
+    parent::setUp();
+    $this->dispatch('/Numel_Plugin', true);
+  }
+
+
+  /** @test */
+  public function shouldDisplayDeactivated() {
+    $this->assertXPathContentContains('//button', 'Désactivé');
+  }
+}
+
+
+
+
+class NumelDashboardActivatedTest extends NumelActivatedTestCase {
+  protected $_storm_default_to_volatile = true;
+
+
+  public function setUp() {
+    parent::setUp();
+
+    $album = $this->fixture('Class_Album',
+               ['id' => 20,
+                'titre' => '10 moutons',
+                'type_doc_id' => 'Numel',
+               ])
+                  ->addThumbnailURI('userfiles/album/20/thumb_20_large_10Moutons.jpeg')
+                  ->addPosterURI('userfiles/album/20/thumb_20_large_10Moutons.jpeg');
+
+    ZendAfi_Auth::getInstance()->logUser($this->fixture('Class_Users',
+                                                        ['id' => 2,
+                                                         'login' => 'admin',
+                                                         'password' => 'admin',
+                                                         'role_level' => ZendAfi_Acl_AdminControllerRoles::SUPER_ADMIN]));
+    Class_Album::getLoader()->setMemoryCleaner(function() {});
+    $this->dispatch('/Numel_Plugin', true);
+  }
+
+
+  public function tearDown() {
+    Class_Album::getLoader()->setMemoryCleaner(null);
+    parent::tearDown();
+  }
+
+
+  /** @test */
+  public function shouldDisplayActivated() {
+    $this->assertXPathContentContains('//button', 'Activé');
+  }
+
+
+  /** @test */
+  public function urlSsoShouldNotBeHandled() {
+    $this->assertXPathContentContains('//p', 'Cette ressource ne prend pas en charge la connexion SSO');
+  }
+
+
+  /** @test */
+  public function sourceImageShouldBeValid() {
+    $this->assertXPathContentContains('//pre', 'Image source : userfiles/album/20/thumb_20_large_10Moutons.jpeg');
+  }
+
+
+  /** @test */
+  public function doctypeImageUrlShouldBePresent() {
+    $this->assertXPath('//h4/img[contains(@src, "/digital-resource/typedoc-icon/id/Numel")]');
+  }
+}
+
+
+
+
+class NumelHarvestTests extends NumelActivatedTestCase {
+
+  protected
+    $_storm_default_to_volatile = true,
+    $_service,
+    $_album;
+
+
+  public function setUp() {
+    parent::setUp();
+
+    $http_client = $this->mock()
+                        ->whenCalled('open_url')
+                        ->with('http://melun.preprod-osiros.decalog.net/oai/?verb=ListRecords&metadataPrefix=oai_numel')
+                        ->answers(file_get_contents(__DIR__ . '/oai_page1.xml'))
+
+                        ->whenCalled('open_url')
+                        ->with('http://melun.preprod-osiros.decalog.net/oai/?verb=ListRecords&resumptionToken=1540805514')
+                        ->answers(file_get_contents(__DIR__ . '/oai_page2.xml'))
+      ;
+
+    $this->_service = Numel_Service::getInstance();
+    $this->_service->setDefaultHttpClient($http_client);
+    $this->_service->harvest();
+
+    $this->_album = Class_Album::findFirstBy([]);
+  }
+
+
+  /** @test */
+  public function harvestingShouldHaveCreate39Albums() {
+    $this->assertEquals(39, Numel_Config::getInstance()->countAlbums());
+  }
+
+
+  /** @test */
+  public function titleShouldContainsLettreDeMDesmaretz() {
+    $this->assertContains('Lettre de M. Desmaretz', $this->_album->getTitre());
+  }
+
+
+  /** @test */
+  public function idOrigineShouldBe100() {
+    $this->assertEquals(100, $this->_album->getIdOrigine());
+  }
+
+
+  /** @test */
+  public function urlOrigineShouldBeNumelRecord100() {
+    $this->assertEquals('http://numel.fr?#/osiros/record/100', $this->_album->getUrlOrigine());
+  }
+
+
+  /** @test */
+  public function externalUriShouldBeMelunPreprodOsirosDocId100() {
+    $this->assertEquals('http://melun.preprod-osiros.decalog.net//viewer.php?docId=100',
+                        $this->_album->getExternalUri());
+  }
+
+
+  /** @test */
+  public function coteShouldBeFF2P5() {
+    $this->assertEquals('FF 2p5', $this->_album->getCote());
+  }
+
+
+  /** @test */
+  public function collectionsShouldContainsSeriesFFArchives() {
+    $this->assertEquals('Série FF - Archives de Melun ; Justice et police',
+                        $this->_album->getFirstCollection());
+  }
+
+
+  /** @test */
+  public function origineDocTypeShouldBeTexteManuscrit() {
+    $this->assertEquals('texte manuscrit', $this->_album->getNote('915$a'));
+  }
+
+
+  /** @test */
+  public function dispatchResnumeriquesOnIndexedAlbumShouldRenderViewer() {
+    $this->_album->index();
+    $id = $this->_album->getNotice()->getId();
+    $this->dispatch('/opac/noticeajax/resnumeriques/id/' . $id, true);
+    $this->assertXPath('//iframe[@src="http://melun.preprod-osiros.decalog.net//viewer.php?docId=100"]');
+
+    $this->assertXPathContentContains('//style', 'height: 900px', $this->_response->getBody());
+  }
+}
\ No newline at end of file
diff --git a/library/digital_resources/Numel/tests/oai_page1.xml b/library/digital_resources/Numel/tests/oai_page1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9a1043c52ac44a84e1ba14d5ec3facc5c26dab19
--- /dev/null
+++ b/library/digital_resources/Numel/tests/oai_page1.xml
@@ -0,0 +1,576 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns:dcterms="http://purl.org/dc/terms/"
+         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
+         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+<responseDate>2018-10-29T09:31:54Z</responseDate>
+ <request verb="ListRecords" metadataPrefix="oai_numel">http://melun.preprod-osiros.decalog.net/oai/index.php</request>
+ <ListRecords>
+  <record>
+  <header status="deleted">
+   <identifier>oai:numel.fr:83</identifier>
+   <datestamp>2018-10-29</datestamp>
+  </header>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:100</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/100</dcterms:identifier>
+<dcterms:title>Lettre de M. Desmaretz, Maire de Senlis, au sujet du service religieux de la prison. Senlis, le 22 juin 1759.</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 2p5</dcterms:source>
+<dcterms:date>1759</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1759</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texte manuscrit</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Lettre de M. Desmaretz, Maire de Senlis, au sujet du service religieux de la prison. Senlis, le 22 juin 1759.</dcterms:description>
+<dcterms:subject xsi:type="personne">Desmaretz</dcterms:subject>
+<dcterms:subject xsi:type="lieu-type">Prison</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=100&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwMjAwMDEx&amp;repertoire=QUM3NzI4OEZGXzAwMjAwMDEx</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=100</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:101</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/101</dcterms:identifier>
+<dcterms:title>Lettre de M. Simon Delisle concernant l&apos;autorisation de M. l&apos;Intendant pour défendre à la demande formée contre les Officiers municipaux. Paris, le 21 avril 1775.</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 3p5</dcterms:source>
+<dcterms:date>1775</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1775</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texte manuscrit</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Lettre de M. Simon Delisle concernant l&apos;autorisation de M. l&apos;Intendant pour défendre à la demande formée contre les officiers municipaux. Paris, le 21 avril 1775.</dcterms:description>
+<dcterms:subject xsi:type="personne">Delisle Simon</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=101&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwMzAwMDIw&amp;repertoire=QUM3NzI4OEZGXzAwMzAwMDIw</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=101</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:102</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/102</dcterms:identifier>
+<dcterms:title>Lettre de M. Tamy à M. Gauthier, Avocat, pour lui signaler qu&apos;un détachement de la milice de Melun est venu au château de Praslin pour vérifier s&apos;il n&apos;y avait pas une réserve de blé, suite à une plainte des habitants de Maincy. Praslin, le 8 octobre 1789.</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 9p2</dcterms:source>
+<dcterms:date>1789</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1789</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texte manuscrit</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Lettre de M. Tamy à M. Gauthier, Avocat pour lui signaler qu&apos;un détachement de la milice de Melun est venu au château de Praslin pour vérifier s&apos;il n&apos;y avait pas une réserve de blé, suite à une plainte des habitants de Maincy. Praslin, le 8 octobre 1789.</dcterms:description>
+<dcterms:subject xsi:type="personne">Gauthier VincentTamy</dcterms:subject>
+<dcterms:subject xsi:type="lieu-type">Château</dcterms:subject>
+<dcterms:subject xsi:type="nom-rue">Praslin (place)</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=102&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwOTAwMDA5&amp;repertoire=QUM3NzI4OEZGXzAwOTAwMDA5</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=102</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:103</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/103</dcterms:identifier>
+<dcterms:title>Lettre demandant si en qualité d&apos;Officiers municipaux, ils ont l&apos;exercice de la police. Cholet, le 18 septembre 1781.</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 3p6</dcterms:source>
+<dcterms:date>1781</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1781</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texte manuscrit</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Lettre demandant si en qualité d&apos;Officiers municipaux, ils ont l&apos;exercice de la police. Cholet, le 18 septembre 1781.</dcterms:description>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=103&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwMzAwMDIx&amp;repertoire=QUM3NzI4OEZGXzAwMzAwMDIx</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=103</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:104</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/104</dcterms:identifier>
+<dcterms:title>Mémoire des ouvrages de menuiserie faits aux chambres de la juridiction et au greffe de la maréchaussée de Melun. Melun, le 15 juin 1784.</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 2p10</dcterms:source>
+<dcterms:date>1784</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1784</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texte manuscrit</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Mémoire des ouvrages de menuiserie faits aux chambres de la
+ juridiction et au greffe de la maréchaussée de Melun. Melun, le 15
+ juin 1784.</dcterms:description>
+<dcterms:subject xsi:type="lieu-type">Gendarmerie</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=104&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwMjAwMDIz&amp;repertoire=QUM3NzI4OEZGXzAwMjAwMDIz</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=104</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:105</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/105</dcterms:identifier>
+<dcterms:title>Mémoire des ouvrages de serrurerie fait par le Châtelet, juridiction et prison de Melun de 1782 à 1789.</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 2p9</dcterms:source>
+<dcterms:date>1782-1789</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1782</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texte manuscrit</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Mémoire des ouvrages de serrurerie fait par le Châtelet, juridiction et prison de Melun de 1782 à 1789.</dcterms:description>
+<dcterms:subject xsi:type="lieu-type">ChâteletPrison</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=105&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwMjAwMDIx&amp;repertoire=QUM3NzI4OEZGXzAwMjAwMDIx</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=105</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:106</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/106</dcterms:identifier>
+<dcterms:title>Mémoire des ouvrages de serrurerie faits au Châtelet et prison de Melun par M. Dobzat. Melun, le 17 avril 1775.</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 2p7</dcterms:source>
+<dcterms:date>1775</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1775</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texte manuscrit</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Mémoire des ouvrages de serrurerie faits au Châtelet et prison de Melun par M. Dobzat. Melun, le 17 avril 1775.</dcterms:description>
+<dcterms:subject xsi:type="personne">Dobzat</dcterms:subject>
+<dcterms:subject xsi:type="lieu-type">ChâteletPrison</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=106&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwMjAwMDE1&amp;repertoire=QUM3NzI4OEZGXzAwMjAwMDE1</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=106</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:107</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/107</dcterms:identifier>
+<dcterms:title>Mémoire des ouvrages faits par M. Derny, tourneur, pour le nouveau Châtelet. Melun, le 23 juin 1774.</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 2p6</dcterms:source>
+<dcterms:date>1774</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1774</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texte manuscrit</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Mémoire des ouvrages faits par M. Derny, tourneur, pour le
+ nouveau châtelet. Melun, le 23 juin 1774.</dcterms:description>
+<dcterms:subject xsi:type="personne">Derny Jean Baptiste</dcterms:subject>
+<dcterms:subject xsi:type="lieu-type">Châtelet</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=107&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwMjAwMDEz&amp;repertoire=QUM3NzI4OEZGXzAwMjAwMDEz</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=107</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:108</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/108</dcterms:identifier>
+<dcterms:title>Mémoire présenté au conseil par les Officiers du baillage de Melun contre la requête de Sieur Poiret. 1735 ?</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 3p4</dcterms:source>
+<dcterms:date>1735</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1735</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texte manuscrit</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Mémoire présenté au conseil par les Officiers du baillage de Melun contre la requête de Sieur Poiret. 1735 ?</dcterms:description>
+<dcterms:subject xsi:type="personne">Poiret</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=108&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwMzAwMDE3&amp;repertoire=QUM3NzI4OEZGXzAwMzAwMDE3</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=108</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:109</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/109</dcterms:identifier>
+<dcterms:title>Nomination de Pierre Savoye, Notaire au Châtelet de Melun, à la fonction de Contrôleur des dépens. Le 15 mai 1694.</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 13</dcterms:source>
+<dcterms:date>1694</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1694</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texe imprimé</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Nomination de Pierre Savoye, Notaire au Châtelet de Melun, à la fonction de Contrôleur des dépens. 15 mai 1694.</dcterms:description>
+<dcterms:subject xsi:type="personne">Savoye Pierre</dcterms:subject>
+<dcterms:subject xsi:type="lieu-type">Châtelet</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=109&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAxMzAwMDAx&amp;repertoire=QUM3NzI4OEZGXzAxMzAwMDAx</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=109</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:110</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/110</dcterms:identifier>
+<dcterms:title>Pièce concernant la plainte de l&apos;hôtelier de Melun. Le 29 janvier 1705.</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 2p4</dcterms:source>
+<dcterms:date>1705</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1705</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texte manuscrit</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Pièce concernant la plainte de l&apos;hôtelier de Melun. Le 29 janvier
+ 1705.</dcterms:description>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=110&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwMjAwMDA4&amp;repertoire=QUM3NzI4OEZGXzAwMjAwMDA4</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=110</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:111</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/111</dcterms:identifier>
+<dcterms:title>Précis pour les Sieurs Doyen, chanoines et chapitre royal de Saint Quiriace de Provins, Me Michel Rousselet, Conseiller du Roi, son Avocat au baillage, siège présidial de Provins et consorts, intimes contre Messire Louis Augustin Valentin, appelant. Sans</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 9p1</dcterms:source>
+<dcterms:date>1777</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1777</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texe imprimé</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Précis pour les Sieurs Doyen, chanoines et chapitre royal de Saint Quiriace de Provins, Me Michel Rousselet, Conseiller du Roi, son Avocat au baillage, siège présidial de Provins et consorts, intimes contre Messire Louis Augustin Valentin, Marquis de Culan, Seigneur de Savins et de Jutigny, appelant. Sans date (après 1777).</dcterms:description>
+<dcterms:subject xsi:type="personne">Rousselet MichelValentin Louis Augustin</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=111&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwOTAwMDAx&amp;repertoire=QUM3NzI4OEZGXzAwOTAwMDAx</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=111</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:112</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/112</dcterms:identifier>
+<dcterms:title>Procès du Maire de Melun - arrêt du présidial de Meaux condamnant Claude Lefèvre, Lieutenant en la prévoste de Melun et Maire, pour crime de concussion et dilapidation de deniers publics. Le 11 septembre 1670.</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 1</dcterms:source>
+<dcterms:date>1670</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1670</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texe imprimé</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Procès du Maire de Melun - arrêt du présidial de Meaux condamnant Claude Lefèvre, Lieutenant en la prévoste de Melun et Maire, pour crime de concussion et dilapidation de deniers publics. Le 11 septembre 1670.</dcterms:description>
+<dcterms:subject xsi:type="personne">Lefevre Claude</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=112&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwMTAwMDAx&amp;repertoire=QUM3NzI4OEZGXzAwMTAwMDAx</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=112</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:113</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/113</dcterms:identifier>
+<dcterms:title>Procès verbal sur un incident entre le Sieur Riotte de la Riotterie, Capitaine Gouverneur du château de Melun et Louis de Montault, Conseiller du Roi, Président du baillage. Le 8 octobre 1695.</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 8</dcterms:source>
+<dcterms:date>1695</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1695</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texte manuscrit</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Procès verbal sur un incident entre le Sieur Riotte De La Riotterie, Capitaine Gouverneur du château de Melun et Louis De Montault, Conseiller du Roi, Président du baillage. Le 8 octobre 1695.</dcterms:description>
+<dcterms:subject xsi:type="personne">Montault Louis DeRiotte De La Riotterie François</dcterms:subject>
+<dcterms:subject xsi:type="lieu-type">Château de Melun</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=113&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwODAwMDAx&amp;repertoire=QUM3NzI4OEZGXzAwODAwMDAx</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=113</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:114</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/114</dcterms:identifier>
+<dcterms:title>Requête du Roi pour Mrs les Officiers du Châtelet avec M. le Prévost de Paris. Novembre 1725.</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 3p1</dcterms:source>
+<dcterms:date>1725</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1725</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texte manuscrit</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Requête du Roi pour Mrs les Officiers du Châtelet. Papiers concernant le procès de Mrs les Lieutenants du Châtelet avec M. le Prévost de Paris. Paris, novembre 1725.</dcterms:description>
+<dcterms:subject xsi:type="lieu-type">Châtelet</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=114&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwMzAwMDAx&amp;repertoire=QUM3NzI4OEZGXzAwMzAwMDAx</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=114</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:115</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/115</dcterms:identifier>
+<dcterms:title>Requête et jugement entre les officiers du baillage et siège présidial de Melun et Etienne Poiret concernant les droits des parties au principal de lettres patentes. Le 6 septembre 1735.</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 3p2</dcterms:source>
+<dcterms:date>1735</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1735</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texte manuscrit</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Requête et jugement entre les officiers du baillage et siège
+ présidial de Melun et Etienne Poiret concernant des droits des
+ parties au principal de lettres patentes. Le 6 septembre 1735.</dcterms:description>
+<dcterms:subject xsi:type="personne">Poiret Antoine Simon Etienne</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=115&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwMzAwMDEx&amp;repertoire=QUM3NzI4OEZGXzAwMzAwMDEx</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=115</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:116</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/116</dcterms:identifier>
+<dcterms:title>Requête présentée au Roi par Etienne Poiret, Maire de Melun, concernant l&apos;édit du mois de novembre 1733 portant rétablissement des offices de Gouverneurs, Lieutenant du Roi, etc. Sans date (après 1733).</dcterms:title>
+<dcterms:language>Français</dcterms:language>
+<dcterms:isPartOf>Série FF - Archives de Melun ; Justice et police</dcterms:isPartOf>
+<dcterms:source>FF 3p3</dcterms:source>
+<dcterms:date>1733</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1733</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texte manuscrit</dcterms:type>
+<dcterms:rightsholder>Archives</dcterms:rightsholder>
+<dcterms:description>Requête présentée au Roi par Etienne Poiret, Maire de Melun, concernant l&apos;édit du mois de novembre 1733 portant rétablissement des offices de Gouverneurs, Lieutenants de Roi, etc. Sans date (après 1733).</dcterms:description>
+<dcterms:subject xsi:type="personne">Poiret Antoine Simon Etienne</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=116&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhYzc3Mjg4MDAwMDA1L0pQRUcvQUM3NzI4OEZGXzAwMzAwMDE0&amp;repertoire=QUM3NzI4OEZGXzAwMzAwMDE0</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=116</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:117</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>catalogue</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/117</dcterms:identifier>
+<dcterms:title>Seine-et-Marne : cartes hydrographiques</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:source>a011356517526cnLA0mB1-B8</dcterms:source>
+<dcterms:type xsi:type="numel:typedoc">texe imprimé</dcterms:type>
+<dcterms:rightsholder>Médiathèque</dcterms:rightsholder>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:118</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/118</dcterms:identifier>
+<dcterms:title>Carte du cours de la Seine de Montereau à Paris par R. Vuillaume. - Paris : aux bureaux du « Yacht », 1932. Dépl. dans album cartonné. 1/50 000</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>Seine-et-Marne : cartes hydrographiques</dcterms:isPartOf>
+<dcterms:source>B8</dcterms:source>
+<dcterms:date>1932</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1932</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">Carte et plan</dcterms:type>
+<dcterms:rightsholder>Médiathèque</dcterms:rightsholder>
+<dcterms:description>Carte du cours de la Seine de Montereau à Paris par R. Vuillaume. - Paris : aux bureaux du « Yacht », 1932. Dépl. dans album cartonné. 1/50 000</dcterms:description>
+<dcterms:subject xsi:type="lieu-type">Seine</dcterms:subject>
+<dcterms:subject xsi:type="nom-rue">Montereau-Fault-YonneParis</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=118&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnI3NzI4ODYyMDEwMDAwMDQvSlBFRy9hMDExMzU2NTE4MDEwWThRSmNC&amp;repertoire=YTAxMTM1NjUxODAxMFk4UUpjQg==</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=118</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <resumptionToken expirationDate="2018-10-30T09:31:54Z"
+     completeListSize="65"
+     cursor="0">1540805514</resumptionToken>
+ </ListRecords>
+</OAI-PMH>
diff --git a/library/digital_resources/Numel/tests/oai_page2.xml b/library/digital_resources/Numel/tests/oai_page2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0fa26318e0855fae015006baea21935bbad56439
--- /dev/null
+++ b/library/digital_resources/Numel/tests/oai_page2.xml
@@ -0,0 +1,566 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns:dcterms="http://purl.org/dc/terms/"
+         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
+         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+<responseDate>2018-10-29T09:33:13Z</responseDate>
+ <request verb="ListRecords" resumptionToken="1540805514">http://melun.preprod-osiros.decalog.net/oai/index.php</request>
+ <ListRecords>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:119</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>catalogue</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/119</dcterms:identifier>
+<dcterms:title>Carte hydrographique de Seine-et-Marne dressée en 1858 sous la dir. de M. Dajot, ingénieur en chef des Ponts et Chaussées, chef du service du Département, rectifiée en 1893 par M. Mancel, ingénieur en chef, arrondissement de Provins. - Sans date (fin XIXe</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>Seine-et-Marne : cartes hydrographiques</dcterms:isPartOf>
+<dcterms:source>B6</dcterms:source>
+<dcterms:date>1860-1900</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1860</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">Carte et plan</dcterms:type>
+<dcterms:rightsholder>Médiathèque</dcterms:rightsholder>
+<dcterms:description>Carte hydrographique de Seine-et-Marne dressée en 1858 sous la dir. de M. Dajot, ingénieur en chef des Ponts et Chaussées, chef du service du Département, rectifiée en 1893 par M. Mancel, ingénieur en chef, arrondissement de Provins. - Sans date (fin XIXe). 1/80000</dcterms:description>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:120</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>catalogue</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/120</dcterms:identifier>
+<dcterms:title>Carte hydrographique de Seine-et-Marne dressée sous la dir. de M. Dajot, ingénieur en chef des Ponts et Chaussées, chef du service du Département, arrondissement de Meaux. - Sans date (fin XIXe, antérieur à 1870). 1/80000</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>Seine-et-Marne : cartes hydrographiques</dcterms:isPartOf>
+<dcterms:source>B2</dcterms:source>
+<dcterms:date>1860-1870</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1860</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">Carte et plan</dcterms:type>
+<dcterms:rightsholder>Médiathèque</dcterms:rightsholder>
+<dcterms:description>Carte hydrographique de Seine-et-Marne dressée sous la dir. de M. Dajot, ingénieur en chef des Ponts et Chaussées, chef du service du Département, arrondissement de Meaux. - Sans date (fin XIXe, antérieur à 1870). 1/80000</dcterms:description>
+<dcterms:subject xsi:type="nom-rue">Meaux</dcterms:subject>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:121</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/121</dcterms:identifier>
+<dcterms:title>Carte hydrographique de Seine-et-Marne dressée sous la dir. de M. Dajot, ingénieur en chef des Ponts et Chaussées, chef du service du Département, arrondissement de Melun. - Sans date (fin XIXe, avant 1870). 1/80000</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>Seine-et-Marne : cartes hydrographiques</dcterms:isPartOf>
+<dcterms:source>B4</dcterms:source>
+<dcterms:date>1860-1870</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1860</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">Carte et plan</dcterms:type>
+<dcterms:rightsholder>Médiathèque</dcterms:rightsholder>
+<dcterms:description>Carte hydrographique de Seine-et-Marne dressée sous la dir. de M. Dajot, ingénieur en chef des Ponts et Chaussées, chef du service du Département, arrondissement de Melun. - Sans date (fin XIXe, avant 1870). 1/80000</dcterms:description>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=121&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnI3NzI4ODYyMDEwMDAwMDQvSlBFRy9hMDExMzU2NTE3Nzg1M0NuSUcy&amp;repertoire=YTAxMTM1NjUxNzc4NTNDbklHMg==</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=121</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:122</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>catalogue</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/122</dcterms:identifier>
+<dcterms:title>Carte hydrographique de Seine-et-Marne dressée sous la dir. de M. Dajot, ingénieur en chef des Ponts et Chaussées, chef du service du Département, arrondissement de Melun. - Sans date (fin XIXe, avant 1870). 1/80000</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>Seine-et-Marne : cartes hydrographiques</dcterms:isPartOf>
+<dcterms:source>B5</dcterms:source>
+<dcterms:date>1860-1870</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1860</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">Carte et plan</dcterms:type>
+<dcterms:rightsholder>Médiathèque</dcterms:rightsholder>
+<dcterms:description>Carte hydrographique de Seine-et-Marne dressée sous la dir. de M. Dajot, ingénieur en chef des Ponts et Chaussées, chef du service du Département, arrondissement de Melun. - Sans date (fin XIXe, avant 1870). 1/80000</dcterms:description>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:123</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>catalogue</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/123</dcterms:identifier>
+<dcterms:title>Carte hydrographique de Seine-et-Marne dressée sous la dir. de M. Dajot, ingénieur en chef des Ponts et Chaussées, chef du service du Département, arrondissement de Provins. - Sans date (fin XIXe, antérieur à 1870). 1/80000</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>Seine-et-Marne : cartes hydrographiques</dcterms:isPartOf>
+<dcterms:source>B1</dcterms:source>
+<dcterms:date>1860-1870</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1860</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">Carte et plan</dcterms:type>
+<dcterms:rightsholder>Médiathèque</dcterms:rightsholder>
+<dcterms:description>Carte hydrographique de Seine-et-Marne dressée sous la dir. de M. Dajot, ingénieur en chef des Ponts et Chaussées, chef du service du Département, arrondissement de Provins. - Sans date (fin XIXe, antérieur à 1870). 1/80000</dcterms:description>
+<dcterms:subject xsi:type="nom-rue">Provins</dcterms:subject>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:124</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/124</dcterms:identifier>
+<dcterms:title>Carte hydrographique de Seine-et-Marne dressée sous la dir. de M. Dajot, ingénieur en chef des Ponts et Chaussées, chef du service du Département, complétée en 1870 par M. Marx, ingénieur en chef, arrondissement de Melun. - Sans date (fin XIXe). 1/80000</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>Seine-et-Marne : cartes hydrographiques</dcterms:isPartOf>
+<dcterms:source>B3</dcterms:source>
+<dcterms:date>1870-1900</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1870</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">Carte et plan</dcterms:type>
+<dcterms:rightsholder>Médiathèque</dcterms:rightsholder>
+<dcterms:description>Carte hydrographique de Seine-et-Marne dressée sous la dir. de M. Dajot, ingénieur en chef des Ponts et Chaussées, chef du service du Département, complétée en 1870 par M. Marx, ingénieur en chef, arrondissement de Melun. - Sans date (fin XIXe). 1/80000</dcterms:description>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=124&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnI3NzI4ODYyMDEwMDAwMDQvSlBFRy9hMDExMzU2NTE3NzMwaVV5R1g3&amp;repertoire=YTAxMTM1NjUxNzczMGlVeUdYNw==</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=124</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:125</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>catalogue</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/125</dcterms:identifier>
+<dcterms:title>Carte routière et hydrographique de Seine-et-Marne. - Dressée en 1858. 1/160 000</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>Seine-et-Marne : cartes hydrographiques</dcterms:isPartOf>
+<dcterms:source>B7</dcterms:source>
+<dcterms:date>1858</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1858</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">Carte et plan</dcterms:type>
+<dcterms:rightsholder>Médiathèque</dcterms:rightsholder>
+<dcterms:description>Carte routière et hydrographique de Seine-et-Marne. - Dressée en 1858. 1/160 000</dcterms:description>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:126</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>catalogue</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/126</dcterms:identifier>
+<dcterms:title>Inventaire des médaillons du Musée de Melun (Extraits)</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:source>a011314879240buqeOT</dcterms:source>
+<dcterms:type xsi:type="numel:typedoc">texe imprimé</dcterms:type>
+<dcterms:rightsholder>Musée</dcterms:rightsholder>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:127</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/127</dcterms:identifier>
+<dcterms:title>Charles de Germiny</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>Inventaire des médaillons du Musée de Melun (Extraits)</dcterms:isPartOf>
+<dcterms:source>807</dcterms:source>
+<dcterms:type xsi:type="numel:typedoc">texe imprimé</dcterms:type>
+<dcterms:format>bronze ; 1 ; 22 x 2</dcterms:format>
+<dcterms:rightsholder>Musée</dcterms:rightsholder>
+<dcterms:provenance>par Anthony-Samuel Adam-Salomon</dcterms:provenance>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=127&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJtMDM3OTAwMDAwMy9KUEVHL2EwMTEzMTUzMzY2MTNiQk1RZjc=&amp;repertoire=YTAxMTMxNTMzNjYxM2JCTVFmNw==</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=127</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:128</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/128</dcterms:identifier>
+<dcterms:title>Ernest Bancel-Dupuy</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>Inventaire des médaillons du Musée de Melun (Extraits)</dcterms:isPartOf>
+<dcterms:source>2006.0.32</dcterms:source>
+<dcterms:type xsi:type="numel:typedoc">texe imprimé</dcterms:type>
+<dcterms:format>bronze ; 1 ; 63,5 x 63,5</dcterms:format>
+<dcterms:rightsholder>Musée</dcterms:rightsholder>
+<dcterms:provenance>par Louis Maximilien Bourgeois</dcterms:provenance>
+<dcterms:subject xsi:type="personne">Bancel, Ernest (1824-1891)</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=128&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJtMDM3OTAwMDAwMy9KUEVHL2EwMTEzMTUzODk1Njh2TVp1SnE=&amp;repertoire=YTAxMTMxNTM4OTU2OHZNWnVKcQ==</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=128</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:129</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/129</dcterms:identifier>
+<dcterms:title>Eugène Delaroue</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>Inventaire des médaillons du Musée de Melun (Extraits)</dcterms:isPartOf>
+<dcterms:source>209</dcterms:source>
+<dcterms:date>1905</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1905</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texe imprimé</dcterms:type>
+<dcterms:format>plâtre coloré ; 1</dcterms:format>
+<dcterms:rightsholder>Musée</dcterms:rightsholder>
+<dcterms:provenance>par Félix Emile Gaulard</dcterms:provenance>
+<dcterms:subject xsi:type="personne">Delaroue, Marie-Eugène (1864-1935)</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=129&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJtMDM3OTAwMDAwMy9KUEVHL2EwMTEzMTUzMzQ4ODYxQ0YzY3M=&amp;repertoire=YTAxMTMxNTMzNDg4NjFDRjNjcw==</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=129</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:130</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/130</dcterms:identifier>
+<dcterms:title>Eugène Godin</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>Inventaire des médaillons du Musée de Melun (Extraits)</dcterms:isPartOf>
+<dcterms:source>859</dcterms:source>
+<dcterms:date>1887</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1887</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texe imprimé</dcterms:type>
+<dcterms:format>plâtre ; 1 ; 43,5 x 4</dcterms:format>
+<dcterms:rightsholder>Musée</dcterms:rightsholder>
+<dcterms:provenance>par Alfred Adolphe Lepere</dcterms:provenance>
+<dcterms:subject xsi:type="personne">Godin, Eugène (1823-1887)</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=130&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJtMDM3OTAwMDAwMy9KUEVHL2EwMTEzMTUzODkzNjNDNXc1Qjk=&amp;repertoire=YTAxMTMxNTM4OTM2M0M1dzVCOQ==</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=130</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:131</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/131</dcterms:identifier>
+<dcterms:title>Henri Chapu</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>Inventaire des médaillons du Musée de Melun (Extraits)</dcterms:isPartOf>
+<dcterms:source>563</dcterms:source>
+<dcterms:date>1893</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1893</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texe imprimé</dcterms:type>
+<dcterms:format>étain ; 1 ; 10,2</dcterms:format>
+<dcterms:rightsholder>Musée</dcterms:rightsholder>
+<dcterms:provenance>par Henri-Auguste Patey</dcterms:provenance>
+<dcterms:subject xsi:type="personne">Chapu, Henri (1833-1891)</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=131&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJtMDM3OTAwMDAwMy9KUEVHL2EwMTEzMTUzMzUxMzM4dmw5SHk=&amp;repertoire=YTAxMTMxNTMzNTEzMzh2bDlIeQ==</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=131</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:132</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/132</dcterms:identifier>
+<dcterms:title>Jacques Amyot</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>Inventaire des médaillons du Musée de Melun (Extraits)</dcterms:isPartOf>
+<dcterms:source>207</dcterms:source>
+<dcterms:type xsi:type="numel:typedoc">texe imprimé</dcterms:type>
+<dcterms:format>bronze sur marbre ; 1 ; 40 x 29,5 x 3</dcterms:format>
+<dcterms:rightsholder>Musée</dcterms:rightsholder>
+<dcterms:provenance>par Félix Emile Gaulard</dcterms:provenance>
+<dcterms:subject xsi:type="personne">Amyot, Jacques (1513-1593)</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=132&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJtMDM3OTAwMDAwMy9KUEVHL2EwMTEzMTUzMzQwNDlxRW15bjE=&amp;repertoire=YTAxMTMxNTMzNDA0OXFFbXluMQ==</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=132</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:133</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/133</dcterms:identifier>
+<dcterms:title>Portait du Député Balandreau</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>Inventaire des médaillons du Musée de Melun (Extraits)</dcterms:isPartOf>
+<dcterms:source>208</dcterms:source>
+<dcterms:date>1905</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1905</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">texe imprimé</dcterms:type>
+<dcterms:format>plâtre ; 1 ; 20 x 1,8</dcterms:format>
+<dcterms:rightsholder>Musée</dcterms:rightsholder>
+<dcterms:provenance>par Félix Emile Gaulard</dcterms:provenance>
+<dcterms:subject xsi:type="personne">Balandreau, Marc François (1843-1916)</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=133&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJtMDM3OTAwMDAwMy9KUEVHL2EwMTEzMTUzMzQ3ODhvQkZCeEc=&amp;repertoire=YTAxMTMxNTMzNDc4OG9CRkJ4Rw==</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=133</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:69</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>catalogue</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/69</dcterms:identifier>
+<dcterms:title>38 avenue Thiers</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:source>a011358519361ixq3eg</dcterms:source>
+<dcterms:type xsi:type="numel:typedoc">texe imprimé</dcterms:type>
+<dcterms:rightsholder>Archéologie</dcterms:rightsholder>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:70</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/70</dcterms:identifier>
+<dcterms:title>38 avenue Thiers. Plan Général au 1/50e avec les différentes structures des zones I et II de la fouille. Responsable d&apos;opération Sophie Benhaddou.</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>38 avenue Thiers</dcterms:isPartOf>
+<dcterms:source>77 288 012 1989 REL 4</dcterms:source>
+<dcterms:date>1989</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1989</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">Carte et plan</dcterms:type>
+<dcterms:format>original de plan sur calque au crayon ; 79 x 75 cm</dcterms:format>
+<dcterms:rightsholder>Archéologie</dcterms:rightsholder>
+<dcterms:description>38 avenue Thiers. Plan Général au 1/50e avec les différentes structures des zones I et II de la fouille. Responsable d&apos;opération Sophie Benhaddou.</dcterms:description>
+<dcterms:subject xsi:type="nom-rue">Thiers (avenue)</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=70&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhcmNoNzcyODgwMDAwMDcvSlBFRy9hMDExMzU4NTAyMDg5akhHVVlF&amp;repertoire=YTAxMTM1ODUwMjA4OWpIR1VZRQ==</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=70</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:71</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/71</dcterms:identifier>
+<dcterms:title>Coupe de F19 de la zone II. 38 avenue Thiers. Site 77288012.</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>38 avenue Thiers</dcterms:isPartOf>
+<dcterms:source>77 288 012 1990 REL 5</dcterms:source>
+<dcterms:date>1990</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1990</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">Carte et plan</dcterms:type>
+<dcterms:format>mise au net sur calque ; A3</dcterms:format>
+<dcterms:rightsholder>Archéologie</dcterms:rightsholder>
+<dcterms:description>Coupe de F19 de la zone II du 38 avenue Thiers. Site 77288012.</dcterms:description>
+<dcterms:subject xsi:type="nom-rue">Thiers (avenue)</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=71&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhcmNoNzcyODgwMDAwMDcvSlBFRy9hMDExMzczNTMzMzQ5aFlVYTN6&amp;repertoire=YTAxMTM3MzUzMzM0OWhZVWEzeg==</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=71</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:72</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/72</dcterms:identifier>
+<dcterms:title>Coupe du 38 Avenue Thiers à l&apos;échelle 1/20e par L. Cholet et A. Valais : tranchée AA&apos;. Site 77288012.</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>38 avenue Thiers</dcterms:isPartOf>
+<dcterms:source>77 288 012 1989 REL 3</dcterms:source>
+<dcterms:date>1989</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1989</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">Carte et plan</dcterms:type>
+<dcterms:format>original sur calque ; 59 x 42 cm</dcterms:format>
+<dcterms:rightsholder>Archéologie</dcterms:rightsholder>
+<dcterms:description>Original de coupe du 38 Avenue Thiers à l&apos;échelle 1/20e par L. Cholet et A. Valais : tranchée AA&apos;. Site 77288012.</dcterms:description>
+<dcterms:subject xsi:type="nom-rue">Thiers (avenue)</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=72&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhcmNoNzcyODgwMDAwMDcvSlBFRy9hMDExMzU3ODIwMDQxRENTNzZl&amp;repertoire=YTAxMTM1NzgyMDA0MURDUzc2ZQ==</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=72</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+  <record>
+  <header>
+   <identifier>oai:numel.fr:73</identifier>
+   <datestamp>2018-09-05</datestamp>
+   <setSpec>docnum</setSpec>
+  </header>
+  <metadata>
+     <oai_numel:dcterms
+       xmlns:oai_numel="http://www.openarchives.org/OAI/2.0/oai_dc/"
+       xmlns:dcterms="http://purl.org/dc/elements/1.1/"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
+       http://www.openarchives.org/OAI/2.0/oai_dc.xsd" >
+<dcterms:identifier>http://numel.fr?#/osiros/record/73</dcterms:identifier>
+<dcterms:title>Coupe du 38 avenue Thiers à l&apos;échelle 1/20e par L. Cholet et A. Valais. Site 77288012.</dcterms:title>
+<dcterms:language>français</dcterms:language>
+<dcterms:isPartOf>38 avenue Thiers</dcterms:isPartOf>
+<dcterms:source>77 288 012 1989 REL 8</dcterms:source>
+<dcterms:date>1989</dcterms:date>
+<dcterms:issued xsi:type="dcterms:W3CDTF">1989</dcterms:issued>
+<dcterms:type xsi:type="numel:typedoc">Carte et plan</dcterms:type>
+<dcterms:format>original sur calque ; 62 x 47 cm</dcterms:format>
+<dcterms:rightsholder>Archéologie</dcterms:rightsholder>
+<dcterms:description>Coupe du 38 Avenue Thiers à l&apos;échelle 1/20e par L. Chollet et A. Valais. Site 77288012.</dcterms:description>
+<dcterms:subject xsi:type="nom-rue">Thiers (avenue)</dcterms:subject>
+<dcterms:relation xsi:type="vignette">http://melun.preprod-osiros.decalog.net//dam_picture.php?id=73&amp;type=SML&amp;nb=0&amp;path=bWVsdW4vZnJhcmNoNzcyODgwMDAwMDcvSlBFRy9hMDExMzU4MjU5MTE4V3E4N2VI&amp;repertoire=YTAxMTM1ODI1OTExOFdxODdlSA==</dcterms:relation>
+<dcterms:relation xsi:type="ressource">http://melun.preprod-osiros.decalog.net//viewer.php?docId=73</dcterms:relation>
+     </oai_numel:dcterms>
+   </metadata>
+  </record>
+ </ListRecords>
+</OAI-PMH>
diff --git a/library/digital_resources/Skilleos/tests/SkilleosTest.php b/library/digital_resources/Skilleos/tests/SkilleosTest.php
index f93255d6371fa7041692b17637994880030ffa5a..7ac2a9cbebf2881739e31a7252a9dfdd703dd91f 100644
--- a/library/digital_resources/Skilleos/tests/SkilleosTest.php
+++ b/library/digital_resources/Skilleos/tests/SkilleosTest.php
@@ -191,17 +191,14 @@ abstract class SkilleosServiceTestCase extends AbstractControllerTestCase {
                         ->with('http://moncompte.skilleos.com/rest/api/trainings',
                                ['headers' => ['Authorization' => "Bearer YTEzMDA1M2Q1ZGRmYmE0YjJkNWQ3MGY3ZGUyYTI3ZWJkMjBjOGI2NzIzMDIzMDc0MDAyYTE0NGJjMTRmMzkzMg"]])
                         ->answers($results_json)
-                        ->whenCalled('open_url')
-                        ->with('https://moncompte.skilleos.com/uploads/ressources/default/0001/11/thumb_10683_default_big.png')
-                        ->answers(null)
 
-                        ->whenCalled('open_url')
+                        ->whenCalled('getResponse')
                         ->with('https://moncompte.skilleos.com/uploads/ressources/default/0001/12/thumb_11659_default_big.png')
-                        ->answers(null)
+                        ->answers(new Class_Testing_HttpResponse(['Body' => null]))
 
-                          ->whenCalled('open_url')
+                        ->whenCalled('getResponse')
                         ->with('https://moncompte.skilleos.com/uploads/ressources/default/0001/11/thumb_10672_default_big.png')
-                        ->answers(null)
+                        ->answers(new Class_Testing_HttpResponse(['Body' => null]))
 
                         ->beStrict();
 
diff --git a/library/digital_resources/StoryPlayR/tests/StoryPlayRTest.php b/library/digital_resources/StoryPlayR/tests/StoryPlayRTest.php
index d407c124c345804b55fea5e67e94100dda2bebf6..2507c83340cb1e74d124b68652562293239d4999 100644
--- a/library/digital_resources/StoryPlayR/tests/StoryPlayRTest.php
+++ b/library/digital_resources/StoryPlayR/tests/StoryPlayRTest.php
@@ -107,9 +107,11 @@ class StoryPlayRDashboardActivatedTest extends StoryPlayRActivatedTestCase {
                         'https://preprod.storyplayr.com/api/opds-with-links');
 
     Class_WebService_BibNumerique_Vignette::setHttpClient($this->mock()
-                                                          ->whenCalled('open_url')
+                                                          ->whenCalled('getResponse')
                                                           ->with('https://preprod.storyplayr.com/api/library/17fcdd4f-0c1c-4515-a0cf-594f41b03550/thumbnail/large')
-                                                          ->answers('image'));
+                                                          ->answers(new Class_Testing_HttpResponse(['Body' => 'image'])));
+
+
 
     $album = $this->fixture('Class_Album',
                ['id' => 20,
diff --git a/library/digital_resources/ToutApprendre/tests/ToutApprendreTest.php b/library/digital_resources/ToutApprendre/tests/ToutApprendreTest.php
index 1241af5ef9ce7e9b0c959a8be39f3e2dcc00c845..2b44f4a8bd06e3f6ebd4a9b1e3b6dbceddff1d72 100644
--- a/library/digital_resources/ToutApprendre/tests/ToutApprendreTest.php
+++ b/library/digital_resources/ToutApprendre/tests/ToutApprendreTest.php
@@ -129,12 +129,6 @@ class ToutApprendreDashboardActivatedTest extends ToutApprendreActivatedTestCase
   }
 
 
-  /** @test */
-  public function sourceImageShouldBeValid() {
-    $this->assertXPathContentContains('//pre','Image source : ');
-  }
-
-
   /** @test */
   public function doctypeImageUrlShouldBePresent() {
     $this->assertXPath('//h4/img[contains(@src, "/digital-resource/typedoc-icon/id/ToutApprendre")]');
diff --git a/tests/application/modules/admin/controllers/AlbumControllerListViewModeTest.php b/tests/application/modules/admin/controllers/AlbumControllerListViewModeTest.php
index 984b1fce67d32e45049d3750990bb82e2a40cc1e..cfebaae572a553028abe63aae17dc01cdab6ee20 100644
--- a/tests/application/modules/admin/controllers/AlbumControllerListViewModeTest.php
+++ b/tests/application/modules/admin/controllers/AlbumControllerListViewModeTest.php
@@ -166,13 +166,13 @@ class Admin_AlbumControllerListViewModeSearchTest extends Admin_AlbumControllerL
 
     $this->onLoaderOfModel('Class_Album')
          ->whenCalled('findAllBy')
-         ->with(['where' => '(titre like \'%Second%\')',
+         ->with(['where' => '(titre like \'%Second%\') or (type_doc_id like \'%Second%\')',
                  'order' => 'titre',
                  'limitPage' => [0, 25]])
          ->answers([Class_Album::find(2)])
 
          ->whenCalled('countBy')
-         ->with(['where' => '(titre like \'%Second%\')',
+         ->with(['where' => '(titre like \'%Second%\') or (type_doc_id like \'%Second%\')',
                  'order' => 'titre'])
          ->answers(200)
 
@@ -333,13 +333,13 @@ class Admin_AlbumControllerListViewModeSearchSpecialCharTest extends Admin_Album
 
     Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Album')
       ->whenCalled('findAllBy')
-      ->with(['where' => '(titre like \'%é%\')',
+      ->with(['where' => '(titre like \'%é%\') or (type_doc_id like \'%é%\')',
               'order' => 'titre',
               'limitPage' => [0, 25]])
       ->answers([Class_Album::find(2)])
 
       ->whenCalled('countBy')
-      ->with(['where' => '(titre like \'%é%\')',
+      ->with(['where' => '(titre like \'%é%\') or (type_doc_id like \'%é%\')',
               'order' => 'titre'])
       ->answers(200)
 
diff --git a/tests/library/Class/MoteurRechercheTest.php b/tests/library/Class/MoteurRechercheTest.php
index 168c586f9159ece8448359f41f495172cea2611e..5067b0bfd40c70d2d6be3cd96ebe92c9a06a46a2 100644
--- a/tests/library/Class/MoteurRechercheTest.php
+++ b/tests/library/Class/MoteurRechercheTest.php
@@ -306,13 +306,13 @@ class MoteurRechercheSimpleTest extends MoteurRechercheTestCase {
             [['expressionRecherche' => '',
               'digital_lib' => '1'],
              'nb_mots'=> 0,
-             'req_liste' => "select id_notice, facettes from notices Where (type_doc in ('100','101','102','103','104','105','106','109','110','111','112','113','115','116','117','119','Assimil','Cvs','DiMusic','LaSourisQuiRaconte','Lekiosk','LesYeuxDoc','Musicme','Omeka','Skilleos','StoryPlayR','ToutApprendre'))"],
+             'req_liste' => "select id_notice, facettes from notices Where (type_doc in ('100','101','102','103','104','105','106','109','110','111','112','113','115','116','117','119','Assimil','Cvs','DiMusic','LaSourisQuiRaconte','Lekiosk','LesYeuxDoc','Musicme','Numel','Omeka','Skilleos','StoryPlayR','ToutApprendre'))"],
 
 
             [['expressionRecherche' => 'logo',
               'digital_lib' => '1'],
              'nb_mots'=> 1,
-             'req_liste' => "select id_notice, facettes from notices Where " . $match_axes . " AGAINST('+(LOGO LOGOS LOGO)' IN BOOLEAN MODE) and (type_doc in ('100','101','102','103','104','105','106','109','110','111','112','113','115','116','117','119','Assimil','Cvs','DiMusic','LaSourisQuiRaconte','Lekiosk','LesYeuxDoc','Musicme','Omeka','Skilleos','StoryPlayR','ToutApprendre')) order by (MATCH(titres) AGAINST(' LOGO') * 1.5) + (MATCH(auteurs) AGAINST(' LOGO')) desc"],
+             'req_liste' => "select id_notice, facettes from notices Where " . $match_axes . " AGAINST('+(LOGO LOGOS LOGO)' IN BOOLEAN MODE) and (type_doc in ('100','101','102','103','104','105','106','109','110','111','112','113','115','116','117','119','Assimil','Cvs','DiMusic','LaSourisQuiRaconte','Lekiosk','LesYeuxDoc','Musicme','Numel','Omeka','Skilleos','StoryPlayR','ToutApprendre')) order by (MATCH(titres) AGAINST(' LOGO') * 1.5) + (MATCH(auteurs) AGAINST(' LOGO')) desc"],
 
             [['expressionRecherche' => '',
               'id_panier' => 4],
diff --git a/tests/library/Class/WebService/Album/VignetteTest.php b/tests/library/Class/WebService/Album/VignetteTest.php
index ce93a68cda68a5d46e0e7902ecf698e662260991..2f56063f7b1d6c4ae7a20dc771bc7ff354e27173 100644
--- a/tests/library/Class/WebService/Album/VignetteTest.php
+++ b/tests/library/Class/WebService/Album/VignetteTest.php
@@ -75,9 +75,8 @@ abstract class Class_WebService_Album_VignetteBlancheNeigeTestCase extends Class
 
 
     $this->_http_client
-      ->whenCalled('open_url')
-      ->with('http://mediatheque.com/blanche_neige.jpg')
-      ->answers('an image');
+      ->whenCalled('getResponse')
+      ->answers(new Class_Testing_HttpResponse(['Body' => 'an image']));
 
     $this->_vignette->setFileWriter($this->_file_writer = Storm_Test_ObjectWrapper::mock());
     $this->_file_writer
@@ -178,9 +177,8 @@ class Class_WebService_Album_VignetteBlancheNeigeErrorsTest extends Class_WebSer
   /** @test */
   public function withoutDataShouldNotSaveImage() {
     $this->_http_client
-      ->whenCalled('open_url')
-      ->with($this->_album->getPoster())
-      ->answers('');
+      ->whenCalled('getResponse')
+      ->answers(new Class_Testing_HttpResponse(['Body' => '']));
 
     $this->_vignette->updateAlbum($this->_album);
     $this->assertFalse($this->_file_writer->methodHasBeenCalled('putContents'));