diff --git a/appinfo/routes.php b/appinfo/routes.php
index af8b224e3202c5cce0024cf1505aedaa820729f0..0786509847f0c39858861c623ac7877eaa634811 100644
--- a/appinfo/routes.php
+++ b/appinfo/routes.php
@@ -20,6 +20,8 @@ return [
         ['name' => 'page#archive_list', 'url' => '/archive_list', 'verb' => 'GET'],
         ['name' => 'page#archive_action', 'url' => '/archive_action', 'verb' => 'POST'],
         ['name' => 'page#archive_csv', 'url' => '/archive_csv', 'verb' => 'GET'],
-        ['name' => 'page#user_list', 'url' => '/user_list', 'verb' => ['GET', 'POST']],
+        //['name' => 'page#user_list', 'url' => '/user_list', 'verb' => ['GET', 'POST']],
+        ['name' => 'page#user_list', 'url' => '/user_list', 'verb' => 'GET'],
+        ['name' => 'page#user_list', 'url' => '/user_list', 'verb' => 'POST'],
     ]
 ];
diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php
index 1b104ee5921d3421b108bbdf1a8c43bae2823d36..fb9e766a177df341d0dd6097ec225f5e0a0812ab 100644
--- a/lib/Controller/PageController.php
+++ b/lib/Controller/PageController.php
@@ -5,10 +5,9 @@ use OC\Files\Filesystem;
 use OCP\Files\NotFoundException;
 use OCP\IConfig;
 use OCP\IL10N;
+use OCP\IURLGenerator;
 use OCP\IRequest;
 use OCP\AppFramework\Http\TemplateResponse;
-//use OCP\AppFramework\Http\DataResponse;
-//use OCP\AppFramework\Http\JSONResponse;
 use OCP\AppFramework\Controller;
 
 use OC;
@@ -25,8 +24,8 @@ use OCA\Dematpayslip\Db\DematpayslipProcessSkipMapper;
 use OCA\Dematpayslip\Db\DematpayslipUser;
 use OCA\Dematpayslip\Db\DematpayslipUserMapper;
 
+// Pastell
 use OCA\Pastell\Db\PastellConfigFlowMapper;
-
 use OCA\Pastell\PastellAPI;
 
 class PageController extends Controller {
@@ -105,6 +104,9 @@ class PageController extends Controller {
     /** @var IL10N */
     private $l;
 
+    /** @var IURLGenerator */
+    private $_urlGenerator;
+
     /** @var string User Id */
     private $userId;
 
@@ -150,6 +152,13 @@ class PageController extends Controller {
     /** @var array User */
     private $_userList;
 
+    /**
+     * Pastell app exists
+     *
+     * @var bool
+     */
+    private $_pastellAppExists = false;
+
 
     /**
      * Check if payslip file has not been archived yet
@@ -202,12 +211,12 @@ class PageController extends Controller {
             }
         }
 
-        // Pastell API config
-        $pastellConfigFlowId = $this->config->getAppValue($this->appName, 'pastell_config_f' . $archiveFlowNum . '_id', '');
-        $pastellConfigFlowMapper = new PastellConfigFlowMapper(OC::$server->getDatabaseConnection());
-        $pastellConfigFlow = $pastellConfigFlowMapper->find($pastellConfigFlowId);
-
         try {
+            // Pastell API config
+            $pastellConfigFlowId = $this->config->getAppValue($this->appName, 'pastell_config_f' . $archiveFlowNum . '_id', '');
+            $pastellConfigFlowMapper = new PastellConfigFlowMapper(OC::$server->getDatabaseConnection());
+            $pastellConfigFlow = $pastellConfigFlowMapper->find($pastellConfigFlowId);
+
             // Pastell API connection
             $pastellAPI = new PastellAPI($pastellConfigFlow->getIdConfig());
 
@@ -423,7 +432,8 @@ class PageController extends Controller {
             'canCancelProcess' => $this->_canCancelProcess,
             'msgList'          => $this->_msgList,
             'processArr'       => $this->_process->jsonSerialize(),
-            'userArr'          => array('id' => $this->userId)
+            'userArr'          => array('id' => $this->userId),
+            'pastellAppExists' => $this->_pastellAppExists,
         );
     }
 
@@ -995,18 +1005,18 @@ class PageController extends Controller {
      * Load config
      */
     private function _loadConfig() {
-        $this->_dematpayslipConfigList['payslip_dir']  = OC::$server->getConfig()->getAppValue($this->appName, 'payslip_dir', 'Bulletins'); // Bulletins
-        $this->_dematpayslipConfigList['user_id']      = OC::$server->getConfig()->getAppValue($this->appName, 'user_id', 'demat');     // demat
-        $this->_dematpayslipConfigList['app_data_dir'] = OC::$server->getConfig()->getAppValue($this->appName, 'app_data_dir', 'dematpayslip'); // dematpayslip directory of user demat (upload, check, report, etc)
+        $this->_dematpayslipConfigList['payslip_dir']  = $this->config->getAppValue($this->appName, 'payslip_dir', 'Bulletins'); // Bulletins
+        $this->_dematpayslipConfigList['user_id']      = $this->config->getAppValue($this->appName, 'user_id', 'demat');     // demat
+        $this->_dematpayslipConfigList['app_data_dir'] = $this->config->getAppValue($this->appName, 'app_data_dir', 'dematpayslip'); // dematpayslip directory of user demat (upload, check, report, etc)
         if (empty($this->_dematpayslipConfigList['payslip_dir']) || empty($this->_dematpayslipConfigList['user_id'])) {
             $this->_msgList['error'][] = $this->l->t('Veuillez vérifier la configuration de cette application.');
         }
 
-        $pastellUse = OC::$server->getConfig()->getAppValue($this->appName, 'pastell_use', '');
+        $pastellUse = $this->config->getAppValue($this->appName, 'pastell_use', '');
         if (!empty($pastellUse)) {
             // check Pastell API config
-            $pastellConfigFlow1Id = OC::$server->getConfig()->getAppValue($this->appName, 'pastell_config_f1_id', '');
-            $pastellConfigFlow2Id = OC::$server->getConfig()->getAppValue($this->appName, 'pastell_config_f2_id', '');
+            $pastellConfigFlow1Id = $this->config->getAppValue($this->appName, 'pastell_config_f1_id', '');
+            $pastellConfigFlow2Id = $this->config->getAppValue($this->appName, 'pastell_config_f2_id', '');
             if (!($pastellConfigFlow1Id > 0) || !($pastellConfigFlow2Id > 0)) {
                 $this->_msgList['error'][] = $this->l->t('Veuillez vérifier la configuration de cette application.');
             }
@@ -1020,6 +1030,7 @@ class PageController extends Controller {
      * @param   IRequest                            $request                            Request
      * @param   IConfig                             $config                             Config
      * @param   IL10N                               $l                                  Lang
+     * @param   IURLGenerator                       $urlGenerator                       Url generator
      * @param   DematpayslipProcessMapper           $dematpayslipProcessMapper          Dematpayslip process mapper
      * @param   DematpayslipProcessSkipMapper       $dematpayslipProcessSkipMapper      Dematpayslip process skip mapper
      * @param   DematpayslipUserMapper              $dematpayslipUserMapper             Dematpayslip user mapper
@@ -1030,6 +1041,7 @@ class PageController extends Controller {
         IRequest $request,
         IConfig $config,
         IL10N $l,
+        IURLGenerator $urlGenerator,
         DematpayslipProcessMapper $dematpayslipProcessMapper,
         DematpayslipProcessSkipMapper $dematpayslipProcessSkipMapper,
         DematpayslipUserMapper $dematpayslipUserMapper,
@@ -1038,10 +1050,17 @@ class PageController extends Controller {
 		parent::__construct($AppName, $request);
 		$this->config                          = $config;
 		$this->l                               = $l;
+		$this->_urlGenerator                   = $urlGenerator;
+        $this->userId                          = $UserId;
+
+		// Dematpayslip
 		$this->_dematpayslipProcessMapper      = $dematpayslipProcessMapper;
         $this->_dematpayslipProcessSkipMapper  = $dematpayslipProcessSkipMapper;
         $this->_dematpayslipUserMapper         = $dematpayslipUserMapper;
-        $this->userId                          = $UserId;
+
+        // check if Pastell app exists
+        $pastellAppDir = __DIR__ . '/../../../pastell';
+        if (is_dir($pastellAppDir)) $this->_pastellAppExists = true;
 
         // load config
         $this->_loadConfig();
@@ -1777,8 +1796,10 @@ class PageController extends Controller {
             $launchArchive    = filter_input(INPUT_POST, 'payslip_launch_archive', FILTER_SANITIZE_NUMBER_INT);
             $launchIndexation = intval($launchIndexation);
             $launchArchive    = intval($launchArchive);
-            if ($launchIndexation != 1 && $launchArchive != 1) {
-                $this->_msgList['error'][] = $this->l->t('Veuillez sélectionner au moins un élément entre "Indexation" et "Archivage".');
+            if ($this->_pastellAppExists === true) {
+                if ($launchIndexation != 1 && $launchArchive != 1) {
+                    $this->_msgList['error'][] = $this->l->t('Veuillez sélectionner au moins un élément entre "Indexation" et "Archivage".');
+                }
             }
 
             if (count($this->_msgList['error']) <= 0) {
diff --git a/lib/Db/DematpayslipProcessSkipMapper.php b/lib/Db/DematpayslipProcessSkipMapper.php
index c44c9447ff1a8d16fdd8242ea81818c67d5debce..b327cff32b996c5a406d8fea033659085828ccd6 100644
--- a/lib/Db/DematpayslipProcessSkipMapper.php
+++ b/lib/Db/DematpayslipProcessSkipMapper.php
@@ -7,7 +7,7 @@ use OCP\AppFramework\Db\QBMapper;
 class DematpayslipProcessSkipMapper extends QBMapper {
 
     public function __construct(IDbConnection $db) {
-        parent::__construct($db, 'dematpayslip_process_skip', DematpayslipProcessSkip::class);
+        parent::__construct($db, 'demat_process_skip', DematpayslipProcessSkip::class);
     }
 
     public function find(int $id) {
diff --git a/lib/Migration/Version010002Date20191029020000.php b/lib/Migration/Version010002Date20191029020000.php
index fe35d3721c4ca8c78d43acad0323f09ce5b8174c..ddfcf6956fb65f3b2edf69b57a6dcf1821528b89 100644
--- a/lib/Migration/Version010002Date20191029020000.php
+++ b/lib/Migration/Version010002Date20191029020000.php
@@ -19,8 +19,8 @@ class Version010002Date20191029020000 extends SimpleMigrationStep {
         /** @var ISchemaWrapper $schema */
         $schema = $schemaClosure();
 
-        if (!$schema->hasTable('dematpayslip_process_skip')) {
-            $table = $schema->createTable('dematpayslip_process_skip');
+        if (!$schema->hasTable('demat_process_skip')) {
+            $table = $schema->createTable('demat_process_skip');
             $table->addColumn('id', 'integer', [
                 'autoincrement' => true,
                 'notnull' => true,
@@ -35,7 +35,7 @@ class Version010002Date20191029020000 extends SimpleMigrationStep {
             ]);
 
             $table->setPrimaryKey(['id']);
-            $table->addUniqueIndex(['id_process', 'id_line'], 'dematpayslip_process_skip_line');
+            $table->addUniqueIndex(['id_process', 'id_line'], 'demat_process_skip_line');
         }
 
         return $schema;
diff --git a/lib/Migration/Version010003Date20191115020000.php b/lib/Migration/Version010003Date20191115020000.php
index 9ea4b073d2e7183b3c25e538a87480a825179c98..2473e9f774036fb79de6b803b4a5d60b99e5cd2a 100644
--- a/lib/Migration/Version010003Date20191115020000.php
+++ b/lib/Migration/Version010003Date20191115020000.php
@@ -28,7 +28,7 @@ class Version010003Date20191115020000 extends SimpleMigrationStep {
         $table->dropIndex('dematpayslip_user_user_id');
         $table->dropIndex('dematpayslip_user_matricule');
         $table->dropIndex('dematpayslip_user_email');
-        $table->addUniqueIndex(['siret', 'matricule'], 'dematpayslip_user_siret_matricule');
+        $table->addUniqueIndex(['siret', 'matricule'], 'demat_user_siret_matricule');
 
         return $schema;
     }
diff --git a/lib/Migration/Version020000Date20200608040000.php b/lib/Migration/Version020000Date20200608040000.php
index d65832a511c23b7d868bb78053c0854ce31bc518..8b7f39041b04ba15d51b1c8bb6aab6106db242b9 100644
--- a/lib/Migration/Version020000Date20200608040000.php
+++ b/lib/Migration/Version020000Date20200608040000.php
@@ -125,10 +125,10 @@ class Version020000Date20200608040000 extends SimpleMigrationStep {
             ]);
 
             $table->setPrimaryKey(['id']);
-            $table->addUniqueIndex(['id_file'], 'dematpayslip_archive_id_file');
-            $table->addUniqueIndex(['pastell_id_document'], 'dematpayslip_archive_pastell_id_document');
-            $table->addIndex(['id_user'], 'dematpayslip_archive_id_user');
-            $table->addIndex(['dematpayslip_id_user'], 'dematpayslip_archive_dematpayslip_id_user');
+            $table->addUniqueIndex(['id_file'], 'demat_archive_id_file');
+            $table->addUniqueIndex(['pastell_id_document'], 'demat_archive_pastell_id_doc');
+            $table->addIndex(['id_user'], 'demat_archive_id_user');
+            $table->addIndex(['dematpayslip_id_user'], 'demat_archive_demat_id_user');
         }
 
         return $schema;
diff --git a/lib/Migration/Version030000Date20210212020000.php b/lib/Migration/Version030000Date20210212020000.php
new file mode 100644
index 0000000000000000000000000000000000000000..7e2cca287f0419c1b1a71b958c8089358e7cb5b0
--- /dev/null
+++ b/lib/Migration/Version030000Date20210212020000.php
@@ -0,0 +1,47 @@
+<?php
+
+namespace OCA\Dematpayslip\Migration;
+
+use Closure;
+use OCP\DB\ISchemaWrapper;
+use OCP\Migration\SimpleMigrationStep;
+use OCP\Migration\IOutput;
+
+class Version030000Date20210212020000 extends SimpleMigrationStep {
+
+    /**
+     * @param IOutput $output
+     * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
+     * @param array $options
+     * @return null|ISchemaWrapper
+     */
+    public function changeSchema(IOutput $output, Closure $schemaClosure, array $options) {
+        /** @var ISchemaWrapper $schema */
+        $schema = $schemaClosure();
+
+        if ($schema->hasTable('dematpayslip_process_skip')) {
+            $schema->dropTable('dematpayslip_process_skip');
+        }
+
+        if (!$schema->hasTable('demat_process_skip')) {
+            $table = $schema->createTable('demat_process_skip');
+            $table->addColumn('id', 'integer', [
+                'autoincrement' => true,
+                'notnull' => true,
+            ]);
+            $table->addColumn('id_process', 'integer', [
+                'notnull' => true,
+                'default' => 0,
+            ]);
+            $table->addColumn('id_line', 'integer', [
+                'notnull' => true,
+                'default' => 0,
+            ]);
+
+            $table->setPrimaryKey(['id']);
+            $table->addUniqueIndex(['id_process', 'id_line'], 'demat_process_skip_line');
+        }
+
+        return $schema;
+    }
+}
diff --git a/lib/Settings/AdminSettings.php b/lib/Settings/AdminSettings.php
index 22a67747555b899788ebaf98a6ed7172b3c71224..24473176b4b64a93a1506f3331db09ca0e053d4d 100644
--- a/lib/Settings/AdminSettings.php
+++ b/lib/Settings/AdminSettings.php
@@ -2,23 +2,27 @@
 namespace OCA\Dematpayslip\Settings;
 
 use OCP\AppFramework\Http\TemplateResponse;
-use OCP\BackgroundJob\IJobList;
 use OCP\IConfig;
 use OCP\IDateTimeFormatter;
 use OCP\IL10N;
+use OCP\Share\IManager as IShareManager;
+use OCP\IUserManager;
+use OCP\Files\IRootFolder;
 use OCP\Settings\ISettings;
 
 use OCP\Files\Folder;
-use OCA\Dematpayslip\Db\DematpayslipUserMapper;
 
-use OCA\Pastell\PastellAPI;
+use Exception;
+use OCA\Dematpayslip\Db\DematpayslipUserMapper;
 
-use OCA\Pastell\Db\PastellConfig;
-use OCA\Pastell\Db\PastellConfigMapper;
-use OCA\Pastell\Db\PastellConfigFlow;
+//use OCA\Pastell\PastellAPI;
+//use OCA\Pastell\Db\PastellConfig;
+//use OCA\Pastell\Db\PastellConfigMapper;
+//use OCA\Pastell\Db\PastellConfigFlow;
 use OCA\Pastell\Db\PastellConfigFlowMapper;
 
 class AdminSettings implements ISettings {
+
     /** @var IConfig */
     private $config;
 
@@ -28,8 +32,14 @@ class AdminSettings implements ISettings {
     /** @var IDateTimeFormatter */
     private $dateTimeFormatter;
 
-    /** @var IJobList */
-    private $jobList;
+    /** @var IRootFolder */
+    private $_rootFolder;
+
+    /** @var IShareManager */
+    private $_shareManager;
+
+    /** @var IUserManager */
+    private $_userManager;
 
     private $appName;
 
@@ -43,19 +53,11 @@ class AdminSettings implements ISettings {
     private $_dematpayslipConfigList = array();
 
     /**
-     * Pastell config list
+     * Pastell app exists
      *
-     * @var array
+     * @var bool
      */
-    private $_pastellConfigFlowList = array();
-
-    /**
-     * Config flow mapper
-     *
-     * @var PastellConfigFlowMapper
-     */
-    private $_pastellConfigFlowMapper;
-
+    private $_pastellAppExists = false;
 
     /** @var array Message List */
     private $_msgList = array(
@@ -79,10 +81,14 @@ class AdminSettings implements ISettings {
         $this->_dematpayslipConfigList['pastell_config_f2_id'] = $this->config->getAppValue($this->appName, 'pastell_config_f2_id'); // archiving for 50 years
 
         // pastell config mapper
-        $pastellUse = intval($this->_dematpayslipConfigList['pastell_use']);
-        if ($pastellUse === 1) {
-            $this->_pastellConfigFlowMapper = new PastellConfigFlowMapper(\OC::$server->getDatabaseConnection());
-            $this->_pastellConfigFlowList = $this->_pastellConfigFlowMapper->findAll();
+        $this->_pastellConfigFlowMapper = null;
+        $this->_pastellConfigFlowList = array();
+        if ($this->_pastellAppExists === true) {
+            $pastellUse = intval($this->_dematpayslipConfigList['pastell_use']);
+            if ($pastellUse === 1) {
+                $this->_pastellConfigFlowMapper = new PastellConfigFlowMapper(\OC::$server->getDatabaseConnection());
+                $this->_pastellConfigFlowList = $this->_pastellConfigFlowMapper->findAll();
+            }
         }
 
         return array(
@@ -104,13 +110,20 @@ class AdminSettings implements ISettings {
         $payslipDir    = $this->config->getAppValue($this->appName, 'payslip_dir');
         $payslipUserId = $this->config->getAppValue($this->appName, 'user_id');
 
-        $rootFolder   = \OC::$server->getRootFolder();
-        $shareManager = \OC::$server->getShareManager();
-        $userFolder   = $rootFolder->getUserFolder($payslipUserId);
+        $rootFolder   = $this->_rootFolder;
+        $shareManager = $this->_shareManager;
+        $userFolder   = null;
+        try {
+            $userFolder = $rootFolder->getUserFolder($payslipUserId);
+        } catch (Exception $e) {
+            $this->_msgList['error'][] = $this->l->t('Utilisateur non trouvé') . ' : ' . $payslipUserId . "<br />" . $e->getMessage();
+        }
 
-        $payslipShareNode = $userFolder->get($payslipDir);
-        if ($payslipShareNode instanceof Folder) {
-            $payslipShareList = $shareManager->getSharesInFolder($payslipUserId, $payslipShareNode);
+        if (empty($this->_msgList['error'])) {
+            $payslipShareNode = $userFolder->get($payslipDir);
+            if ($payslipShareNode instanceof Folder) {
+                $payslipShareList = $shareManager->getSharesInFolder($payslipUserId, $payslipShareNode);
+            }
         }
 
         return $payslipShareList;
@@ -126,40 +139,47 @@ class AdminSettings implements ISettings {
         $payslipDir    = $this->config->getAppValue($this->appName, 'payslip_dir');
         $payslipUserId = $this->config->getAppValue($this->appName, 'user_id');
 
-        $rootFolder   = \OC::$server->getRootFolder();
-        $shareManager = \OC::$server->getShareManager();
-        $userFolder   = $rootFolder->getUserFolder($payslipUserId);
-        $userManager  = \OC::$server->getUserManager();
+        $rootFolder   = $this->_rootFolder;
+        $shareManager = $this->_shareManager;
+        $userManager  = $this->_userManager;
 
-        // payslip already shared
-        $payslipShareList = $this->_payslipShareList();
-        $payslipMatriculeShareNodeIdList = array();
-        if (count($payslipShareList) > 0) {
-            foreach ($payslipShareList as $payslipShareNodeId => $payslipShareArr) {
-                $payslipMatriculeShareNodeIdList[] = $payslipShareNodeId;
-            }
+        $userFolder = null;
+        try {
+            $userFolder = $rootFolder->getUserFolder($payslipUserId);
+        } catch (Exception $e) {
+            $this->_msgList['error'][] = $this->l->t('Répertoire utilisateur non trouvé') . ' : ' . $payslipUserId . "<br />" . $e->getMessage();
         }
 
-        $payslipFolder = $userFolder->get($payslipDir);
-        if ($payslipFolder instanceof Folder) {
-            $payslipMatriculeNodeList = $payslipFolder->getDirectoryListing();
-            foreach ($payslipMatriculeNodeList as $payslipMatriculeNode) {
-                if ($payslipMatriculeNode instanceof Folder) {
-                    $siret = '';
-                    $matricule = '';
-                    $siretMatricule = $payslipMatriculeNode->getName();
-                    $siretMatriculeArr = explode('-', $siretMatricule);
-                    if (count($siretMatriculeArr)>=2) {
-                        $siret     = $siretMatriculeArr[0];
-                        $matricule = $siretMatriculeArr[1];
-                    }
-
-                    $dematpayslipUserList = $this->_dematpayslipUserMapper->findAllBySiretAndMatricule($siret, $matricule);
-                    if (count($dematpayslipUserList) === 1) {
-                        $dematpayslipUser = $dematpayslipUserList[0];
+        if (empty($this->_msgList['error'])) {
+            // payslip already shared
+            $payslipShareList = $this->_payslipShareList();
+            $payslipMatriculeShareNodeIdList = array();
+            if (count($payslipShareList) > 0) {
+                foreach ($payslipShareList as $payslipShareNodeId => $payslipShareArr) {
+                    $payslipMatriculeShareNodeIdList[] = $payslipShareNodeId;
+                }
+            }
 
-                        // s'il l'utilisateur n'a pas desactive la dematerialisation de son bulletin de paie
-                        //if ($dematpayslipUser->getDisabled() != 1) {
+            $payslipFolder = $userFolder->get($payslipDir);
+            if ($payslipFolder instanceof Folder) {
+                $payslipMatriculeNodeList = $payslipFolder->getDirectoryListing();
+                foreach ($payslipMatriculeNodeList as $payslipMatriculeNode) {
+                    if ($payslipMatriculeNode instanceof Folder) {
+                        $siret = '';
+                        $matricule = '';
+                        $siretMatricule = $payslipMatriculeNode->getName();
+                        $siretMatriculeArr = explode('-', $siretMatricule);
+                        if (count($siretMatriculeArr) >= 2) {
+                            $siret = $siretMatriculeArr[0];
+                            $matricule = $siretMatriculeArr[1];
+                        }
+
+                        $dematpayslipUserList = $this->_dematpayslipUserMapper->findAllBySiretAndMatricule($siret, $matricule);
+                        if (count($dematpayslipUserList) === 1) {
+                            $dematpayslipUser = $dematpayslipUserList[0];
+
+                            // s'il l'utilisateur n'a pas desactive la dematerialisation de son bulletin de paie
+                            //if ($dematpayslipUser->getDisabled() != 1) {
                             // verifier que l'utilisateur existe toujours
                             $dematpayslipUserExists = $userManager->userExists($dematpayslipUser->getUserId());
                             if ($dematpayslipUserExists === true) {
@@ -175,11 +195,12 @@ class AdminSettings implements ISettings {
                                     $payslipMatriculeShare = $shareManager->createShare($payslipMatriculeShare);
                                 }
                             }
-                        //}
-                    } else {
-                        // error
-                        $this->_msgList['error'][] = $this->l->t('Impossible de re-partager le dossier [matricule="' . $matricule . '"] : aucun utilisateur n\'est associé.');
-                        break;
+                            //}
+                        } else {
+                            // error
+                            $this->_msgList['error'][] = $this->l->t('Impossible de re-partager le dossier [matricule="' . $matricule . '"] : aucun utilisateur n\'est associé.');
+                            break;
+                        }
                     }
                 }
             }
@@ -195,7 +216,7 @@ class AdminSettings implements ISettings {
     private function _payslipsUnshare() {
         $payslipShareList = self::_payslipShareList();
 
-        $shareManager = \OC::$server->getShareManager();
+        $shareManager = $this->_shareManager;
         if (count($payslipShareList) > 0) {
             foreach ($payslipShareList as $payslipShareArr) {
                 if (is_array($payslipShareArr) && count($payslipShareArr)>=1) {
@@ -212,7 +233,9 @@ class AdminSettings implements ISettings {
      * @param   IConfig                 $config                     Config
      * @param   IL10N                   $l                          Lang
      * @param   IDateTimeFormatter      $dateTimeFormatter          Date formatter
-     * @param   IJobList                $jobList                    Job list
+     * @param   IRootFolder             $rootFolder                 Root folder
+     * @param   IShareManager           $shareManager               Share manager
+     * @param   IUserManager            $userManager                User manager
      * @param   DematpayslipUserMapper  $dematpayslipUserMapper     Dematpayslip user mapper
      * @param   string                  $UserId                     User Id
      */
@@ -220,7 +243,9 @@ class AdminSettings implements ISettings {
                                 IConfig $config,
                                 IL10N $l,
                                 IDateTimeFormatter $dateTimeFormatter,
-                                IJobList $jobList,
+                                IRootFolder $rootFolder,
+                                IShareManager $shareManager,
+                                IUserManager $userManager,
                                 DematpayslipUserMapper $dematpayslipUserMapper,
                                 $UserId
     ) {
@@ -228,9 +253,15 @@ class AdminSettings implements ISettings {
         $this->config = $config;
         $this->l = $l;
         $this->dateTimeFormatter = $dateTimeFormatter;
-        $this->jobList = $jobList;
+        $this->_rootFolder = $rootFolder;
+        $this->_shareManager = $shareManager;
+        $this->_userManager = $userManager;
         $this->_dematpayslipUserMapper = $dematpayslipUserMapper;
         $this->userId = $UserId;
+
+        // check if Pastell app exists
+        $pastellAppDir = __DIR__ . '/../../../pastell';
+        if (is_dir($pastellAppDir)) $this->_pastellAppExists = true;
     }
 
     /**
diff --git a/templates/content/index.php b/templates/content/index.php
index 19d962eaef1b35778a5e24076e7b00623c318076..8fa8922179123c41b61d24462ee472786cc613d3 100644
--- a/templates/content/index.php
+++ b/templates/content/index.php
@@ -1,11 +1,12 @@
 <?php
+    $urlGenerator = OC::$server->getURLGenerator();
+
     // assigned
     $canCancelProcess = (isset($_['canCancelProcess']) ? $_['canCancelProcess'] : false);
     $msgList          = (isset($_['msgList']) ? $_['msgList'] : array());
     $processArr       = (isset($_['processArr']) ? $_['processArr'] : array());
     $userArr          = (isset($_['userArr']) ? $_['userArr'] : array());
-
-    $urlGenerator = OC::$server->getURLGenerator();
+    $pastellAppExists = (isset($_['pastellAppExists']) ? $_['pastellAppExists'] : false);
 
     // alert messages
     $htmlAlert = '';
@@ -104,9 +105,12 @@
                 <form action="<?php print $urlGenerator->linkToRoute('dematpayslip.page.indexation', array('retry' => $retry)); ?>" id="dematpayslips_indexation_form" name="dematpayslips_indexation_form" method="POST" role="form">
                     <input type="hidden" name="requesttoken" value="<?php p($_['requesttoken']); ?>">
                     <div>
-                        <input type="checkbox" id="payslip_launch_indexation" name="payslip_launch_indexation" value="1" checked="checked" /> <label for="payslip_launch_indexation"><?php p($l->t('Envoi en dématérialisation')); ?></label>
-                        &nbsp;&nbsp;
-                        <input type="checkbox" id="payslip_launch_archive" name="payslip_launch_archive" value="1" checked="checked" /> <label for="payslip_launch_archive"><?php p($l->t('Archivage')); ?></label>
+                        <?php if ($pastellAppExists == true) { ?>
+                            <input type="checkbox" id="payslip_launch_indexation" name="payslip_launch_indexation" value="1" checked="checked" /> <label for="payslip_launch_indexation"><?php p($l->t('Envoi en dématérialisation')); ?></label>
+                            <input type="checkbox" id="payslip_launch_archive" name="payslip_launch_archive" value="1" checked="checked" /> <label for="payslip_launch_archive"><?php p($l->t('Archivage')); ?></label>
+                        <?php } else { ?>
+                            <input type="hidden" id="payslip_launch_indexation" name="payslip_launch_indexation" value="1" /> <label for="payslip_launch_indexation"><?php p($l->t('Envoi en dématérialisation')); ?></label>
+                        <?php } ?>
                     </div>
                     <div>
                         <button type="submit" class="btn btn-default"><?php p($l->t('Lancer')); ?></button>
diff --git a/templates/content/shares.php b/templates/content/shares.php
index ea50edd479d837c2d2edef01ef3502c9b1ff29a9..f275de537454979ca79e9af4b21f2e26f5e3970d 100644
--- a/templates/content/shares.php
+++ b/templates/content/shares.php
@@ -1,4 +1,6 @@
 <?php
+    $urlGenerator = OC::$server->getURLGenerator();
+
     // assigned
     $dematpayslipUserList = (isset($_['dematpayslipUserList']) ? $_['dematpayslipUserList'] : array());
     $msgList              = (isset($_['msgList']) ? $_['msgList'] : array());
@@ -61,7 +63,7 @@
                         $linkTitle .= ' (SIRET : ' . $dematpayslipUser->getSiret() . ')';
                     }
                     ?>
-                    <a href="<?php echo \OC\URLGenerator::linkToRoute('files.view.index', ['dir' => '/' . $dematpayslipUser->getSiret() . '-' . $dematpayslipUser->getMatricule()]); ?>" class="button" title="<?php p($linkTitle); ?>"><?php p($linkTitle); ?></a>
+                    <a href="<?php echo $urlGenerator->linkToRoute('files.view.index', ['dir' => '/' . $dematpayslipUser->getSiret() . '-' . $dematpayslipUser->getMatricule()]); ?>" class="button" title="<?php p($linkTitle); ?>"><?php p($linkTitle); ?></a>
                     <?php
                 //}
             }
diff --git a/templates/navigation/index.php b/templates/navigation/index.php
index abb2bcd881d88d81ad21e51cc28ea42d8bf5ff07..afbe2c8a6d0bb63e7345c5aaa58d95a9acf0b919 100644
--- a/templates/navigation/index.php
+++ b/templates/navigation/index.php
@@ -1,12 +1,15 @@
+<?php
+    $urlGenerator = OC::$server->getURLGenerator();
+?>
 <ul>
-	<li><a href="<?php echo \OC\URLGenerator::linkToRoute('dematpayslip.page.index'); ?>">Dématérialisation</a></li>
-    <li><a href="<?php echo \OC\URLGenerator::linkToRoute('dematpayslip.page.agent_list'); ?>">Liste des agents</a></li>
-    <li><a href="<?php echo \OC\URLGenerator::linkToRoute('dematpayslip.page.archive_list'); ?>">Liste des bulletins</a></li>
+	<li><a href="<?php echo $urlGenerator->linkToRoute('dematpayslip.page.index'); ?>">Dématérialisation</a></li>
+    <li><a href="<?php echo $urlGenerator->linkToRoute('dematpayslip.page.agent_list'); ?>">Liste des agents</a></li>
+    <li><a href="<?php echo $urlGenerator->linkToRoute('dematpayslip.page.archive_list'); ?>">Liste des bulletins</a></li>
     <li>
         <ul>
-            <li><a href="<?php echo \OC\URLGenerator::linkToRoute('dematpayslip.page.archive_list', ['step_status' => \OCA\Dematpayslip\Db\DematpayslipArchive::STEP_STATUS_INIT]); ?>">A archiver</a></li>
-            <li><a href="<?php echo \OC\URLGenerator::linkToRoute('dematpayslip.page.archive_list', ['step_status' => \OCA\Dematpayslip\Db\DematpayslipArchive::STEP_STATUS_PROGRESS]); ?>">En cours</a></li>
-            <li><a href="<?php echo \OC\URLGenerator::linkToRoute('dematpayslip.page.archive_list', ['step_status' => \OCA\Dematpayslip\Db\DematpayslipArchive::STEP_STATUS_ARCHIVED]); ?>">Archivés</a></li>
+            <li><a href="<?php echo $urlGenerator->linkToRoute('dematpayslip.page.archive_list', ['step_status' => \OCA\Dematpayslip\Db\DematpayslipArchive::STEP_STATUS_INIT]); ?>">A archiver</a></li>
+            <li><a href="<?php echo $urlGenerator->linkToRoute('dematpayslip.page.archive_list', ['step_status' => \OCA\Dematpayslip\Db\DematpayslipArchive::STEP_STATUS_PROGRESS]); ?>">En cours</a></li>
+            <li><a href="<?php echo $urlGenerator->linkToRoute('dematpayslip.page.archive_list', ['step_status' => \OCA\Dematpayslip\Db\DematpayslipArchive::STEP_STATUS_ARCHIVED]); ?>">Archivés</a></li>
         </ul>
     </li>
 </ul>
diff --git a/templates/navigation/shares.php b/templates/navigation/shares.php
index ace521bdbe0184d5b37647026775cee3f89cd1ef..334faa862fd0e4b2fc55d13bb654f13ed0d5ad4d 100644
--- a/templates/navigation/shares.php
+++ b/templates/navigation/shares.php
@@ -1,3 +1,6 @@
+<?php
+    $urlGenerator = OC::$server->getURLGenerator();
+?>
 <ul>
-	<li><a href="<?php echo \OC\URLGenerator::linkToRoute('dematpayslip.page.shares'); ?>">Dématérialisation</a></li>
+	<li><a href="<?php echo $urlGenerator->linkToRoute('dematpayslip.page.shares'); ?>">Dématérialisation</a></li>
 </ul>
diff --git a/templates/settings/admin.php b/templates/settings/admin.php
index 852d4034c42c9aa80db9a0260d8cbb37720a079f..3f09b313106147a3a8fad626629e9789bda163b1 100644
--- a/templates/settings/admin.php
+++ b/templates/settings/admin.php
@@ -107,6 +107,7 @@ script('dematpayslip', 'admin');
         </form>
     </div>
 
+    <?php if (count($pastellConfigFlowList) > 0) { ?>
     <div class="section">
         <h2><?php p($l->t('Archivage (Pastell)')); ?></h2>
         <form name="pastell_config_admin" method="get">
@@ -147,4 +148,5 @@ script('dematpayslip', 'admin');
             </div>
         </form>
     </div>
+    <?php } ?>
 </div>
\ No newline at end of file
diff --git a/templates/settings/index.php b/templates/settings/index.php
index 22d688c2af4a36f3f6f6bbdb9f31e2d037fcbb2a..36687550095a4dcc79b1d82a40222b42cae75333 100644
--- a/templates/settings/index.php
+++ b/templates/settings/index.php
@@ -1,3 +1,6 @@
+<?php
+    $urlGenerator = OC::$server->getURLGenerator();
+?>
 <div id="app-settings">
 	<div id="app-settings-header">
 		<button class="settings-button"
@@ -6,7 +9,7 @@
 	</div>
 	<div id="app-settings-content">
         <ul>
-            <li><a href="<?php echo \OC\URLGenerator::linkToRoute('dematpayslip.page.user_list'); ?>">Liste des utilisateurs</a></li>
+            <li><a href="<?php echo $urlGenerator->linkToRoute('dematpayslip.page.user_list'); ?>">Liste des utilisateurs</a></li>
         </ul>
 	</div>
 </div>