diff --git a/src/main/java/cli/Action.java b/src/main/java/cli/Action.java
index 595fddd37d5b20b6a0216853b2cb0692b4b87bf0..34338f99bcc4c96073bc0fed04261bc1ce09c196 100644
--- a/src/main/java/cli/Action.java
+++ b/src/main/java/cli/Action.java
@@ -614,19 +614,23 @@ public class Action extends Command implements ProVerifOutputListener {
                 TMLModeling<?> tmlModel = interpreter.mgui.gtm.getTMLModeling();
                 TMLMapping tmlMapping = interpreter.mgui.gtm.getTMLMapping();
 
+                DateFormat dateFormat = new SimpleDateFormat("_yyyyMMdd_HHmmss");
+                Date date = new Date();
+                String dateAndTime = dateFormat.format(date);
+
                 if (tmlModel == null && tmlMapping == null) {
                     return "No model";
                 } else{
                     if (tmlModel != null){
                         try {
-                            interpreter.mgui.drawTMLSpecification(tmlModel,"TMLModel");
+                            interpreter.mgui.drawTMLSpecification(tmlModel,"TMLModel", dateAndTime);
                         } catch (MalformedTMLDesignException e) {
                             TraceManager.addDev("Exception in drawing TML model :" + e.getMessage());
                         }
                     }
                     if (tmlMapping != null){
                         try {
-                            interpreter.mgui.drawTMAPSpecification(tmlMapping, "TMLMapping");
+                            interpreter.mgui.drawTMAPSpecification(tmlMapping, "TMLMapping", dateAndTime);
                         } catch (MalformedTMLDesignException e) {
                             TraceManager.addDev("Exception in drawing TML model :" + e.getMessage());
                         }
diff --git a/src/main/java/tmltranslator/mutations/AddEventConnectionMutation.java b/src/main/java/tmltranslator/mutations/AddEventConnectionMutation.java
index a25ab0c05951b5f13ddf91fce67072b2b113b8af..f1678393e005ca278a37357d37c8c57e12168308 100644
--- a/src/main/java/tmltranslator/mutations/AddEventConnectionMutation.java
+++ b/src/main/java/tmltranslator/mutations/AddEventConnectionMutation.java
@@ -50,6 +50,7 @@ import java.util.List;
 
 public class AddEventConnectionMutation extends EventConnectionMutation{
     protected List<String> parameters;
+
     protected AddEventConnectionMutation(String _originTaskName, String _destinationTaskName, String _connectionName, String _connectionSemantics) {
         super(_originTaskName, _destinationTaskName, _connectionName);
         setConnectionSemantics(_connectionSemantics);
@@ -110,28 +111,6 @@ public class AddEventConnectionMutation extends EventConnectionMutation{
         _tmlModel.addEvent(event);
     }
 
-    public static List<String> parseParameters(String toParse) throws ParseDiplodocusMutationException{
-        List<String> _parameters = new LinkedList<>();
-        String[] tokens =  MutationParser.tokenise(toParse);
-
-        int endIndex;
-        int closingBracketIndex = DiplodocusMutationParser.indexOf(tokens,")");
-        if (closingBracketIndex == -1){
-            throw new ParseDiplodocusMutationException("Missing ) at the end of the parameters list.");
-        } else {
-            endIndex = closingBracketIndex ;
-        }
-        for(int i = DiplodocusMutationParser.indexOf(tokens,"(") + 1; i < endIndex; i += 2) {
-            if (!(tokens[i].toUpperCase().equals("INT") || tokens[i].toUpperCase().equals("BOOL"))){
-                throw new ParseDiplodocusMutationException("Incorrect type provided in parameters list or incorrect list format. Expected types are" +
-                        " int or bool, and expected list format is (type1,type2,...,typen).");
-            }
-            _parameters.add(tokens[i]);
-        }
-
-        return _parameters;
-    }
-
     public static AddEventConnectionMutation createFromString(String toParse) throws ParseDiplodocusMutationException{
         AddEventConnectionMutation mutation = null;
         String[] tokens = DiplodocusMutationParser.tokenise(toParse);
diff --git a/src/main/java/tmltranslator/mutations/AddRequestConnectionMutation.java b/src/main/java/tmltranslator/mutations/AddRequestConnectionMutation.java
index 49269bb07a414d4b7c1c1df3cfd5bf287938cbdf..20d81fd55fe6586c58a75f3c29d252d862d1196f 100644
--- a/src/main/java/tmltranslator/mutations/AddRequestConnectionMutation.java
+++ b/src/main/java/tmltranslator/mutations/AddRequestConnectionMutation.java
@@ -38,15 +38,94 @@
 
 package tmltranslator.mutations;
 
+import avatartranslator.mutation.MutationParser;
 import tmltranslator.TMLModeling;
+import tmltranslator.TMLRequest;
+import tmltranslator.TMLTask;
+import tmltranslator.TMLType;
+
+import java.util.LinkedList;
+import java.util.List;
 
 public class AddRequestConnectionMutation extends RequestConnectionMutation {
+    protected List<String> parameters;
+
     protected AddRequestConnectionMutation(String _originTaskName, String _destinationTaskName, String _connectionName) {
         super(_originTaskName, _destinationTaskName, _connectionName);
     }
 
+    public TMLRequest createElement(TMLModeling<?> _tmlModel) throws ApplyDiplodocusMutationException {
+        if (getRequest(_tmlModel) != null){
+            throw new ApplyDiplodocusMutationException("An request connection named " + getConnectionName() + " already exists in the current model.");
+        }
+
+        TMLRequest request = new TMLRequest(getConnectionName(), null);
+
+        TMLTask _originTask = getOriginTask(_tmlModel);
+        TMLTask _destinationTask = getDestinationTask(_tmlModel);
+        if (_originTask == null){
+            throw new ApplyDiplodocusMutationException("The task named " + getOriginTaskName() + " does not exist in the current model.");
+        }
+        if (_destinationTask==null){
+            throw new ApplyDiplodocusMutationException("The task named " + getDestinationTaskName() + " does not exist in the current model.");
+        }
+        request.addOriginTask(_originTask);
+        request.setDestinationTask(_destinationTask);
+
+        return request;
+    }
+
     @Override
     public void apply(TMLModeling<?> _tmlModel) throws ApplyDiplodocusMutationException {
+        TMLRequest request = createElement(_tmlModel);
+        if (parameters != null) {
+            for (String parameter : parameters) {
+                int type = 4;
+                if (parameter.toUpperCase().equals("INT")) {
+                    type = TMLType.NATURAL;
+                } else if (parameter.toUpperCase().equals("BOOL")) {
+                    type = TMLType.BOOLEAN;
+                }
+                request.addParam(new TMLType(type));
+            }
+        }
+        _tmlModel.addRequest(request);
+    }
+
+    public static AddRequestConnectionMutation createFromString (String toParse) throws ParseDiplodocusMutationException {
+        String[] tokens = DiplodocusMutationParser.tokenise(toParse);
+
+        int index = DiplodocusMutationParser.indexOf(tokens,"BETWEEN");
+        if (tokens.length <= index + 3) {
+            throw new ParseDiplodocusMutationException("Missing task name. Expected syntax is add request connection connectionName between " +
+                    "originTaskName and destinationTaskName");
+        }
+        String _originTaskName = tokens[index+1];
+        String _destinationTaskName = tokens[index+3];
+
+        if (tokens[index-1].toUpperCase().equals("CONNECTION")){
+            throw new ParseDiplodocusMutationException("Missing or invalid connection name. Expected syntax is add request connection " +
+                    "connectionName between originTaskName and destinationTaskName with connectionName != 'connection'");
+        }
 
+        boolean hasParameters = false;
+        String _connectionName;
+        if (DiplodocusMutationParser.indexOf(tokens,"(") != -1){
+            hasParameters = true;
+        }
+        if (hasParameters){
+            _connectionName = tokens[DiplodocusMutationParser.indexOf(tokens,"(")-1];
+        } else {
+            _connectionName = tokens[index - 1];
+        }
+
+        AddRequestConnectionMutation mutation = new AddRequestConnectionMutation(_originTaskName, _destinationTaskName, _connectionName);
+        if (hasParameters){
+            mutation.parameters = parseParameters(toParse);
+        }
+        mutation.setMutationType("TMLmutation");
+
+        return mutation;
     }
+
 }
diff --git a/src/main/java/tmltranslator/mutations/ConnectionMutation.java b/src/main/java/tmltranslator/mutations/ConnectionMutation.java
index 2da73fac559c418ad5f522068ed444be2889d01b..cdb0dc63c3c7e4402ff0176a04862aa246f6a420 100644
--- a/src/main/java/tmltranslator/mutations/ConnectionMutation.java
+++ b/src/main/java/tmltranslator/mutations/ConnectionMutation.java
@@ -38,9 +38,13 @@
 
 package tmltranslator.mutations;
 
+import avatartranslator.mutation.MutationParser;
 import tmltranslator.TMLModeling;
 import tmltranslator.TMLTask;
 
+import java.util.LinkedList;
+import java.util.List;
+
 public abstract class ConnectionMutation extends DiplodocusMutation{
     private String connectionName;
     private String connectionSemantics;
@@ -131,6 +135,28 @@ public abstract class ConnectionMutation extends DiplodocusMutation{
         return str.matches("-?\\d+(\\.\\d+)?");
     }
 
+    public static List<String> parseParameters(String toParse) throws ParseDiplodocusMutationException{
+        List<String> _parameters = new LinkedList<>();
+        String[] tokens =  MutationParser.tokenise(toParse);
+
+        int endIndex;
+        int closingBracketIndex = DiplodocusMutationParser.indexOf(tokens,")");
+        if (closingBracketIndex == -1){
+            throw new ParseDiplodocusMutationException("Missing ) at the end of the parameters list.");
+        } else {
+            endIndex = closingBracketIndex ;
+        }
+        for(int i = DiplodocusMutationParser.indexOf(tokens,"(") + 1; i < endIndex; i += 2) {
+            if (!(tokens[i].toUpperCase().equals("INT") || tokens[i].toUpperCase().equals("BOOL"))){
+                throw new ParseDiplodocusMutationException("Incorrect type provided in parameters list or incorrect list format. Expected types are" +
+                        " int or bool, and expected list format is (type1,type2,...,typen).");
+            }
+            _parameters.add(tokens[i]);
+        }
+
+        return _parameters;
+    }
+
     public static ConnectionMutation createFromString(String toParse) throws ParseDiplodocusMutationException{
         switch (DiplodocusMutationParser.findConnectionTypeToken(toParse)) {
             case "DATA":
diff --git a/src/main/java/tmltranslator/mutations/RequestConnectionMutation.java b/src/main/java/tmltranslator/mutations/RequestConnectionMutation.java
index 77f0e6ae0530795f7f7150f2457e25fd6a161ef8..8fc736fc0c86626b906a4ca106e2a96689393491 100644
--- a/src/main/java/tmltranslator/mutations/RequestConnectionMutation.java
+++ b/src/main/java/tmltranslator/mutations/RequestConnectionMutation.java
@@ -38,6 +38,7 @@
 
 package tmltranslator.mutations;
 
+import org.apache.commons.math3.analysis.function.Add;
 import tmltranslator.TMLModeling;
 import tmltranslator.TMLRequest;
 import tmltranslator.TMLTask;
@@ -74,6 +75,7 @@ public abstract class RequestConnectionMutation extends ConnectionMutation {
     public static RequestConnectionMutation createFromString(String toParse) throws ParseDiplodocusMutationException{
         switch (DiplodocusMutationParser.findMutationToken(toParse)) {
             case "ADD":
+                return AddRequestConnectionMutation.createFromString(toParse);
             case "RM":
             case "REMOVE":
                 return RemoveRequestConnectionMutation.createFromString(toParse);