diff --git a/src/org/openbravo/retail/copystore/process/CopyStoreProcess.java b/src/org/openbravo/retail/copystore/process/CopyStoreProcess.java
index 74b6c6e..192bea5 100644
--- a/src/org/openbravo/retail/copystore/process/CopyStoreProcess.java
+++ b/src/org/openbravo/retail/copystore/process/CopyStoreProcess.java
@@ -22,6 +22,7 @@ import javax.enterprise.inject.Instance;
 import javax.inject.Inject;
 import javax.servlet.ServletException;
 
+import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.mutable.MutableBoolean;
@@ -363,10 +364,15 @@ public class CopyStoreProcess {
   public void executeCopyTerminal(String terminalId) {
     OBContext.setAdminMode(true);
 
-    try {
-      type = ProcessType.copyTerminal;
-      originalTerminal = OBDal.getInstance().get(OBPOSApplications.class, terminalId);
+    type = ProcessType.copyTerminal;
+    originalTerminal = OBDal.getInstance().get(OBPOSApplications.class, terminalId);
 
+    boolean terminalOrganizationIsReadable = isReadableOrganization(
+        originalTerminal.getOrganization());
+    try {
+      if (terminalOrganizationIsReadable) {
+        OBContext.setAdminMode(false);
+      }
       OrganizationStructureProvider orgStructure = OBContext.getOBContext()
           .getOrganizationStructureProvider();
       orgTree = orgStructure.getParentList(originalTerminal.getOrganization().getId(), true);
@@ -387,6 +393,9 @@ public class CopyStoreProcess {
       addLog(LogLevel.ERROR, e.getMessage());
 
     } finally {
+      if (terminalOrganizationIsReadable) {
+        OBContext.restorePreviousMode();
+      }
       if (hasErrors) {
         OBDal.getInstance().rollbackAndClose();
         addLog(LogLevel.INFO, OBMessageUtils.messageBD("OBPOSCS_RollBack"));
@@ -395,6 +404,11 @@ public class CopyStoreProcess {
     }
   }
 
+  private boolean isReadableOrganization(Organization terminalOrganization) {
+    return ArrayUtils.contains(OBContext.getOBContext().getReadableOrganizations(),
+        terminalOrganization.getId());
+  }
+
   /**
    * Generic process to clone objects.
    * 
@@ -749,6 +763,12 @@ public class CopyStoreProcess {
     copyPaymentTypes(origTerminal, newTerminal);
   }
 
+  private boolean includedInNaturalOrgTree(Organization currentOrganization,
+      Organization terminalOrganization) {
+    OrganizationStructureProvider osp = OBContext.getOBContext().getOrganizationStructureProvider();
+    return osp.isInNaturalTree(currentOrganization, terminalOrganization);
+  }
+
   /**
    * Copies payment types
    * 
