diff --git a/modules/export_seda/xml/config.xml.default b/modules/export_seda/xml/config.xml.default
index b79bdff75ad8d18bb444e537c3efd8ea2580a70c..4e8acc1c528346c14d2442211f41e83bc18c21d7 100755
--- a/modules/export_seda/xml/config.xml.default
+++ b/modules/export_seda/xml/config.xml.default
@@ -14,7 +14,21 @@
         <accessRuleCode>AR039</accessRuleCode>
         <deleteData>true</deleteData>
         <certificateSSL></certificateSSL>
+        <userAgent>service</userAgent>
     </CONFIG>
+    <externalSAE>
+        <id>otherSAE</id>
+        <retentionRules>
+            <retentionRule>
+                <id>id1</id>
+                <label>label1</label>
+            </retentionRule>
+            <retentionRule>
+                <id>id2</id>
+                <label>label2</label>
+            </retentionRule>
+        </retentionRules>
+    </externalSAE>
     <TABLENAME/>
     <HISTORY>
         <sedaup>true</sedaup>
diff --git a/rest/index.php b/rest/index.php
index 2bbadc31f4b114a34cb0283b19699d4f9f932e50..6e21142eb868995f51a3ba01e53ce1deeea0453f 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -625,6 +625,7 @@ $app->post('/collaboraOnline/encodedFile', \ContentManagement\controllers\Collab
 
 // Archival
 $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkSendToRecordManagement', \ExportSeda\controllers\SedaController::class . ':checkSendToRecordManagement');
+$app->get('/archival/retentionRules', \ExportSeda\controllers\SedaController::class . ':getRetentionRules');
 
 // Registered mail
 $app->get('/registeredMail/sites', \RegisteredMail\controllers\IssuingSiteController::class . ':get');
diff --git a/src/app/external/exportSeda/controllers/SedaController.php b/src/app/external/exportSeda/controllers/SedaController.php
index b03d993a9135a1fbae5c4a9f295b9b439bf8dc56..dfddc5fda43d142300ec69aa24f926590d74a20e 100755
--- a/src/app/external/exportSeda/controllers/SedaController.php
+++ b/src/app/external/exportSeda/controllers/SedaController.php
@@ -19,6 +19,7 @@ use Doctype\models\DoctypeModel;
 use Email\models\EmailModel;
 use Entity\models\EntityModel;
 use Folder\models\FolderModel;
+use Group\controllers\PrivilegeController;
 use Note\models\NoteModel;
 use Resource\controllers\ResController;
 use Resource\controllers\ResourceListController;
@@ -27,6 +28,7 @@ use Respect\Validation\Validator;
 use Slim\Http\Request;
 use Slim\Http\Response;
 use SrcCore\models\CoreConfigModel;
+use SrcCore\models\CurlModel;
 use User\models\UserModel;
 
 class SedaController
@@ -182,4 +184,59 @@ class SedaController
         
         return $response->withJson($return);
     }
+
+    public function getRetentionRules(Request $request, Response $response)
+    {
+        if (!PrivilegeController::hasPrivilege(['privilegeId' => 'admin_architecture', 'userId' => $GLOBALS['id']])) {
+            return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
+        }
+
+        $sedaXml = CoreConfigModel::getXmlLoaded(['path' => 'modules/export_seda/xml/config.xml']);
+        if (empty($sedaXml->CONFIG->sae)) {
+            return $response->withStatus(400)->withJson(['errors' => 'No SAE found in config.xml (export_seda)']);
+        }
+
+        $retentionRules = [];
+        if (strtolower((string)$sedaXml->CONFIG->sae) == 'maarchrm') {
+            $curlResponse = CurlModel::execSimple([
+                'url'     => rtrim((string)$sedaXml->CONFIG->urlSAEService, '/') . '/recordsManagement/retentionRule/Index',
+                'method'  => 'GET',
+                'cookie'  => 'LAABS-AUTH=' . urlencode((string)$sedaXml->CONFIG->token),
+                'headers' => [
+                    'Accept: application/json',
+                    'Content-Type: application/json',
+                    'User-Agent: ' . (string)$sedaXml->CONFIG->userAgent
+                ]
+            ]);
+
+            if (!empty($curlResponse['errors'])) {
+                return ['error' => 'Error during processing in getRetentionRules : ' . $curlResponse['errors']];
+            }
+
+            $retentionRules[] = [
+                'id'    => "",
+                'label' => null
+            ];
+            foreach ($curlResponse['response'] as $retentionRule) {
+                $retentionRules[] = [
+                    'id'    => $retentionRule['code'],
+                    'label' => $retentionRule['label']
+                ];
+            }
+        } else {
+            foreach ($sedaXml->externalSAE as $value) {
+                if ((string)$value->id == (string)$sedaXml->CONFIG->sae) {
+                    foreach ($value->retentionRules->retentionRule as $rule) {
+                        $retentionRules[] = [
+                            'id'    => (string)$rule->id,
+                            'label' => (string)$rule->label
+                        ];
+                    }
+                    break;
+                }
+            }
+        }
+
+        return $response->withJson(['retentionRules' => $retentionRules]);
+    }
 }
diff --git a/src/core/models/CurlModel.php b/src/core/models/CurlModel.php
index 703cd494fccdca9c8236d8abcc8438a5030ad5b6..a46aeb98d31db4562ac4f6c6343f46f3c0b4d2c8 100755
--- a/src/core/models/CurlModel.php
+++ b/src/core/models/CurlModel.php
@@ -195,7 +195,7 @@ class CurlModel
     public static function execSimple(array $args)
     {
         ValidatorModel::notEmpty($args, ['url', 'method']);
-        ValidatorModel::stringType($args, ['url', 'method']);
+        ValidatorModel::stringType($args, ['url', 'method', 'cookie']);
         ValidatorModel::arrayType($args, ['headers', 'queryParams', 'basicAuth', 'bearerAuth']);
         ValidatorModel::boolType($args, ['isXml']);
 
@@ -214,6 +214,10 @@ class CurlModel
         if (!empty($args['bearerAuth'])) {
             $opts[CURLOPT_HTTPHEADER][] = 'Authorization: Bearer ' . $args['bearerAuth']['token'];
         }
+        //Cookie
+        if (!empty($args['cookie'])) {
+            $opts[CURLOPT_COOKIE] = $args['cookie'];
+        }
 
         //QueryParams
         if (!empty($args['queryParams'])) {
diff --git a/src/frontend/app/administration/doctype/doctypes-administration.component.html b/src/frontend/app/administration/doctype/doctypes-administration.component.html
index 3bd3f16e596d010a8920cfc8d5affb15b4263f95..04af0bec704c0eeee858a3d5afc26500d673fb10 100755
--- a/src/frontend/app/administration/doctype/doctypes-administration.component.html
+++ b/src/frontend/app/administration/doctype/doctypes-administration.component.html
@@ -272,15 +272,14 @@
                                     <div class="col-sm-12">
                                         <mat-form-field>
                                             <mat-label>{{'lang.retentionRule' | translate}}</mat-label>
-                                            <mat-select *ngIf = "state === true; else elseBlock" id="retention_retentionRule" name="retention_rule" title="{{'lang.retentionRule' | translate}}" maxlength="15"
-                                                [(ngModel)]="conservationRules.ruleSelected">
-                                                <mat-option *ngFor="let item of conservationRules.listRules | sortBy: 'value'" [value]="item.value">
-                                                    {{ item.label }}
+                                            <mat-select *ngIf = "conservationRules.length>0; else elseBlock" name="retention_rule" title="{{'lang.retentionRule' | translate}}" [(ngModel)]="currentType.retention_rule">
+                                                <mat-option *ngFor="let item of conservationRules | sortBy: 'label'" [value]="item.id">
+                                                    {{item.label}}
                                                 </mat-option>
                                             </mat-select>
                                             <ng-template #elseBlock>
-                                                <input matInput  [(ngModel)]="inputRule" name="retention_rule" id="retention_rule" title="{{'lang.retentionRule' | translate}}"
-                                                type="text" placeholder="{{'lang.retentionRule' | translate}}" maxlength="15">
+                                                <input matInput  [(ngModel)]="currentType.retention_rule" name="retention_rule" title="{{'lang.retentionRule' | translate}}"
+                                                    type="text" placeholder="{{'lang.retentionRule' | translate}}" maxlength="15">
                                             </ng-template>
                                         </mat-form-field>
                                     </div>
diff --git a/src/frontend/app/administration/doctype/doctypes-administration.component.ts b/src/frontend/app/administration/doctype/doctypes-administration.component.ts
index 7e55235ebf91fefd5877ddfb988d36c390535737..757e06677155e61bcb427426fb20ad66d4f44914 100755
--- a/src/frontend/app/administration/doctype/doctypes-administration.component.ts
+++ b/src/frontend/app/administration/doctype/doctypes-administration.component.ts
@@ -39,12 +39,7 @@ export class DoctypesAdministrationComponent implements OnInit {
     newSecondLevel: any = false;
     newFirstLevel: any = false;
 
-    conservationRules: any = {
-        listRules: [],
-        ruleSelected: null
-    };
-
-    inputRule: any;
+    conservationRules: any = [];
 
     displayedColumns = ['label', 'use', 'mandatory', 'column'];
     @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;
@@ -62,7 +57,6 @@ export class DoctypesAdministrationComponent implements OnInit {
 
     ngOnInit(): void {
         this.headerService.setHeader(this.translate.instant('lang.administration') + ' ' + this.translate.instant('lang.documentTypes'));
-        this.getRules();
         this.headerService.injectInSideBarLeft(this.adminMenuTemplate, this.viewContainerRef, 'adminMenu');
 
         this.loading = true;
@@ -153,15 +147,13 @@ export class DoctypesAdministrationComponent implements OnInit {
     }
 
     getRules() {
-        /* return new Promise((resolve, reject) => {
-            this.http.get('').pipe(
+        return new Promise((resolve, reject) => {
+            this.http.get('../rest/archival/retentionRules').pipe(
                 tap((data: any) => {
-                    if (Object.keys(this.conservationRules.listRules).length === 0) {
-                    this.state = false;
+                    if (data.retentionRules.length != 0) {
+                        this.conservationRules = data.retentionRules;
                     } else {
-                        this.state = true;
-                        // foreach + push
-                        console.log(this.conservationRules);
+                        this.conservationRules = [];
                     }
                     resolve(true);
                 }),
@@ -170,7 +162,7 @@ export class DoctypesAdministrationComponent implements OnInit {
                     return of(false);
                 })
             ).subscribe();
-        }); */
+        });
     }
 
     loadDoctype(data: any, move: boolean) {
@@ -185,6 +177,7 @@ export class DoctypesAdministrationComponent implements OnInit {
                     this.currentType = dataValue['doctype'];
                     this.secondLevels = dataValue['secondLevel'];
                     this.processModes = ['NORMAL', 'SVA', 'SVR'];
+                    this.getRules();
 
                     if (move) {
                         if (this.currentType) {