diff --git a/core/trunk/core/tests/class/DataObjectController.php b/core/trunk/core/tests/class/DataObjectController.php
index 9acd5f166955ad4eee9b10bb2a311348455118a8..53df113e81d4e5d3c455b2c7713a0aa278cc75d4 100644
--- a/core/trunk/core/tests/class/DataObjectController.php
+++ b/core/trunk/core/tests/class/DataObjectController.php
@@ -235,42 +235,46 @@ class dataObjectController extends DOMDocument
     private function instanciateDataObject($objectElement)
     {
         if($objectElement->ref) {
-            $refObjectElement = $this->getRootElement($objectElement->ref);
-            if(!$refObjectElement) die ("Referenced element named '" . $objectElement->ref . "' not found in schema");
-        } else {
-            $refObjectElement = $objectElement;
-        }
-        //echo "<br/><br/><b>  instanciateDataObject() from element '$refObjectElement->name'</b>";
-        $dataObject = new DataObject($refObjectElement);
+            $objectElement = $this->getRootElement($objectElement->ref);
+            if(!$objectElement) die ("Referenced element named '" . $objectElement->ref . "' not found in schema");
+        } 
+        //echo "<br/><br/><b>  instanciateDataObject() from element '$objectElement->name'</b>";
+        $dataObject = new DataObject($objectElement);
+        
+        // Set Das parameters
+        $this->setDasSource($objectElement);
         
-        // Create Properties
+        // Create Properties and children
         // ********************************************************************
-        $objectType = $this->getElementType($refObjectElement);
+        $objectType = $this->getElementType($objectElement);
         $childElements = $this->xpath("./*[name()='xsd:sequence' or name()='xsd:all']/xsd:element", $objectType);
         //echo "<br/>   Object has $childElements->length properties/children";
         for($i=0; $i<$childElements->length;$i++) {
-            $childElement = $childElements->item($i);
-            $refChildElement = $this->getRefElement($childElement);
-            $childName = $refChildElement->name;
-            $childType = $this->getElementType($refChildElement);
-            if(!$childType) die("Unable to find data type for property " . $refChildElement->name);
+            $inlineChildElement = $childElements->item($i);
+            $childElement = $this->getRefElement($inlineChildElement);
+            $childName = $childElement->name;
+            $childType = $this->getElementType($childElement);
+            if(!$childType) die("Unable to find data type for property " . $childElement->name);
             if ($childType->tagName == 'xsd:simpleType') {
                 // DEFAULT and FIXED
-                if($refChildElement->{'default'}) {
-                    $childValue = $refChildElement->{'default'};
+                if($childElement->{'default'}) {
+                    $childValue = $childElement->{'default'};
                 }
-                else if($refChildElement->fixed) {
-                    $childValue = $refChildElement->fixed;
+                else if($childElement->fixed) {
+                    $childValue = $childElement->fixed;
                 } else {
                     $childValue = false;
                 }
                 //echo "<br/>    Adding property '$childName'";
-                $dataObjectProperty = new DataObjectProperty($refChildElement, $childName, $childValue);
+                $dataObjectProperty = new DataObjectProperty($childElement, $childName, $childValue);
                 $dataObject->$childName = $dataObjectProperty;
+                
+                $this->setDasItem($objectElement, $childElement);
+                
             }
             if ($childType->tagName == 'xsd:complexType') {
                 //echo "<br/>    Adding child '$childName'";
-                if($this->isArrayDataObject($childElement)) {
+                if($this->isArrayDataObject($inlineChildElement)) {
                     //echo " as ArrayDataObject";
                     $childDataObject = $this->instanciateArrayDataObject($childElement);
                 } else {
@@ -287,13 +291,32 @@ class dataObjectController extends DOMDocument
     private function instanciateArrayDataObject($objectElement) 
     { 
         if($objectElement->ref) {
-            $refObjectElement = $this->getRootElement($objectElement->ref);
-            if(!$refObjectElement) die ("Referenced element named '" . $objectElement->ref . "' not found in schema");
-        } else {
-            $refObjectElement = $objectElement;
-        }
+            $objectElement = $this->getRootElement($objectElement->ref);
+            if(!$objectElement) die ("Referenced element named '" . $objectElement->ref . "' not found in schema");
+        } 
         //echo "<br/><br/><b>  instanciateArrayDataObject() from element '$refObjectElement->name'</b>";
-        $arrayDataObject = new ArrayDataObject($refObjectElement);
+        $arrayDataObject = new ArrayDataObject($objectElement);
+        
+        $this->setDasSource($objectElement);
+        
+        // Add Properties to DAS
+        // ********************************************************************
+        $objectType = $this->getElementType($objectElement);
+        $childElements = $this->xpath("./*[name()='xsd:sequence' or name()='xsd:all']/xsd:element", $objectType);
+        //echo "<br/>   Object has $childElements->length properties/children";
+        for($i=0; $i<$childElements->length;$i++) {
+            $inlineChildElement = $childElements->item($i);
+            $childElement = $this->getRefElement($inlineChildElement);
+            $childName = $childElement->name;
+            $childType = $this->getElementType($childElement);
+            if(!$childType) die("Unable to find data type for property " . $childElement->name);
+            if ($childType->tagName == 'xsd:simpleType') {
+                $this->setDasItem($objectElement, $childElement);
+            }
+        }
+        
+        
+        
         return $arrayDataObject;
     }
     
@@ -311,8 +334,6 @@ class dataObjectController extends DOMDocument
     */
     private function loadDataObject($dataObject) 
     {      
-        // Load Data Access Service
-        $objectElement = $dataObject->getSchemaElement();
         //echo "<br/><br/><b>loadDataObject() from schema element $objectElement->name</b>"; 
         $results = $this->getData($dataObject);
         $result = $results[0];
@@ -335,8 +356,7 @@ class dataObjectController extends DOMDocument
         for($i=0; $i<count($results); $i++) {
             $result = $results[$i];
             $dataObject = $this->instanciateDataObject($objectElement);
-            //$arrayDataObject->append($dataObject);
-            $arrayDataObject[1] = $dataObject;
+            $arrayDataObject->append($dataObject);
             //echo "<br/> Found " . count($result) . " properties for objects of array $typeName";
             if(count($result) > 0) {
                 foreach($result as $propertyName => $propertyValue) {
@@ -517,57 +537,72 @@ class dataObjectController extends DOMDocument
     //*************************************************************************
     // DAS FUNCTIONS
     //*************************************************************************
-    private function getData($dataObject) 
+    private function setDasSource($objectElement)
     {
-        $objectElement = $dataObject->getSchemaElement();
-        //echo "<br/><br/><b>Loading DAS from element $objectElement->name</b>";
-        $objectType = $this->getElementType($objectElement);
-
         $dasSource = $objectElement->{'das:source'};
-
-        // Database, XML ?
         switch($dasSource) {
         case 'database':
             //echo "<br/> Found new data access service definition 'database'";
-            $objectDas = new dataAccessService_Database();
             // Main source
-            $dasTable = $objectDas->addTable($objectElement->name);
+            $dasTable = $this->dataAccessService_Database->addTable($objectElement->name);
             $dasTable->addPrimaryKey(
                 $objectElement->{'das:key-columns'}
             );
             
             // Relation with parent
             if($objectElement->{'das:parent-columns'} && $objectElement->{'das:child-columns'}) {
-                $objectDas->addRelation(
+                $this->dataAccessService_Database->addRelation(
                     'N/A',
                     $objectElement->name,
                     $objectElement->{'das:parent-columns'}, 
                     $objectElement->{'das:child-columns'}
                 );
             }
+            break;
             
-            $childElements = $this->xpath("./*[name()='xsd:sequence' or name()='xsd:all']/xsd:element", $objectType);
-            for($i=0; $i<$childElements->length;$i++) {
-                $childElement = $childElements->item($i);
-                $childElement = $this->getRefElement($childElement);
-                $childName = $childElement->name;
-                $childType = $this->getElementType($childElement);
-                if(!$childType) die("Unable to find data type for property " . $childElement->name);
-                if ($childType->tagName == 'xsd:simpleType') {
-                    $dasColumn = $dasTable->addColumn($childName, $childType->name);
-                    if($childElement->{'default'}) {
-                        $dasColumn->{'default'} = $childElement->{'default'};
-                    }
-                    if($childElement->{'fixed'}) {
-                        $dasColumn->{'fixed'} = $childElement->{'fixed'};
-                    }
-                    if(strtolower($childElement->{'nillable'}) === 'true') {
-                        $dasColumn->nillable = true;
-                    }
-                }
+        case 'xml':
+            break;
+        }
 
+    }
+    
+    private function setDasItem($objectElement, $propertyElement)
+    {
+        $tableName = $objectElement->name;
+        $propertyName = $propertyElement->name;
+        $propertyType = $this->getElementType($propertyElement);
+        
+        $dasSource = $objectElement->{'das:source'};
+        switch($dasSource) {
+        case 'database':
+            echo "<br/> Add column $propertyName to $tableName";
+            $dasColumn = $this->dataAccessService_Database->addColumn($tableName, $propertyName, $propertyType->name);
+            if($propertyElement->{'default'}) {
+                $dasColumn->{'default'} = $propertyElement->{'default'};
             }
-            return $objectDas->getData($dataObject);
+            if($propertyElement->{'fixed'}) {
+                $dasColumn->{'fixed'} = $propertyElement->{'fixed'};
+            }
+            if(strtolower($propertyElement->{'nillable'}) === 'true') {
+                $dasColumn->nillable = true;
+            }
+            break;
+        case 'xml':
+            break;
+        }
+    }
+    
+    private function getData($dataObject) 
+    {
+        $objectElement = $dataObject->getSchemaElement();
+        //echo "<br/><br/><b>Loading DAS from element $objectElement->name</b>";
+
+        $dasSource = $objectElement->{'das:source'};
+
+        // Database, XML ?
+        switch($dasSource) {
+        case 'database':
+            return $this->dataAccessService_Database->getData($dataObject);
             break;
             
         case 'xml':