diff --git a/VERSIONS_HOTLINE/80947 b/VERSIONS_HOTLINE/80947
new file mode 100644
index 0000000000000000000000000000000000000000..af6ddbbe33bb66fee8a146abf25da1cc123511af
--- /dev/null
+++ b/VERSIONS_HOTLINE/80947
@@ -0,0 +1 @@
+ - ticket #80947 : Agenda externe : ne met pas à jour les articles déjà présent dans la base.
\ No newline at end of file
diff --git a/library/Class/ExternalAgenda.php b/library/Class/ExternalAgenda.php
index ada348c13beea5ca555dee3b77937e297cc2cefb..351137d00d47aaadca2853e955904c430c082d91 100644
--- a/library/Class/ExternalAgenda.php
+++ b/library/Class/ExternalAgenda.php
@@ -27,7 +27,7 @@ class Class_ExternalAgendaLoader extends Storm_Model_Loader {
       $results = $agenda->import();
       $logger->log($agenda->getLabel().":\n");
       $logger->log($agenda->_("Nombre d\'événements créés : %s\n",count($results['new'])));
-      $logger->log($agenda->_("Nombre d\'événements mis à jour : %s\n",count($results['update'])));
+      $logger->log($agenda->_("Nombre d\'événements non mis à jour : %s\n",count($results['update'])));
     }
   }
 }
@@ -62,7 +62,7 @@ class Class_ExternalAgenda extends Storm_Model_Abstract {
     $events = $service->import($this);
     $results['new'] = $events->select('isNew');
     $results['update'] = $events->reject('isNew');
-    $events->eachDo('save');
+    $results['new']->eachDo('save');
     return $results;
   }
 
diff --git a/tests/scenarios/ExternalAgendas/ExternalAgendasBatchTest.php b/tests/scenarios/ExternalAgendas/ExternalAgendasBatchTest.php
index 0bf5fd171e1a76e42500c3a3ddfb6470ce40f450..7b8fa45ed66bd14a52bf72167f2466cadf27cced 100644
--- a/tests/scenarios/ExternalAgendas/ExternalAgendasBatchTest.php
+++ b/tests/scenarios/ExternalAgendas/ExternalAgendasBatchTest.php
@@ -98,7 +98,89 @@ class Class_Batch_ExternalAgendasBatchSimpleTest extends Class_Batch_ExternalAge
 
   /** @test */
   public function logShouldDisplayNumberOfCreatedEvents() {
-    $this->assertEquals("Extra Agenda:\nNombre d\'événements créés : 4\nNombre d\'événements mis à jour : 0\n",$this->_log);
+    $this->assertEquals("Extra Agenda:\nNombre d\'événements créés : 4\nNombre d\'événements non mis à jour : 0\n",$this->_log);
+  }
+}
+
+
+
+
+class Class_Batch_ExternalAgendasBatchRewriteTest extends Class_Batch_ExternalAgendasBatchTestCase {
+  protected $_batch;
+
+  public function setUp() {
+    parent::setUp();
+
+
+    $this->valleiry = $this->fixture('Class_Bib',
+                                     ['id' => 1,
+                                      'libelle' => 'Valleiry']);
+
+    $events_category = $this->fixture('Class_ArticleCategorie',
+                                            ['id' => 1,
+                                             'libelle' => 'Events',
+                                             'bib' => $this->valleiry]);
+
+    $this->fixture('Class_Article',
+                   ['id' => 1,
+                    'titre' => 'Jeux coopératifs',
+                    'contenu' => 'changement de contenu',
+                    'events_debut' => "2016-05-25 08:30",
+                    'events_fin' => "2016-05-25 10:00",
+                    'indexation' => 1,
+                    'cacher_titre' => 0,
+                    'date_maj' => "2018-04-16 09:33:58",
+                    'date_creation' => "2016-04-16 09:33:58",
+                    'status' => 1,
+                    'id_cat' => 3,
+                    'id_origine' => "68390f0f2752ba7664c05b00d1b51714",
+                    'repository_origine' => "External_Agenda:34",
+                    'refus_message' =>"L'article a été refusé."
+                   ]);
+
+
+    $this->fixture('Class_ExternalAgenda',
+                   ['id' => 1,
+                    'label' => 'Personal Agenda',
+                    'url' => 'http://my.server.com/calendar.ics',
+                    'autoharvest' => 0,
+                    'status' => Class_Article::STATUS_VALIDATED,
+                    'category' => $events_category]);
 
+    $this->fixture('Class_ExternalAgenda',
+                   ['id' => 34,
+                    'label' => 'Extra Agenda',
+                    'url' => 'http://external.agenda.com/export?type=ics',
+                    'category' => $events_category,
+                    'id_lieu' => 0,
+                    'autoharvest' => 1,
+                    'status' => Class_Article::STATUS_VALIDATED]);
+
+    Class_WebService_ICalendar::setDefaultHttpClient($this->mock()
+                                                     ->whenCalled('open_url')
+                                                     ->with('http://external.agenda.com/export?type=ics')
+                                                     ->answers(file_get_contents(__DIR__.'/ical-event-second.ics')));
+
+    $this->_batch = new Class_Batch_ExternalAgenda();
+    $this->_batch->setLogger($this->getLogger());
+    $this->_batch->run();
+  }
+
+
+  /** @test */
+  public function labelShouldBeHarvestExternalAgenda() {
+    $this->assertEquals('Moissonner les agendas externes', $this->_batch->getLabel());
+  }
+
+
+  /** @test */
+  public function logShouldDisplayNumberOfCreatedEvents() {
+    $this->assertEquals("Extra Agenda:\nNombre d\'événements créés : 3\nNombre d\'événements non mis à jour : 1\n",$this->_log);
+
+  }
+
+  /** @test */
+  public function articleJeuxCooperatifShouldKeepModifiedContent() {
+    $this->assertEquals('changement de contenu', Class_Article::find(1)->getContenu());
   }
 }