diff --git a/VERSIONS_HOTLINE/90858 b/VERSIONS_HOTLINE/90858
new file mode 100644
index 0000000000000000000000000000000000000000..d8dd420403bbc137dc93a95896b17c904106ac96
--- /dev/null
+++ b/VERSIONS_HOTLINE/90858
@@ -0,0 +1 @@
+ - ticket #90858 : Administration Activités : Correction d'une erreur survenant lorsqu'un participant a été supprimé de la base de données
\ No newline at end of file
diff --git a/application/modules/admin/controllers/ActivityController.php b/application/modules/admin/controllers/ActivityController.php
index bc99c9b5379e6cde92761b6de7800d22e0ce0ea7..c1b27cfc8060b9c4050ab74363fd1e2869345dbf 100644
--- a/application/modules/admin/controllers/ActivityController.php
+++ b/application/modules/admin/controllers/ActivityController.php
@@ -118,7 +118,7 @@ class Admin_ActivityController extends ZendAfi_Controller_Action {
 
 
   public function presencesAction() {
-    $session = Class_SessionActivity::getLoader()->find((int)$this->_getParam('id'));
+    $session = Class_SessionActivity::find((int)$this->_getParam('id'));
 
     if ($this->_request->isPost()) {
       $user_ids = $this->_request->getPost('user_ids');
@@ -144,26 +144,29 @@ class Admin_ActivityController extends ZendAfi_Controller_Action {
 
   protected function _presencesForm($session) {
     $user_checkboxes = new Zend_Form_Element_MultiCheckbox('user_ids');
-    $ids = array();
+    $ids = [];
+
     foreach($session->getSessionActivityInscriptions() as $inscription) {
       $user = $inscription->getStagiaire();
       if ($inscription->isPresent())
-        $ids[]=$user->getId();
+        $ids[] = $user->getId();
+
       $user_checkboxes->addMultiOption($user->getId(),
                                        sprintf('%s %s - %s',
                                                $user->getNom(),
                                                $user->getPrenom(),
                                                $user->getLogin()));
     }
+
     $user_checkboxes->setValue($ids);
 
     return $this->view
-      ->newForm(array('id' => 'presencesForm'))
+      ->newForm(['id' => 'presencesForm'])
       ->setMethod('post')
       ->addElement($user_checkboxes)
-      ->addDisplayGroup(array('user_ids'),
+      ->addDisplayGroup(['user_ids'],
                         'presences',
-                        array('legend' => 'Stagiaires présents'));
+                        ['legend' => $this->_('Stagiaires présents')]);
   }
 
 
diff --git a/library/Class/Entity.php b/library/Class/Entity.php
index 7b3e2df6eaff7306c30f84670d04372569cb9a44..10bab2a777e5dcc2c37cedf96e01097e18898833 100644
--- a/library/Class/Entity.php
+++ b/library/Class/Entity.php
@@ -80,6 +80,11 @@ class Class_Entity {
   }
 
 
+  public function callGetterByAttributeName($attribute) {
+    return call_user_func([$this, 'get' . Storm_Inflector::camelize($attribute)]);
+  }
+
+
   public function __toString() {
     return get_class($this);
   }
diff --git a/library/Class/SessionActivityInscription.php b/library/Class/SessionActivityInscription.php
index 622ed3b84be297816cea1f6e44ac2d50f6125d8a..158a45f94b021420e71e810256ef4ad10806cc9b 100644
--- a/library/Class/SessionActivityInscription.php
+++ b/library/Class/SessionActivityInscription.php
@@ -20,6 +20,8 @@
  */
 
 class Class_SessionActivityInscription extends Storm_Model_Abstract {
+  use Trait_Translator;
+
   protected $_table_name = 'session_activity_inscriptions';
   protected $_belongs_to = ['session_activity' => ['model' => 'Class_SessionActivity'],
                             'stagiaire' => ['model' => 'Class_Users'],
@@ -46,4 +48,18 @@ class Class_SessionActivityInscription extends Storm_Model_Abstract {
   public function isPresent() {
     return $this->getPresence();
   }
+
+
+  public function getStagiaire() {
+    if ($user = parent::_get('stagiaire'))
+      return $user;
+
+    $user = (new Class_Entity(['Id' => $this->getStagiaireId(),
+                               'Nom' => $this->_('Anonyme'),
+                               'Prenom' => '',
+                               'Login' => 'n/a']))
+      ->whenCalledDo('hasRightSuivreActivity', function() { return true; });
+
+    return $user;
+  }
 }
\ No newline at end of file
diff --git a/tests/application/modules/admin/controllers/ActivityControllerTest.php b/tests/application/modules/admin/controllers/ActivityControllerTest.php
index 708050e009e398f5badedb5575dd7f0082b7ce60..21183890842bac131f9b0d11bd15515c21e84e5d 100644
--- a/tests/application/modules/admin/controllers/ActivityControllerTest.php
+++ b/tests/application/modules/admin/controllers/ActivityControllerTest.php
@@ -117,7 +117,7 @@ abstract class Admin_ActivityControllerTestCase extends Admin_AbstractController
                                                 'lieu' => $this->_salle_reunion,
                                                 'date_limite_inscription'=>'2012-03-05',
                                                 'intervenants' => [$this->_prof_laurent],
-                                                'stagiaires' => []]);
+                                                ]);
 
     $this->_session_java_fevrier = $this->fixture('Class_SessionActivity',
                                                   ['id' => 31,
@@ -133,7 +133,6 @@ abstract class Admin_ActivityControllerTestCase extends Admin_AbstractController
       ->setSessions([$this->_session_java_mars, $this->_session_java_fevrier])
       ->assertSave();
 
-
     $this->_patrick_inscription = $this
       ->fixture('Class_SessionActivityInscription',
                 ['id' => 76,
@@ -150,11 +149,14 @@ abstract class Admin_ActivityControllerTestCase extends Admin_AbstractController
 
     $this->_benoit_inscription->beAbsent();
 
-    $this->_session_java_mars->setStagiaires([$this->_patrick,
-                                              $this->_benoit]);
-
-    $this->_session_java_mars->setSessionActivityInscriptions([$this->_patrick_inscription,
-                                                                 $this->_benoit_inscription]);
+    $this->_session_java_mars
+      ->setSessionActivityInscriptions([$this->_patrick_inscription,
+                                        $this->_benoit_inscription,
+                                        // deleted user registration
+                                        $this->fixture('Class_SessionActivityInscription',
+                                                       ['id' => 999,
+                                                        'stagiaire_id' => 999,
+                                                        'session_activity' => $this->_session_java_mars])]);
 
     $this->fixture('Class_Activity',
                    ['id' => 14, 'libelle' => 'Learn emptyness']);
@@ -587,8 +589,8 @@ class Admin_ActivityControllerIndexTest extends Admin_ActivityControllerTestCase
 
 
   /** @test */
-  function session_mars_27_LearnJavaShouldDisplayTwoParticipants() {
-    $this->assertXPathContentContains('//table//tr[2]//td', '2 / 5-25', $this->_response->getBody());
+  function session_mars_27_LearnJavaShouldDisplayThreeParticipants() {
+    $this->assertXPathContentContains('//table//tr[2]//td', '3 / 5-25', $this->_response->getBody());
   }
 
 
@@ -1488,6 +1490,7 @@ class Admin_ActivityControllerExportInscriptionsSessionMarsJavaTest extends  Adm
   /** @test */
   public function contentShouldContainsPatAndBenoit() {
     $this->assertContains("Nom;Prénom;Identifiant\n".
+                          "Anonyme;;n/a\n".
                           "Barroca;Patrick;Pat\n".
                           "Curzillat;Benoit;Benoit\n",
                           $this->_response->getBody());
@@ -1507,7 +1510,9 @@ class Admin_ActivityControllerExportInscriptionsSessionMarsJavaTest extends  Adm
 
 
 
-class Admin_ActivityControllerPresencesSessionJavaMars27Test extends  Admin_ActivityControllerTestCase  {
+class Admin_ActivityControllerPresencesSessionJavaMars27Test
+  extends Admin_ActivityControllerTestCase  {
+
   public function setUp() {
     parent::setUp();
     $this->dispatch('/admin/activity/presences/id/32');
@@ -1536,19 +1541,27 @@ class Admin_ActivityControllerPresencesSessionJavaMars27Test extends  Admin_Acti
   public function formShouldHaveCheckedCheckboxForPatrick() {
     $this->assertXPath('//input[@name="user_ids[]"][@value="5"][@checked="checked"]');
   }
+
+
+  /** @test */
+  public function formShouldHaveCheckedCheckboxForAnonymous() {
+    $this->assertXPath('//input[@name="user_ids[]"][@value="999"][not(@checked)]');
+  }
 }
 
 
 
 
-class Admin_ActivityControllerPostPresencesSessionJavaMars27Test extends  Admin_ActivityControllerTestCase  {
+class Admin_ActivityControllerPostPresencesSessionJavaMars27Test
+  extends Admin_ActivityControllerTestCase  {
+
   protected $_inscription_patrick, $_inscription_benoit;
 
   public function setUp() {
     parent::setUp();
 
-    $this->_inscription_patrick = Class_SessionActivityInscription::getLoader()->find(76);
-    $this->_inscription_benoit = Class_SessionActivityInscription::getLoader()->find(77);
+    $this->_inscription_patrick = Class_SessionActivityInscription::find(76);
+    $this->_inscription_benoit = Class_SessionActivityInscription::find(77);
 
     $this->postDispatch('/admin/activity/presences/id/32',
                         ['user_ids' => [12]]);
diff --git a/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php b/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php
index dc8b18f4cfa89b8d3fe1d153da00b44c8f025da7..bc02244a7ef85638276f9331a4dd9011d1a38c7b 100644
--- a/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php
+++ b/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php
@@ -1143,14 +1143,14 @@ class AbonneControllerPrintActionPretsTest extends AbonneControllerPretsListThre
                     'nom' => 'loans',
                     'contenu' => '<div style="page-break-inside:auto">{loans.each[
 <div style="page-break-inside:avoid; page-break-after:auto;overflow:hidden;float:left;clear:both;padding: 0.5em;margin: 0.5em 0;border: 1px solid black;width:190mm;box-shadow: 0px 0px 5px;">
-<h1>Titre : {getTitle}</h1>
+<h1>Titre : {title}</h1>
 <br />
-<span>{getThumbnail}</span><br />
-<span>emprunt&eacute; par : {getLoanedBy}</span><br />
-<span>code barre : {getBarCode}</span><br />
-<span>Auteur : {getAuthor}</span><br />
-<span>date de pr&ecirc;t : {getIssueDate}</span><br />
-<span>dates de retour pr&eacute;vu : {getReturnDate}</span></div>
+<span>{thumbnail}</span><br />
+<span>emprunt&eacute; par : {loaned_by}</span><br />
+<span>code barre : {bar_code}</span><br />
+<span>Auteur : {author}</span><br />
+<span>date de pr&ecirc;t : {issue_date}</span><br />
+<span>dates de retour pr&eacute;vu : {return_date}</span></div>
 ]}</div>']);
     $this->dispatch('abonne/print/ids/reload/strategy/Loans_List/modele_fusion/9', true);
   }