diff --git a/VERSIONS_HOTLINE/155528 b/VERSIONS_HOTLINE/155528
new file mode 100644
index 0000000000000000000000000000000000000000..da44e2b5d26d6266a08968646bab4fcc414ec6e1
--- /dev/null
+++ b/VERSIONS_HOTLINE/155528
@@ -0,0 +1 @@
+ - correctif #155528 : Albums : correction d'une erreur PHP pouvant survenir lors de la consultation d'une notice d\'album.
\ No newline at end of file
diff --git a/library/Class/DigitalResource/Config.php b/library/Class/DigitalResource/Config.php
index a6c5ce2923e1e5e1820c7c0dae89e6b52b197706..2ccaba51ee6c4e40530764144f596b478e093eef 100644
--- a/library/Class/DigitalResource/Config.php
+++ b/library/Class/DigitalResource/Config.php
@@ -290,8 +290,8 @@ class Class_DigitalResource_Config extends Class_Entity {
   }
 
 
-  public function urlFor(?Class_Users $user, ?array $params = []) : ?string {
-    return $this->_ssoUrlDelegate()->urlFor($user, $params);
+  public function urlFor(?Class_Users $user, ?array $params = []) : string {
+    return (string) $this->_ssoUrlDelegate()->urlFor($user, $params);
   }
 
 
diff --git a/library/Class/DigitalResource/SsoUrl.php b/library/Class/DigitalResource/SsoUrl.php
index 45de103567abff4a21a81bf12eff0999ddf5acc6..9d3df3f0db1fdbae51a68d9a1e1b43bc6c5375ac 100644
--- a/library/Class/DigitalResource/SsoUrl.php
+++ b/library/Class/DigitalResource/SsoUrl.php
@@ -24,27 +24,28 @@ class Class_DigitalResource_SsoUrl {
   /** @var Class_DigitalResource_Config | Class_WebService_BibNumerique_ArteVOD_Config */
   protected $_config;
 
+
   public function __construct($config) {
     $this->_config = $config;
   }
 
 
-  public function urlFor(?Class_Users $user, array $params=[]) : ?string {
+  public function urlFor(?Class_Users $user, array $params=[]) : string {
     if (!$user
         || !$this->_config->hasRightAccess($user)
         || !$this->_config->isEnabled())
-      return null;
+      return '';
 
     if ($record = $this->_recordFromParams($params))
-      return $this->_config->getRecordSsoUrl($user, $record);
+      return (string) $this->_config->getRecordSsoUrl($user, $record);
 
     if ($album = $this->_albumFromParams($params))
-      return $this->_config->getAlbumSsoUrl($user, $album);
+      return (string) $this->_config->getAlbumSsoUrl($user, $album);
 
     if ($resource = $this->_albumResourceFromParams($params))
-      return $this->_config->getAlbumResourceSsoUrl($user, $resource);
+      return (string) $this->_config->getAlbumResourceSsoUrl($user, $resource);
 
-    return $this->_config->getSsoUrl($user);
+    return (string) $this->_config->getSsoUrl($user);
   }
 
 
diff --git a/library/Class/WebService/BibNumerique/ArteVOD/Config.php b/library/Class/WebService/BibNumerique/ArteVOD/Config.php
index 8bf6951ce4cc129a577c6e683b3138abe3136084..948238bf5e4f20dd60703a1c8e31f18087da3b7e 100644
--- a/library/Class/WebService/BibNumerique/ArteVOD/Config.php
+++ b/library/Class/WebService/BibNumerique/ArteVOD/Config.php
@@ -65,8 +65,8 @@ class Class_WebService_BibNumerique_ArteVOD_Config {
   }
 
 
-  public function urlFor(?Class_Users $user, ?array $params = []) : ?string {
-    return (new Class_DigitalResource_SsoUrl($this))->urlFor($user, $params);
+  public function urlFor(?Class_Users $user, ?array $params = []) : string {
+    return (string) (new Class_DigitalResource_SsoUrl($this))->urlFor($user, $params);
   }
 
 
diff --git a/library/ZendAfi/View/Helper/Admin/HelpLink.php b/library/ZendAfi/View/Helper/Admin/HelpLink.php
index 10b024fa5edcfd970bcd34eb065d8ff2db2a2f77..c06115feae4987edf8e4a2df03ba0edf17adb089 100644
--- a/library/ZendAfi/View/Helper/Admin/HelpLink.php
+++ b/library/ZendAfi/View/Helper/Admin/HelpLink.php
@@ -140,7 +140,7 @@ class ZendAfi_View_Helper_Admin_HelpLinkBokehWiki {
     ];
 
 
-  public function urlFor($controller, $action) {
+  public function urlFor($controller, $action) : string {
     if (!array_key_exists($controller, $this->_mapping))
       return '';
 
diff --git a/tests/library/Class/DigitalResourceTest.php b/tests/library/Class/DigitalResourceTest.php
index a83cdf9176b8a71fe2f855432d8e689ac5fc531c..79bf81c9d8e35c446c64563060f42eca5c5364af 100644
--- a/tests/library/Class/DigitalResourceTest.php
+++ b/tests/library/Class/DigitalResourceTest.php
@@ -115,4 +115,122 @@ class DigitalResourceTest extends ModelTestCase {
 
     $this->assertEquals(['PirateBayResource'], array_keys($this->_digital_resource->getModulesMenu()));
   }
+}
+
+
+
+
+class DigitalResourceSsoUrlTest extends ModelTestCase {
+
+  protected
+    $_sso_url,
+    $_config;
+
+
+  public function setUp() {
+    parent::setUp();
+
+    $no_rights =
+      $this->fixture(Class_Users::class,
+                     ['id' => 4,
+                      'login' => 'mixed return',
+                      'password' => 'RT KO']);
+
+    $has_rights =
+      $this->fixture(Class_Users::class,
+                     ['id' => 5,
+                      'login' => 'has rights',
+                      'password' => 'until the end']);
+
+    $this->fixture(Class_Notice::class,
+                   ['id' => 7]);
+
+    $this->fixture(Class_Album::class,
+                   ['id' => 9,
+                    'titre' => '-_-']);
+
+    $this->fixture(Class_AlbumRessource::class,
+                   ['id' => 11]);
+
+    $this->_config =
+      $this->mock()->beStrict()
+
+           ->whenCalled('hasRightAccess')
+           ->with($no_rights)
+           ->answers(false)
+
+           ->whenCalled('hasRightAccess')
+           ->with($has_rights)
+           ->answers(true)
+
+           ->whenCalled('isEnabled')
+           ->answers(true);
+
+    $this->_sso_url = new Class_DigitalResource_SsoUrl($this->_config);
+  }
+
+
+  /** @test */
+  public function withNullUserShouldReturnEmptyString() {
+    $this->assertEquals('', $this->_sso_url->urlFor(null));
+  }
+
+
+  /** @test */
+  public function withNoRightsUserShouldReturnEmptyString() {
+    $this->assertEquals('', $this->_sso_url->urlFor(Class_Users::find(4)));
+  }
+
+
+  /** @test */
+  public function withNotEnabledConfigShouldReturnEmptyString() {
+    $this->_config
+      ->whenCalled('isEnabled')
+      ->answers(false);
+    $this->assertEquals('', $this->_sso_url->urlFor(Class_Users::find(5)));
+  }
+
+
+  /** @test */
+  public function withRecordParamShouldReturnEmptyString() {
+    $this->_config
+      ->whenCalled('getRecordSsoUrl')
+      ->with(Class_Users::find(5), Class_Notice::find(7))
+      ->answers(null);
+
+    $this->assertEquals('', $this->_sso_url->urlFor(Class_Users::find(5), ['id' => 7]));
+  }
+
+
+  /** @test */
+  public function withAlbumParamShouldReturnEmptyString() {
+    $this->_config
+      ->whenCalled('getAlbumSsoUrl')
+      ->with(Class_Users::find(5), Class_Album::find(9))
+      ->answers(null);
+
+    $this->assertEquals('', $this->_sso_url->urlFor(Class_Users::find(5), ['album_id' => 9]));
+  }
+
+
+  /** @test */
+  public function withAlbumResourceParamShouldReturnEmptyString() {
+    $this->_config
+      ->whenCalled('getAlbumResourceSsoUrl')
+      ->with(Class_Users::find(5), Class_AlbumRessource::find(11))
+      ->answers(null);
+
+    $this->assertEquals('', $this->_sso_url->urlFor(Class_Users::find(5), ['resource_id' => 11]));
+  }
+
+
+  /** @test */
+  public function withNoParamsShouldReturnEmptyString() {
+    $this->_config
+      ->whenCalled('getSsoUrl')
+      ->with(Class_Users::find(5))
+      ->answers(null);
+
+    $this->assertEquals('', $this->_sso_url->urlFor(Class_Users::find(5)));
+  }
 }
\ No newline at end of file