diff --git a/presentation/maarchRM/Presenter/archivesPubliques/content.php b/presentation/maarchRM/Presenter/archivesPubliques/content.php
index a7a9c1e73195a8a414aa7169a3a64690090b2bee..df51149320a543fbcd6278339df77c49ea713a80 100644
--- a/presentation/maarchRM/Presenter/archivesPubliques/content.php
+++ b/presentation/maarchRM/Presenter/archivesPubliques/content.php
@@ -191,7 +191,7 @@ class content
                     || ($role == 'originator' && $orgUnit->registrationNumber == $userOrgUnit->registrationNumber)
                     // Depositor = all
                     || $role == 'depositor'
-                    ) {
+                ) {
                     // Create org root
                     if (!isset($userOrgs[(string) $orgUnit->ownerOrgId])) {
                         $orgObject = \laabs::callService('organization/organization/read_orgId_', (string) $orgUnit->ownerOrgId);
diff --git a/presentation/maarchRM/Presenter/seda/messageComposer.php b/presentation/maarchRM/Presenter/seda/messageComposer.php
index 342130fb947f0296a521868dd7d24cec3dd7212b..848e4fc85d5b7c466e25f79c208f28582035565c 100644
--- a/presentation/maarchRM/Presenter/seda/messageComposer.php
+++ b/presentation/maarchRM/Presenter/seda/messageComposer.php
@@ -223,10 +223,13 @@ class messageComposer
                     // Owner = all originators
                     $owner
                     // Archiver = all originators fo the same org
-                    || $role == 'originator' && $orgUnit->ownerOrgId == $userOrgUnit->ownerOrgId
+                    || ($archiver && $orgUnit->ownerOrgId == $userOrgUnit->ownerOrgId)
+                    // Originator = all originators at position and sub-services
+                    || ($role == 'originator' && $orgUnit->registrationNumber == $userOrgUnit->registrationNumber)
                     // Depositor = all
-                    || ($role == 'archiver' || $role == 'depositor')
+                    || $role == 'depositor'
                 ) {
+                    // Create org root
                     if (!isset($userOrgs[(string) $orgUnit->ownerOrgId])) {
                         $orgObject = \laabs::callService('organization/organization/read_orgId_', (string) $orgUnit->ownerOrgId);
 
@@ -234,8 +237,11 @@ class messageComposer
                         $userOrgs[(string) $orgObject->orgId]->displayName = $orgObject->displayName;
                         $userOrgs[(string) $orgObject->orgId]->{$role} = [];
                     }
-
-                    if (!in_array($orgUnit,$userOrgs[(string) $orgObject->orgId]->{$role})) {
+                    // Add orgUnit to org root
+                    if (
+                        (string) $orgUnit->ownerOrgId == (string) $orgObject->orgId
+                        && !in_array($orgUnit, $userOrgs[(string) $orgObject->orgId]->{$role})
+                    ) {
                         $userOrgs[(string)$orgObject->orgId]->{$role}[] = $orgUnit;
                     }
                 }
@@ -253,14 +259,13 @@ class messageComposer
      */
     public function editMessage($message = null)
     {
-
-        if(!empty($message)){
+        if (!empty($message)) {
             $isTemplate = ($message->status == 'template');
         } else {
             $isTemplate = false;
         }
 
-        if(isset($message->status) && $message->status == 'toBeModified'){
+        if (isset($message->status) && $message->status == 'toBeModified') {
             $isModification = true;
         } else {
             $isModification = false;
@@ -442,4 +447,4 @@ class messageComposer
 
         return $this->json->save();
     }
-}
\ No newline at end of file
+}