diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index 6c59ff8436d1077bbb45780ba8c782a691f68a2b..416b26435d478822d21054948bee32daf213d69a 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -940,18 +940,29 @@ module OneM2M_Functions {
 		 * @desc Connection of InfoPort of two components
 		 * @param p_tester PTC where InfoPort is to be connected
 		 */
-		function f_connectInfoPort(in Tester p_tester) runs on Tester {
+		function f_connectInfoPort(in Tester p_tester) runs on Tester return boolean {
+			var boolean connectionState := false; 
 			// Connect
-			connect(self:infoPort, p_tester:infoPort);		
+			if (infoPort.checkstate("Connected")) {
+				connectionState := true;
+			}
+			connect(self:infoPort, p_tester:infoPort);
+			log(__SCOPE__&": INFO: infoPort connected");
+			return connectionState;		
+		
 		} 
 	
 		/**
 		 * @desc Disconnection of InfoPort of two components
 		 * @param p_tester PTC where InfoPort is to be connected
 		 */
-		function f_disconnectInfoPort(in Tester p_tester) runs on Tester {
+		function f_disconnectInfoPort(in Tester p_tester, in boolean connectionState := false) runs on Tester {
 			// Disconnect
-			disconnect(self:infoPort, p_tester:infoPort);		
+			if (not connectionState) {
+				disconnect(self:infoPort, p_tester:infoPort);
+				log(__SCOPE__&": INFO: infoPort disconnected");
+			}	
+		
 		} 
 		
 		group getFunctions {
@@ -984,8 +995,9 @@ module OneM2M_Functions {
 			 */
 			function f_getRequestPrimitive(in Tester p_component) runs on Tester return RequestPrimitive {
 				var RequestPrimitive v_request;
-	
-				f_connectInfoPort(p_component);
+				var boolean previousConnectionState := false;
+				
+				previousConnectionState := f_connectInfoPort(p_component);
 				
 				p_component.start(f_sendRequestPrimitive());
 				alt {
@@ -995,7 +1007,7 @@ module OneM2M_Functions {
 	
 				p_component.done;
 				
-				f_disconnectInfoPort(p_component);
+				f_disconnectInfoPort(p_component, previousConnectionState);
 				
 				return v_request;