diff --git a/library/Class/WebService/SIGB/AbstractRESTService.php b/library/Class/WebService/SIGB/AbstractRESTService.php
index 6578c7e7a8d548034e613e8d587912d18eeb31e6..20b8edf2eb0909b560079b5dc2e9cfc64de69612 100644
--- a/library/Class/WebService/SIGB/AbstractRESTService.php
+++ b/library/Class/WebService/SIGB/AbstractRESTService.php
@@ -107,6 +107,15 @@ abstract class Class_WebService_SIGB_AbstractRESTService extends Class_WebServic
 	}
 
 
+	/**
+	 * Retourne le nom du tag utilisé pour les messages d'erreurs dans les réponses XML / ILSDI
+	 * @return string
+	 */
+	public function ilsdiGetErrorTag() {
+		return 'error';
+	}
+
+
 	/**
 	 * @param array $params
 	 * @param Class_WebService_SIGB_AbstractILSDIPatronInfoReader $reader
@@ -121,7 +130,7 @@ abstract class Class_WebService_SIGB_AbstractRESTService extends Class_WebServic
 		if (0 === strpos($xml, '<html>'))
 			return $emprunteur;
 
-		if ($this->_getTagData($xml, 'error'))
+		if ($this->_getTagData($xml, $this->ilsdiGetErrorTag()))
 			return $emprunteur;
 
 		return $reader
@@ -147,12 +156,38 @@ abstract class Class_WebService_SIGB_AbstractRESTService extends Class_WebServic
 		if (0 === strpos($xml, '<html>'))
 			return $this->_getNetworkError();
 
-		if ('' != $this->_getTagData($xml, $error_tag))
+		if ('' != $this->_getTagData($xml, $this->ilsdiGetErrorTag()))
 			return $this->_error('Réservation impossible');
 
 		return $this->_success();
 	}
 
+
+
+
+
+	/**
+	 * @param array $params
+	 */
+	public function ilsdiCancelHold($params) {
+		$params = array_merge(array('service' => 'CancelHold'), $params);
+
+		try {
+			$xml = $this->httpGet($params);
+		} catch (Exception $e) {
+			return $this->_getNetworkError();
+		}
+
+		if (0 === strpos($xml, '<html>'))
+			return $this->_getNetworkError();
+
+		if ('' != $this->_getTagData($xml, 'error'))
+			return $this->_error('Annulation impossible');
+
+		return $this->_success();
+	}
+
+
 	
 
 	/**
diff --git a/library/Class/WebService/SIGB/BiblixNet/Service.php b/library/Class/WebService/SIGB/BiblixNet/Service.php
index b2a309e51cd592c0b2616c9ec36e5c1d7f0da69a..beed5dc18b2e4dd312e7d3f030c951f9384ab303 100644
--- a/library/Class/WebService/SIGB/BiblixNet/Service.php
+++ b/library/Class/WebService/SIGB/BiblixNet/Service.php
@@ -68,7 +68,11 @@ class Class_Webservice_SIGB_BiblixNet_Service extends Class_WebService_SIGB_Abst
 	 * @param int $reservation_id
 	 * @return array
 	 */
-	public function supprimerReservation($user, $reservation_id) {}
+	public function supprimerReservation($user, $reservation_id) {
+		return $this->ilsdiCancelHold(array(
+																				'patronId'	=> $user->getIdSigb(),
+																				'itemId'		=> $reservation_id));
+	}
 
 
 	/**
diff --git a/library/Class/WebService/SIGB/Koha/Service.php b/library/Class/WebService/SIGB/Koha/Service.php
index 59cdf4588cad73e37a87f34e550230b06d7fd00d..ab3974c8a4bc575b9ae799ef749d00ea6f4ba4f4 100644
--- a/library/Class/WebService/SIGB/Koha/Service.php
+++ b/library/Class/WebService/SIGB/Koha/Service.php
@@ -56,6 +56,15 @@ class Class_WebService_SIGB_Koha_Service extends Class_WebService_SIGB_AbstractR
 	}
 
 
+	/**
+	 * Retourne le nom du tag utilisé pour les messages d'erreurs dans les réponses XML / ILSDI
+	 * @return string
+	 */
+	public function ilsdiGetErrorTag() {
+		return 'code';
+	}
+
+
 	/**
 	 * @param Class_Users $user
 	 * @param Class_Exemplaire $exemplaire
@@ -77,6 +86,7 @@ class Class_WebService_SIGB_Koha_Service extends Class_WebService_SIGB_AbstractR
 	 * @return array
 	 */
 	public function supprimerReservation($user, $reservation_id) {
+
 		$emprunteur_id = $this->_authenticate($user);
 
 		$xml_cancel = $this->httpGet(array('service' => 'CancelHold',
diff --git a/library/Class/WebService/SIGB/Nanook/Service.php b/library/Class/WebService/SIGB/Nanook/Service.php
index 3ce261f64947f4300def47a9e3a8150aaa88a34f..b967872e9a4fb1d508f2beaeaee5956a623f7d43 100644
--- a/library/Class/WebService/SIGB/Nanook/Service.php
+++ b/library/Class/WebService/SIGB/Nanook/Service.php
@@ -81,21 +81,9 @@ class Class_Webservice_SIGB_Nanook_Service extends Class_WebService_SIGB_Abstrac
 	 * @return array
 	 */
 	public function supprimerReservation($user, $reservation_id) {
-		try {
-			$xml = $this->httpGet(array('service'		=> 'CancelHold',
-																	'patronId'	=> $user->getIdSigb(),
-																	'itemId'		=> $reservation_id));
-		} catch (Exception $e) {
-			return $this->_getNetworkError();
-		}
-
-		if (0 === strpos($xml, '<html>'))
-			return $this->_getNetworkError();
-
-		if ('' != $this->_getTagData($xml, 'error'))
-			return $this->_error('Annulation impossible');
-
-		Return $this->_success();
+		return $this->ilsdiCancelHold(array(
+																				'patronId'	=> $user->getIdSigb(),
+																				'itemId'		=> $reservation_id));
 	}
 
 
diff --git a/tests/library/Class/WebService/SIGB/BiblixNetFixtures.php b/tests/library/Class/WebService/SIGB/BiblixNetFixtures.php
index 29fcd8891ac5ff4bfc529f7674e54e9c9b795064..365725c6d9e890b828ffcfd9f6bfcd4a79355d19 100644
--- a/tests/library/Class/WebService/SIGB/BiblixNetFixtures.php
+++ b/tests/library/Class/WebService/SIGB/BiblixNetFixtures.php
@@ -132,4 +132,11 @@ class BiblixNetFixtures {
 		return '<?xml version="1.0" encoding="UTF-8"?>
 						<HoldTitle></HoldTitle>';
 	}
+
+
+	/** @return string */
+	public static function xmlCancelHoldSuccess() {
+		return '<?xml version="1.0" encoding="UTF-8"?>
+						<CancelHold></CancelHold>';
+	}
 }
diff --git a/tests/library/Class/WebService/SIGB/BiblixNetTest.php b/tests/library/Class/WebService/SIGB/BiblixNetTest.php
index 3fc104f1fc1645dc7811044f851312777b697452..0007b2ac1255fa4085936156f2ec3de59624387c 100644
--- a/tests/library/Class/WebService/SIGB/BiblixNetTest.php
+++ b/tests/library/Class/WebService/SIGB/BiblixNetTest.php
@@ -240,7 +240,7 @@ class BiblixNetOperationsTest extends BiblixNetTestCase {
 		$this->_mock_web_client
 			->whenCalled('open_url')
 			->with('http://mediathequewormhout.biblixnet.com/exporte_afi/?service=HoldTitle&patronId=34&bibId=1432&pickupLocation=Mediatheque')
-			->answers(BiblixNetFixtures::xmlGetPatronJustinTicou())
+			->answers(BiblixNetFixtures::xmlHoldTitleSuccess())
 			->beStrict();
 
 
@@ -251,6 +251,22 @@ class BiblixNetOperationsTest extends BiblixNetTestCase {
 													'Mediatheque'
 												));
 	}
+
+
+	/** @test */
+	public function supprimerReservationWithoutErrorShouldReturnSuccess() {
+		$this->_mock_web_client
+			->whenCalled('open_url')
+			->with('http://mediathequewormhout.biblixnet.com/exporte_afi/?service=CancelHold&patronId=1&itemId=987')
+			->answers(BiblixNetFixtures::xmlCancelHoldSuccess())
+			->beStrict();
+
+		$this->assertEquals(array('statut' => true, 'erreur' => ''),
+												$this->_service->supprimerReservation(
+													Class_Users::getLoader()->newInstance()->setIdSigb('1'),
+													'987'
+												));
+	}
 	
 }