diff -r 5b62a9004662 src/org/openbravo/dal/security/OrganizationStructureProvider.java
--- a/src/org/openbravo/dal/security/OrganizationStructureProvider.java	Fri Feb 26 07:43:53 2016 +0100
+++ b/src/org/openbravo/dal/security/OrganizationStructureProvider.java	Tue Jun 07 21:15:20 2016 +0200
@@ -82,20 +82,22 @@
     final Query qry = SessionHandler.getInstance().createQuery(qryStr);
     @SuppressWarnings("unchecked")
     final List<Tree> ts = qry.list();
-    final List<TreeNode> treeNodes = new ArrayList<TreeNode>();
+    final List<Object[]> treeNodes = new ArrayList<Object[]>();
     for (final Tree t : ts) {
-      final String nodeQryStr = "select tn from " + TreeNode.class.getName()
+      final String nodeQryStr = "select tn.node, tn.reportSet from " + TreeNode.class.getName()
           + " tn where tn.tree.id='" + t.getId() + "'";
       final Query nodeQry = SessionHandler.getInstance().createQuery(nodeQryStr);
       @SuppressWarnings("unchecked")
-      final List<TreeNode> tns = nodeQry.list();
+      final List<Object[]> tns = nodeQry.list();
       treeNodes.addAll(tns);
     }
 
     final List<OrgNode> orgNodes = new ArrayList<OrgNode>(treeNodes.size());
-    for (final TreeNode tn : treeNodes) {
+    for (final Object[] tn : treeNodes) {
       final OrgNode on = new OrgNode();
-      on.setTreeNode(tn);
+      String nodeId = (String) tn[0];
+      String reportSet = (String) tn[1];
+      on.setTreeNodeData(nodeId, reportSet);
       orgNodes.add(on);
     }
 
@@ -105,18 +107,17 @@
 
     for (final OrgNode on : orgNodes) {
       if (on.getParent() != null) {
-        parentByOrganizationID.put(on.getTreeNode().getNode(), on.getParent().getTreeNode()
-            .getNode());
+        parentByOrganizationID.put(on.getTreeNodeNodeId(), on.getParent().getTreeNodeNodeId());
       }
     }
 
     for (final OrgNode on : orgNodes) {
-      naturalTreesByOrgID.put(on.getTreeNode().getNode(), on.getNaturalTree());
+      naturalTreesByOrgID.put(on.getTreeNodeNodeId(), on.getNaturalTree());
       if (on.getChildren() != null) {
         Set<String> os = new HashSet<String>();
         for (OrgNode o : on.getChildren())
-          os.add(o.getTreeNode().getNode());
-        childByOrganizationID.put(on.getTreeNode().getNode(), os);
+          os.add(o.getTreeNodeNodeId());
+        childByOrganizationID.put(on.getTreeNodeNodeId(), os);
       }
     }
     isInitialized = true;
@@ -293,7 +294,8 @@
 
   class OrgNode {
 
-    private TreeNode treeNode;
+    private String treeNodeNodeId;
+    private String treeNodeReportSet;
     private OrgNode parent;
     private List<OrgNode> children = new ArrayList<OrgNode>();
 
@@ -306,11 +308,11 @@
     }
 
     public void resolve(List<OrgNode> nodes) {
-      if (treeNode.getReportSet() == null) {
+      if (treeNodeReportSet == null) {
         return;
       }
       for (final OrgNode on : nodes) {
-        if (on.getTreeNode().getNode().equals(treeNode.getReportSet())) {
+        if (on.getTreeNodeNodeId().equals(treeNodeReportSet)) {
           on.addChild(this);
           setParent(on);
           break;
@@ -321,7 +323,7 @@
     public Set<String> getNaturalTree() {
       if (naturalTree == null) {
         naturalTree = new HashSet<String>();
-        naturalTree.add(getTreeNode().getNode());
+        naturalTree.add(getTreeNodeNodeId());
         if (getParent() != null) {
           getParent().getParentPath(naturalTree);
         }
@@ -335,7 +337,7 @@
     public void getParentPath(Set<String> theNaturalTree) {
       if (naturalTreeParent == null) {
         naturalTreeParent = new HashSet<String>();
-        naturalTreeParent.add(getTreeNode().getNode());
+        naturalTreeParent.add(getTreeNodeNodeId());
         if (getParent() != null) {
           getParent().getParentPath(naturalTreeParent);
         }
@@ -346,7 +348,7 @@
     public void getChildPath(Set<String> theNaturalTree) {
       if (naturalTreeChildren == null) {
         naturalTreeChildren = new HashSet<String>();
-        naturalTreeChildren.add(getTreeNode().getNode());
+        naturalTreeChildren.add(getTreeNodeNodeId());
         for (final OrgNode child : getChildren()) {
           child.getChildPath(naturalTreeChildren);
         }
@@ -354,12 +356,17 @@
       theNaturalTree.addAll(naturalTreeChildren);
     }
 
-    public TreeNode getTreeNode() {
-      return treeNode;
+    public String getTreeNodeNodeId() {
+      return treeNodeNodeId;
     }
 
-    public void setTreeNode(TreeNode treeNode) {
-      this.treeNode = treeNode;
+    public String getTreeNodeReportSet() {
+      return treeNodeReportSet;
+    }
+
+    public void setTreeNodeData(String treeNodeNodeId, String treeNodeReportSet) {
+      this.treeNodeNodeId = treeNodeNodeId;
+      this.treeNodeReportSet = treeNodeReportSet;
     }
 
     public OrgNode getParent() {
