diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql
index c9b3cb3fdfaeaaf5ff45a768a2f80c67118cc53f..3a7cbccf4a1b5ecefae564effe23d305265dfc42 100644
--- a/db/StoredProcedures.sql
+++ b/db/StoredProcedures.sql
@@ -1,11 +1,42 @@
 DELIMITER //
--- ChangePersonalDataForTeacher
 
--- deprecated block
-DROP FUNCTION IF EXISTS InternalCheckRate//
-DROP FUNCTION IF EXISTS ChangeStudentRate//
-DROP PROCEDURE IF EXISTS GetDepartmentsByFaculty//
-DROP PROCEDURE IF EXISTS GetStudentsByGrade//
+
+-- -------------------------------------------------------------------------------------------
+-- ====== Triggers =======  --
+-- -------------------------------------------------------------------------------------------
+
+-- CREATE TRIGGER `rating_table_bi`
+-- BEFORE INSERT ON `rating_table`
+-- FOR EACH ROW
+-- BEGIN
+-- 	INSERT INTO `logs_rating`
+-- 			(logs_rating.StudentID, logs_rating.SubmoduleID, logs_rating.TeacherID, logs_rating.Rate, logs_rating.Action )
+-- 	VALUES 	(NEW.StudentID, NEW.SubModuleID, NEW.TeacherID, NEW.Rate, 'change');
+-- END//
+
+
+-- CREATE TRIGGER `rating_table_bd`
+-- BEFORE DELETE ON `rating_table`
+-- FOR EACH ROW
+-- BEGIN
+-- 	INSERT INTO `logs_rating`
+-- 			(logs_rating.StudentID, logs_rating.SubmoduleID, logs_rating.TeacherID, logs_rating.Rate, logs_rating.Action )
+-- 	VALUES 	(OLD.StudentID, OLD.SubModuleID, OLD.TeacherID, OLD.Rate, 'delete');
+-- END//
+
+
+-- CREATE TRIGGER `rating_table_bu`
+-- BEFORE UPDATE ON `rating_table`
+-- FOR EACH ROW
+-- BEGIN
+-- 	INSERT INTO `logs_rating`
+-- 			(logs_rating.StudentID, logs_rating.SubmoduleID, logs_rating.TeacherID, logs_rating.Rate, logs_rating.Action )
+-- 	VALUES 	(NEW.StudentID, NEW.SubModuleID, NEW.TeacherID, NEW.Rate, 'add');
+-- END//
+
+-- INSERT INTO `logs_rating`
+-- 		(logs_rating.StudentID, logs_rating.SubmoduleID, logs_rating.TeacherID, logs_rating.Rate, logs_rating.Action )
+-- VALUES 	(StudentID, SubModuleID, TeacherID, Rate, 'change');
 
 -- -------------------------------------------------------------------------------------------
 -- ====== Internals =======  --
@@ -3055,56 +3086,53 @@ END //
 -- ====== Requests =======  --
 -- -------------------------------------------------------------------------------------------
 
--- DROP PROCEDURE IF EXISTS GetLastRequests//
--- CREATE PROCEDURE `GetLastRequests`	( 	IN `CountN` INT 
--- 									)
---     NO SQL
--- BEGIN 
--- 	DECLARE offsetN, allNum, countClone INT;
--- 	SELECT COUNT(requests.ID) INTO allNum FROM `requests`;
--- 	SET countClone = CountN;
--- 	IF CountN = -1 THEN 
--- 		SET countClone = allNum;
--- 	END IF;
-
--- 	SET offsetN = allNum - CountN;
--- 	IF offsetN < 0 THEN
--- 		SET offsetN = 0;
--- 	END IF;
-
--- 	SELECT 	requests.ID,
--- 			requests.AccountID,
--- 			requests.Information,
--- 			requests.Date,
--- 			requests.Status
--- 	FROM `requests`
--- 	WHERE requests.Status = 0
--- 	LIMIT countClone OFFSET offsetN;
-
--- END //
-
-
--- DROP PROCEDURE IF EXISTS GetFirstRequests//
--- CREATE PROCEDURE `GetFirstRequests`	( 	IN `CountN` INT 
--- 									)
---     NO SQL
--- BEGIN 
--- 	DECLARE allNum, countClone INT;
--- 	SELECT COUNT(requests.ID) INTO allNum FROM `requests`;
--- 	SET countClone = CountN;
--- 	IF CountN = -1 THEN 
--- 		SET countClone = allNum;
--- 	END IF;
-
--- 	SELECT 	requests.ID,
--- 			requests.AccountID,
--- 			requests.Information,
--- 			requests.Date,
--- 			requests.Status
--- 	FROM `requests`
--- 	WHERE requests.Status = 0
--- 	LIMIT countClone;
--- END //
+DROP PROCEDURE IF EXISTS GetRequests//
+CREATE PROCEDURE `GetRequests`	( 	IN `OffsetN` INT,
+									IN `CountN` INT,
+									IN `AccountID` INT,
+									IN `vStatus` VARCHAR(20) charset utf8
+								)
+    NO SQL
+BEGIN 
+	SELECT 	requests.ID,
+			requests.AccountID,
+			requests.Title,
+			requests.Description,
+			requests.Date,
+			requests.Status
+	FROM `requests`
+	WHERE 	( AccountID = 0 OR AccountID = requests.AccountID ) AND
+			( vStatus = 'all' OR requests.Status = vStatus	)
+	LIMIT CountN OFFSET OffsetN;
+END //
+
+
+DROP FUNCTION IF EXISTS SetRequestStatus//
+CREATE FUNCTION `SetRequestStatus`	( 	`RequestID` INT,
+										`vStatus` VARCHAR(20) charset utf8
+									)	RETURNS int(11)
+    NO SQL
+BEGIN
+	UPDATE 	`requests`
+	SET requests.Status = vStatus
+	WHERE RequestID = requests.ID
+	LIMIT 1;
+	RETURN 0;
+END//
+
+
+DROP FUNCTION IF EXISTS CreateRequest//
+CREATE FUNCTION `CreateRequest`		( 	`AccountID` INT,
+										`vTitle` VARCHAR(50) charset utf8,
+										`vDescription` VARCHAR(50) charset utf8
+									)	RETURNS int(11)
+    NO SQL
+BEGIN
+	INSERT INTO `requests`
+			(requests.AccountID, requests.Title, requests.Description, requests.Status)
+	VALUES	(AccountID, vTitle, vDescription, 'opened');
+	RETURN 0;
+END//
 
 
 
diff --git a/db/Structure.sql b/db/Structure.sql
index edd2bc8255096edc3be68251f76850a4ed317255..48f2f59d3d7763c8506c0c5c51bb376fe2743819 100644
--- a/db/Structure.sql
+++ b/db/Structure.sql
@@ -268,9 +268,10 @@ CREATE TABLE IF NOT EXISTS `rating_table` (
 CREATE TABLE IF NOT EXISTS `requests` (
   `ID` int(11) NOT NULL AUTO_INCREMENT,
   `AccountID` int(11) DEFAULT NULL,
-  `Information` text NOT NULL,
-  `Date` date NOT NULL,
-  `Status` int(11) NOT NULL DEFAULT '0',
+  `Title` varchar(50) NULL DEFAULT NULL,
+  `Description` text NOT NULL,
+  `Date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `Status` enum('opened','processed','closed') NOT NULL DEFAULT 'opened',
   PRIMARY KEY (`ID`),
   KEY `AccountID` (`AccountID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;