diff --git a/src/InputOutput/IHMImpl/Config/IHMConfigClass.php b/src/InputOutput/IHMImpl/Config/IHMConfigClass.php
index c6ea72e..c305c03 100644
--- a/src/InputOutput/IHMImpl/Config/IHMConfigClass.php
+++ b/src/InputOutput/IHMImpl/Config/IHMConfigClass.php
@@ -27,7 +27,9 @@ class IHMConfigClass
 
 	private static $requestDir     = "RES/";
 
-	private static $sharedTTDir    = "SHAREDTT/";
+	private static $sharedDir      = "shared_data/";
+	
+	private static $sharedTreeFile = "SharedObjectTree.xml";
 
 	private static $ttDir          = "TT/";
 
@@ -122,9 +124,14 @@ class IHMConfigClass
 		return PARAMS_LOCALINFO_DIR;
 	}
 
-	public static function getSharedTTPath()
+	public static function getSharedPath()
+	{
+		return IHM_SRC_DIR.self::$sharedDir;
+	}
+	
+	public static function getSharedTreeFilePath()
 	{
-		return IHM_SRC_DIR.self::$dataDir.self::$sharedTTDir.self::$ttDir;
+		return self::getSharedPath().self::$sharedTreeFile;
 	}
 
 	public static function getUserTTPath()
diff --git a/src/InputOutput/IHMImpl/Params/IHMInputOutputParamsAbstractClass.php b/src/InputOutput/IHMImpl/Params/IHMInputOutputParamsAbstractClass.php
index e90e129..0555c92 100644
--- a/src/InputOutput/IHMImpl/Params/IHMInputOutputParamsAbstractClass.php
+++ b/src/InputOutput/IHMImpl/Params/IHMInputOutputParamsAbstractClass.php
@@ -74,12 +74,24 @@ abstract class IHMInputOutputParamsAbstractClass implements InputOutputInterface
 						continue;
 					}
 						
-					if (strpos($tt->id, "sharedtt_") === 0)
-						$ttPath = IHMConfigClass::getSharedTTPath();
-					else
+					if (strpos($tt->id, "sharedtimeTable_") === 0) {
+						$result = IHMSharedObjectsClass::getPath("timeTable", $tt->id);
+						if (!$result['success'])
+							throw new Exception($result['message']);
+						$ttPath = $result['path'];
+					}
+					else if (strpos($tt->id, "sharedcatalog_") === 0) {
+						$result = IHMSharedObjectsClass::getPath("catalog", $tt->id);
+						if (!$result['success'])
+							throw new Exception($result['message']);
+						$ttPath = $result['path'];
+					}
+					else {
 						$ttPath = IHMConfigClass::getUserTTPath();
-					$ttPath .= ($tt->id.".xml");
-					if (strpos($tt->id, "cat_") === 0)
+						$ttPath .= ($tt->id.".xml");
+					}
+					
+					if ((strpos($tt->id, "cat_") === 0) || (strpos($tt->id, "sharedcatalog_") === 0))
 						$timesNode->addCatalog($ttPath, $tt->{'timeTableName'}, $ttIntIndex);
 					else
 						$timesNode->addTimeTable($ttPath, $tt->{'timeTableName'}, $ttIntIndex);
diff --git a/src/InputOutput/IHMImpl/Tools/IHMSharedObjectsClass.php b/src/InputOutput/IHMImpl/Tools/IHMSharedObjectsClass.php
new file mode 100644
index 0000000..effbdfa
--- /dev/null
+++ b/src/InputOutput/IHMImpl/Tools/IHMSharedObjectsClass.php
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * @class IHMSharedObjectsClass
+ * @brief Shared objects helper
+ * @details
+ */
+class IHMSharedObjectsClass {
+	/*
+	 * @brief Constructor
+	*/
+	function __construct()
+	{
+	}
+	
+	public static function getPath($object_type, $object_id) {
+		$objectDir = "";
+		switch ($object_type) {
+			case 'timeTable' :
+				$objectDir = "TT";
+				break;
+			case 'catalog' :
+				$objectDir = "CAT";
+				break;
+			default:
+				return array('success' => false, 'message' => 'Unknown shared object type');
+		}
+		
+		$treeFilePath = IHMConfigClass::getSharedTreeFilePath();
+		
+		if (!file_exists($treeFilePath))
+			return array('success' => false, 'message' => 'Cannot retrieve shared objects file');
+		
+		$dom = new DomDocument("1.0");
+		if (!$dom->load($treeFilePath))
+			return array('success' => false, 'message' => 'Cannot load shared objects file');
+		
+		$objectRootNodeId = 'shared'.$object_type.'-treeRootNode';
+		
+		$objectRootNode = $dom->getElementById($objectRootNodeId);
+		
+		if (!isset($objectRootNode))
+			return array('success' => false, 'message' => 'Cannot retrieve shared objects root node');
+		
+		$folderNodes = $objectRootNode->getElementsByTagName("folder");
+		
+		foreach ($folderNodes as $folderNode) {
+			$objectNodes = $folderNode->getElementsByTagName($object_type);
+			
+			foreach ($objectNodes as $objectNode) {
+				if ($objectNode->getAttribute('xml:id') == $object_id) {
+					switch ($object_type) {
+						
+					}
+					return array('success' => true, 'path' => IHMConfigClass::getSharedPath().$objectDir."/".$folderNode->getAttribute('name').'/data/'.$object_id.".xml");
+				}
+			}
+		}
+		
+		return array('success' => false, 'message' => 'Cannot retrieve shared object with id '.$object_id);
+	}
+}
+
+?>
\ No newline at end of file
--
libgit2 0.21.2