diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.js b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.js
index 7be420f6ef17b5fe887fa46de60263d556caf756..d951ab9d25ae42800aec7c2466048a6b33369e5f 100755
--- a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.js
+++ b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.js
@@ -21,6 +21,7 @@ var priorities_administration_component_1 = require("./priorities-administration
 var priority_administration_component_1 = require("./priority-administration.component");
 var reports_administration_component_1 = require("./reports-administration.component");
 var history_administration_component_1 = require("./history-administration.component");
+var historyBatch_administration_component_1 = require("./historyBatch-administration.component");
 var AdministrationRoutingModule = (function () {
     function AdministrationRoutingModule() {
     }
@@ -48,6 +49,7 @@ AdministrationRoutingModule = __decorate([
                 { path: 'administration/actions/new', component: action_administration_component_1.ActionAdministrationComponent },
                 { path: 'administration/actions/:id', component: action_administration_component_1.ActionAdministrationComponent },
                 { path: 'administration/history', component: history_administration_component_1.HistoryAdministrationComponent },
+                { path: 'administration/historyBatch', component: historyBatch_administration_component_1.HistoryBatchAdministrationComponent },
             ]),
         ],
         exports: [
diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts
index e0a6e89120633f412bfc84be9e134be5dfa2706b..7bfd72bcbc9493fd1ad5f33b1491e07eddb5d602 100755
--- a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts
+++ b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts
@@ -14,6 +14,7 @@ import { PrioritiesAdministrationComponent }    from './priorities-administratio
 import { PriorityAdministrationComponent }      from './priority-administration.component';
 import { ReportsAdministrationComponent }       from './reports-administration.component';
 import { HistoryAdministrationComponent }       from './history-administration.component';
+import { HistoryBatchAdministrationComponent }  from './historyBatch-administration.component';
 
 
 @NgModule({
@@ -37,6 +38,7 @@ import { HistoryAdministrationComponent }       from './history-administration.c
             { path: 'administration/actions/new', component: ActionAdministrationComponent },
             { path: 'administration/actions/:id', component: ActionAdministrationComponent },
             { path: 'administration/history', component: HistoryAdministrationComponent },
+            { path: 'administration/historyBatch', component: HistoryBatchAdministrationComponent },
         ]),
     ],
     exports: [
diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration.module.js b/apps/maarch_entreprise/js/angular/app/administration/administration.module.js
index 78b0101fa518965536624ad0bb8b2de08897cdb3..b5dbd70875b547f862af519ab34b7347c2e0bdfb 100755
--- a/apps/maarch_entreprise/js/angular/app/administration/administration.module.js
+++ b/apps/maarch_entreprise/js/angular/app/administration/administration.module.js
@@ -26,6 +26,7 @@ var priorities_administration_component_1 = require("./priorities-administration
 var priority_administration_component_1 = require("./priority-administration.component");
 var reports_administration_component_1 = require("./reports-administration.component");
 var history_administration_component_1 = require("./history-administration.component");
+var historyBatch_administration_component_1 = require("./historyBatch-administration.component");
 var AdministrationModule = (function () {
     function AdministrationModule() {
     }
@@ -55,6 +56,7 @@ AdministrationModule = __decorate([
             priority_administration_component_1.PriorityAdministrationComponent,
             reports_administration_component_1.ReportsAdministrationComponent,
             history_administration_component_1.HistoryAdministrationComponent,
+            historyBatch_administration_component_1.HistoryBatchAdministrationComponent,
             users_administration_component_1.DataTablePipe
         ]
     })
diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts b/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts
index 0bb19160eb84531560cbd1bea61dde3f4a85810d..0f69a994fc30e84d1f1695ed89ce35f9b55d8e46 100755
--- a/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts
+++ b/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts
@@ -20,6 +20,7 @@ import { PrioritiesAdministrationComponent }    from './priorities-administratio
 import { PriorityAdministrationComponent }      from './priority-administration.component';
 import { ReportsAdministrationComponent }       from './reports-administration.component';
 import { HistoryAdministrationComponent }       from './history-administration.component';
+import { HistoryBatchAdministrationComponent }  from './historyBatch-administration.component';
 
 
 @NgModule({
@@ -45,6 +46,7 @@ import { HistoryAdministrationComponent }       from './history-administration.c
         PriorityAdministrationComponent,
         ReportsAdministrationComponent,
         HistoryAdministrationComponent,
+        HistoryBatchAdministrationComponent,
         DataTablePipe
     ]
 })
diff --git a/apps/maarch_entreprise/js/angular/lang/lang-fr.js b/apps/maarch_entreprise/js/angular/lang/lang-fr.js
index fcf21187164d95ee4f6d43bb79f402eb73d6c6f4..008d7f257e083862d5395e4c520ceb2d69b13e05 100755
--- a/apps/maarch_entreprise/js/angular/lang/lang-fr.js
+++ b/apps/maarch_entreprise/js/angular/lang/lang-fr.js
@@ -70,97 +70,103 @@ exports.LANG_FR = {
     search: "Chercher",
     filterBy: "Filtrer par",
     //Users
-    user: "Utilisateur",
-    users: "Utilisateur(s)",
-    userAdded: "Utilisateur ajouté",
-    userUpdated: "Utilisateur modifié",
-    userSuspended: "Utilisateur suspendu",
-    userAuthorized: "Utilisateur autorisé",
-    userDeleted: "Utilisateur supprimé",
-    pswReseted: "Mot de passe réinitialisé",
-    status: "Statut",
-    informations: "Informations",
-    firstname: "Prénom",
-    lastname: "Nom",
+    absOff: "Absence désactivé",
+    absOn: "Absence activé",
+    activateAbs: "Activer l'absence",
+    color: "Couleur",
     email: "Email",
-    phoneNumber: "Numéro de téléphone",
-    role: "Rôle",
     emailSignatures: "Signatures de mail",
-    sbSignatures: "Signatures de parapheur",
-    initials: "Initiales",
+    entities: "Entités",
     fingerprint: "Empreinte numérique",
-    color: "Couleur",
-    label: "Label",
-    processDelay: "Délai de traitement",
-    workingDays: "Jours travaillés",
+    firstname: "Prénom",
     folders: "Dossiers",
     groups: "Groupes",
-    entities: "Entités",
+    informations: "Informations",
+    initials: "Initiales",
+    label: "Label",
+    lastname: "Nom",
+    phoneNumber: "Numéro de téléphone",
     primaryEntity: "Entité Primaire",
-    secondaryEntity: "Entité Secondaire",
+    processDelay: "Délai de traitement",
+    pswReseted: "Mot de passe réinitialisé",
     resetPsw: "Réinitialiser le mot de passe",
+    role: "Rôle",
+    sbSignatures: "Signatures de parapheur",
+    secondaryEntity: "Entité Secondaire",
     signAdded: "Signature ajoutée",
-    signUpdated: "Signature modifiée",
     signDeleted: "Signature supprimée",
-    activateAbs: "Activer l'absence",
-    absOn: "Absence activé",
-    absOff: "Absence désactivé",
+    signUpdated: "Signature modifiée",
+    status: "Statut",
+    user: "Utilisateur",
+    userAdded: "Utilisateur ajouté",
+    userAuthorized: "Utilisateur autorisé",
+    userDeleted: "Utilisateur supprimé",
+    users: "Utilisateur(s)",
+    userSuspended: "Utilisateur suspendu",
+    userUpdated: "Utilisateur modifié",
+    workingDays: "Jours travaillés",
     //Group
     groupAdded: "Groupe ajouté",
-    groupUpdated: "Groupe modifié",
     groupDeleted: "Groupe supprimé",
+    groupUpdated: "Groupe modifié",
     //Entity
     entityAdded: "Entité ajouté",
-    entityUpdated: "Entité modifié",
     entityDeleted: "Entité supprimé",
     entityTooglePrimary: "Passage en entité primaire",
+    entityUpdated: "Entité modifié",
     //Actions
+    action: "Action",
     actionAdded: "Action ajoutée",
-    actionUpdated: "Action modifiée",
-    actionDeleted: "Action supprimée",
     actionCreation: "Création d'une action",
-    actionModification: "Modification de l'action",
-    action: "Action",
+    actionDeleted: "Action supprimée",
     actionHistory: "Tracer l'action",
     actionHistoryDesc: "Permet tracer cette action dans l'historique du document. Il est fortement recommandé de cocher cette option.",
+    actionModification: "Modification de l'action",
     actionModified: "Modification de l'action",
     actionPage: "Page de résultat de l'action",
     actions: "Action(s)",
+    actionUpdated: "Action modifiée",
     associatedStatus: "Statut associé",
     chooseCategoryAssociation: "Choisissez une ou plusieurs catégories associée",
     chooseCategoryAssociationHelp: "Si aucune catégorie sélectionnée alors l'action est valable pour toute les catégories",
     doNotModifyUnlessExpert: "Ne pas modifier cette section à moins de savoir ce que vous faites. Un mauvais paramètrage peut entrainer des dysfonctionnements de l'application!",
     infosActions: "Vous devez choisir au moins un statut et / ou un script.",
     isFolderAction: "Action de dossier",
-    isSytemAction: "Action système",
     isFolderActionDesc: "Permet d'utiliser cette action dans une bannette de dossier",
+    isSytemAction: "Action système",
     keyword: "Mot clé",
     newAction: "Nouvelle action",
-    //Parametre
+    //Parameter
+    date: "Date",
+    integer: "Entier",
     parameterAdded: "Paramètre ajouté",
-    parameterUpdated: "Paramètre modifié",
-    parameterDeleted: "Paramètre supprimé",
     parameterCreation: "Création d'un paramètre",
+    parameterDeleted: "Paramètre supprimé",
     parameterModification: "Modification du paramètre",
     parameters: "Paramètre(s)",
-    type: "Type",
+    parameterUpdated: "Paramètre modifié",
     string: "Chaine de caratère",
-    integer: "Entier",
-    date: "Date",
+    type: "Type",
     //Status
-    statusCreation: "Création d'un statut",
-    statusModification: "Modification du statut",
-    statuses: "Statut(s)",
-    imgRelated: "Image associée",
-    canBeSearched: "Recherche",
     canBeModified: "Modification des index",
+    canBeSearched: "Recherche",
+    imgRelated: "Image associée",
     isFolderStatus: "Statut de dossier",
     statusAdded: "Statut ajouté",
-    statusUpdated: "Statut mis à jour",
+    statusCreation: "Création d'un statut",
     statusDeleted: "Statut supprimé",
+    statuses: "Statut(s)",
+    statusModification: "Modification du statut",
+    statusUpdated: "Statut mis à jour",
     //History
-    history: "Historique(s)",
+    dataOfMonth: "Données du mois",
     entries: "entrée(s)",
     event: "Événement",
-    dataOfMonth: "Données du mois"
+    history: "Historique",
+    ip: "Adresse IP",
+    //HistoryBatch
+    historyBatch: "Historique des batchs",
+    totalProcessed: "Élément(s) analysé(s)",
+    totalErrors: "Élément(s) en erreur",
+    module: "Module"
 };
diff --git a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
index 503c53c694337abb5147485bf5f39e570952713f..44889050a6ca795446fb0600537c1b81e5592053 100755
--- a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
+++ b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
@@ -73,105 +73,113 @@ export const LANG_FR = {
     filterBy: "Filtrer par",
 
     //Users
-    user: "Utilisateur",
-    users: "Utilisateur(s)",
-    userAdded: "Utilisateur ajouté",
-    userUpdated: "Utilisateur modifié",
-    userSuspended: "Utilisateur suspendu",
-    userAuthorized: "Utilisateur autorisé",
-    userDeleted: "Utilisateur supprimé",
-    pswReseted: "Mot de passe réinitialisé",
-    status: "Statut",
-    informations: "Informations",
-    firstname: "Prénom",
-    lastname: "Nom",
+    absOff: "Absence désactivé",
+    absOn: "Absence activé",
+    activateAbs: "Activer l'absence",
+    color: "Couleur",
     email: "Email",
-    phoneNumber: "Numéro de téléphone",
-    role: "Rôle",
     emailSignatures: "Signatures de mail",
-    sbSignatures: "Signatures de parapheur",
-    initials: "Initiales",
+    entities: "Entités",
     fingerprint: "Empreinte numérique",
-    color: "Couleur",
-    label: "Label",
-    processDelay: "Délai de traitement",
-    workingDays: "Jours travaillés",
+    firstname: "Prénom",
     folders: "Dossiers",
     groups: "Groupes",
-    entities: "Entités",
+    informations: "Informations",
+    initials: "Initiales",
+    label: "Label",
+    lastname: "Nom",
+    phoneNumber: "Numéro de téléphone",
     primaryEntity: "Entité Primaire",
-    secondaryEntity: "Entité Secondaire",
+    processDelay: "Délai de traitement",
+    pswReseted: "Mot de passe réinitialisé",
     resetPsw: "Réinitialiser le mot de passe",
+    role: "Rôle",
+    sbSignatures: "Signatures de parapheur",
+    secondaryEntity: "Entité Secondaire",
     signAdded: "Signature ajoutée",
-    signUpdated: "Signature modifiée",
     signDeleted: "Signature supprimée",
-    activateAbs: "Activer l'absence",
-    absOn: "Absence activé",
-    absOff: "Absence désactivé",
+    signUpdated: "Signature modifiée",
+    status: "Statut",
+    user: "Utilisateur",
+    userAdded: "Utilisateur ajouté",
+    userAuthorized: "Utilisateur autorisé",
+    userDeleted: "Utilisateur supprimé",
+    users: "Utilisateur(s)",
+    userSuspended: "Utilisateur suspendu",
+    userUpdated: "Utilisateur modifié",
+    workingDays: "Jours travaillés",
     
     
     //Group
     groupAdded: "Groupe ajouté",
-    groupUpdated: "Groupe modifié",
     groupDeleted: "Groupe supprimé",
+    groupUpdated: "Groupe modifié",
 
     //Entity
     entityAdded: "Entité ajouté",
-    entityUpdated: "Entité modifié",
     entityDeleted: "Entité supprimé",
     entityTooglePrimary: "Passage en entité primaire",
+    entityUpdated: "Entité modifié",
     
     //Actions
+    action: "Action",
     actionAdded: "Action ajoutée",
-    actionUpdated: "Action modifiée",
-    actionDeleted: "Action supprimée",
     actionCreation: "Création d'une action",
-    actionModification: "Modification de l'action",
-    action: "Action",
+    actionDeleted: "Action supprimée",
     actionHistory: "Tracer l'action",
     actionHistoryDesc: "Permet tracer cette action dans l'historique du document. Il est fortement recommandé de cocher cette option.",
+    actionModification: "Modification de l'action",
     actionModified: "Modification de l'action",
     actionPage: "Page de résultat de l'action",
     actions: "Action(s)",
+    actionUpdated: "Action modifiée",
     associatedStatus: "Statut associé",
     chooseCategoryAssociation: "Choisissez une ou plusieurs catégories associée",
     chooseCategoryAssociationHelp: "Si aucune catégorie sélectionnée alors l'action est valable pour toute les catégories",
     doNotModifyUnlessExpert: "Ne pas modifier cette section à moins de savoir ce que vous faites. Un mauvais paramètrage peut entrainer des dysfonctionnements de l'application!",
     infosActions: "Vous devez choisir au moins un statut et / ou un script.",
     isFolderAction: "Action de dossier",
-    isSytemAction: "Action système",
     isFolderActionDesc: "Permet d'utiliser cette action dans une bannette de dossier",
+    isSytemAction: "Action système",
     keyword: "Mot clé",
     newAction: "Nouvelle action",
 
-    //Parametre
+    //Parameter
+    date:"Date",
+    integer:"Entier",
     parameterAdded: "Paramètre ajouté",
-    parameterUpdated: "Paramètre modifié",
-    parameterDeleted: "Paramètre supprimé",
     parameterCreation: "Création d'un paramètre",
+    parameterDeleted: "Paramètre supprimé",
     parameterModification: "Modification du paramètre",
     parameters: "Paramètre(s)",
-    type:"Type",
+    parameterUpdated: "Paramètre modifié",
     string:"Chaine de caratère",
-    integer:"Entier",
-    date:"Date",
+    type:"Type",
 
     //Status
-    statusCreation: "Création d'un statut",
-    statusModification: "Modification du statut",
-    statuses: "Statut(s)",
-    imgRelated: "Image associée",
-    canBeSearched: "Recherche",
     canBeModified: "Modification des index",
+    canBeSearched: "Recherche",
+    imgRelated: "Image associée",
     isFolderStatus: "Statut de dossier",
     statusAdded: "Statut ajouté",
-    statusUpdated: "Statut mis à jour",
+    statusCreation: "Création d'un statut",
     statusDeleted: "Statut supprimé",
+    statuses: "Statut(s)",
+    statusModification: "Modification du statut",
+    statusUpdated: "Statut mis à jour",
 
     //History
-    history: "Historique(s)",
+    dataOfMonth: "Données du mois",
     entries: "entrée(s)",
     event: "Événement",
-    dataOfMonth: "Données du mois"
+    history: "Historique",
+    ip: "Adresse IP",
+
+    //HistoryBatch
+    historyBatch: "Historique des batchs",
+    totalProcessed: "Élément(s) analysé(s)",
+    totalErrors: "Élément(s) en erreur",
+    module: "Module"
+    
     
 };
\ No newline at end of file
diff --git a/apps/maarch_entreprise/js/angularFunctions.js b/apps/maarch_entreprise/js/angularFunctions.js
index eb4e12574c462aae03ac84e6f139aabb87bb08b6..f5da0fbb7bc586257891431c3f744388dfc3a15f 100755
--- a/apps/maarch_entreprise/js/angularFunctions.js
+++ b/apps/maarch_entreprise/js/angularFunctions.js
@@ -10,6 +10,7 @@ function triggerAngular(prodmode, locationToGo) {
         'actions-administration',
         'action-administration',
         'history-administration',
+        'historyBatch-administration',
         'profile',
         'signature-book',
         'parameter-administration',
diff --git a/apps/maarch_entreprise/xml/services.xml b/apps/maarch_entreprise/xml/services.xml
index faa280989f81a5eeee4e8add3adfefbdef46cbf8..4f9c63bb158c1e8317f8bbfc70f48dc9d01fafd2 100755
--- a/apps/maarch_entreprise/xml/services.xml
+++ b/apps/maarch_entreprise/xml/services.xml
@@ -78,11 +78,12 @@
    <id>view_history_batch</id>
    <name>_VIEW_HISTORY_BATCH</name>
    <comment>_VIEW_HISTORY_BATCH_DESC</comment>
-   <servicepage>index.php?page=history_batch&amp;admin=history_batch</servicepage>
+   <servicepage>/administration/historyBatch</servicepage>
    <servicetype>admin</servicetype>
    <system_service>false</system_service>
    <style>fa fa-history</style>
    <enabled>true</enabled>
+   <angular>true</angular>
  </SERVICE>
  <!--<SERVICE>
    <id>xml_param_services</id>
diff --git a/core/Controllers/HistoryController.php b/core/Controllers/HistoryController.php
index 67d71e74d999e31746ada305527c770929e6b5f2..eec4dd47aac0d5b77e7b955217ea23e091db2dbb 100755
--- a/core/Controllers/HistoryController.php
+++ b/core/Controllers/HistoryController.php
@@ -262,4 +262,19 @@ class HistoryController
 
         return $response->withJson($return);
     }
+
+    public function getBatchForAdministration(RequestInterface $request, ResponseInterface $response, $aArgs)
+    {
+        if (!ServiceModel::hasService(['id' => 'view_history_batch', 'userId' => $_SESSION['user']['UserId'], 'location' => 'apps', 'type' => 'admin'])) {
+            return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
+        }
+        $return = [];
+        $historyList = HistoryModel::getHistoryBatchList(['event_date' => $aArgs['date']]);
+        $historyListFilters['modules'] = HistoryModel::getBatchFilter(['select' => 'module_name','event_date' => $aArgs['date']]);
+        
+        $return['filters'] = $historyListFilters;
+        $return['historyList'] = $historyList;
+
+        return $response->withJson($return);
+    }
 }
diff --git a/core/Models/HistoryModelAbstract.php b/core/Models/HistoryModelAbstract.php
index 690a0f483e8f78ef76145354d68434128362b851..a973d6f203f8034ebc669126058c7152130cd301 100755
--- a/core/Models/HistoryModelAbstract.php
+++ b/core/Models/HistoryModelAbstract.php
@@ -132,6 +132,22 @@ class HistoryModelAbstract
         return $aReturn;
     }
 
+    public static function getHistoryBatchList(array $aArgs = [])
+    {
+        ValidatorModel::notEmpty($aArgs, ['event_date']);
+
+        $aReturn = DatabaseModel::select(
+            [
+            'select'    => empty($aArgs['select']) ? ['*'] : $aArgs['select'],
+            'table'     => ['history_batch'],
+            'where'     => ["event_date >= date '".$aArgs['event_date']."'","event_date < date '".$aArgs['event_date']."' + interval '1 month'"],
+            'order_by'  => ['event_date DESC']
+            ]
+        );
+
+        return $aReturn;
+    }
+
     public static function getHistoryByUserId(array $aArgs = [])
     {
         ValidatorModel::notEmpty($aArgs, ['userId']);
@@ -166,4 +182,21 @@ class HistoryModelAbstract
 
         return $aReturn;
     }
+
+    public static function getBatchFilter(array $aArgs = [])
+    {
+        ValidatorModel::notEmpty($aArgs, ['select','event_date']);
+        ValidatorModel::stringType($aArgs, ['select']);
+
+        $aReturn = DatabaseModel::select(
+            [
+            'select'    => ['DISTINCT('.$aArgs['select'].')'],
+            'table'     => ['history_batch'],
+            'where'     => ["event_date >= date '".$aArgs['event_date']."'","event_date < date '".$aArgs['event_date']."' + interval '1 month'"],
+            'order_by'  => [$aArgs['select'].' ASC']
+            ]
+        );
+
+        return $aReturn;
+    }
 }
diff --git a/rest/index.php b/rest/index.php
index caf6c8282ce8f3840048b37041b199fb5d96f4be..e1d88b06003b041e4242f46b68618acf13873523 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -207,6 +207,9 @@ $app->delete('/priorities/{id}', \Core\Controllers\PriorityController::class . '
 //History
 $app->get('/administration/history/eventDate/{date}', \Core\Controllers\HistoryController::class . ':getForAdministration');
 
+//HistoryBatch
+$app->get('/administration/historyBatch/eventDate/{date}', \Core\Controllers\HistoryController::class . ':getBatchForAdministration');
+
 
 //actions
 $app->get('/administration/actions', \Core\Controllers\ActionsController::class . ':getForAdministration');