diff --git a/ttool/src/test/java/ui/systemcams/SysCAMSMultiPortTest.java b/ttool/src/test/java/ui/systemcams/SysCAMSMultiPortTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..8e095ed5e0fa185bbf5815dba1f8d5cf58e67705
--- /dev/null
+++ b/ttool/src/test/java/ui/systemcams/SysCAMSMultiPortTest.java
@@ -0,0 +1,118 @@
+package ui;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import ui.tmlcompd.TMLCPrimitiveComponent;
+import ui.tmlcompd.TMLCPrimitivePort;
+import ui.tmlcompd.TMLComponentTaskDiagramPanel;
+
+import java.io.File;
+
+import static org.junit.Assert.*;
+
+public class SysCAMSMultiPortTest extends AbstractUITest{
+
+    static TDiagramPanel diagramPanel;
+    static TMLCPrimitiveComponent primitiveComp1;
+    static TMLCPrimitiveComponent primitiveComp3;
+    static TMLCPrimitiveComponent primitiveCompNullFather;
+    static TMLCPrimitivePort primitivePort1;
+    static TMLCPrimitivePort primitivePort2;
+    static TMLCPrimitivePort primitivePort3;
+    static TMLCPrimitivePort primitivePort4;
+
+    @BeforeClass
+    public static void setUpBeforeClass() throws Exception {
+        RESOURCES_DIR = getBaseResourcesDir() + "/ui/tmlcompd/input/TestPortName.xml";
+    }
+
+    public AttachPortTest() {
+        super();
+        mainGUI.openProjectFromFile(new File(RESOURCES_DIR));
+    }
+
+
+    @Before
+    public void setUp() throws Exception {
+        diagramPanel = null;
+        for(TURTLEPanel _tab : mainGUI.getTabs()) {
+            if(_tab instanceof TMLComponentDesignPanel) {
+                for (TDiagramPanel tdp : _tab.getPanels()) {
+                    if (tdp instanceof TMLComponentTaskDiagramPanel) {
+                        diagramPanel = tdp;
+                        mainGUI.selectTab(tdp);
+                        break;
+                    }
+                }
+                break;
+            }
+        }
+
+        if(diagramPanel != null) {
+            for (TGComponent tgc : diagramPanel.getAllComponentList()) {
+                if (tgc.getValue().equals("PrimitiveComp1")) {
+                    primitiveComp1 = (TMLCPrimitiveComponent)tgc;
+                }
+
+                if (tgc.getValue().equals("PrimitiveComp3")) {
+                    primitiveComp3 = (TMLCPrimitiveComponent)tgc;
+                }
+
+                if (tgc.getValue().equals("PrimitiveCompNullFather")) {
+                    primitiveCompNullFather = (TMLCPrimitiveComponent)tgc;
+                }
+
+                if ((tgc instanceof TMLCPrimitivePort) && ((TMLCPrimitivePort)tgc).getPortName().equals("primitivePort1")) {
+                    primitivePort1 = (TMLCPrimitivePort) tgc;
+                }
+
+                if ((tgc instanceof TMLCPrimitivePort) && ((TMLCPrimitivePort)tgc).getPortName().equals("primitivePort2")) {
+                    primitivePort2 = (TMLCPrimitivePort) tgc;
+                }
+
+                if ((tgc instanceof TMLCPrimitivePort) && ((TMLCPrimitivePort)tgc).getPortName().equals("primitivePort3")) {
+                    primitivePort3 = (TMLCPrimitivePort) tgc;
+                }
+
+                if ((tgc instanceof TMLCPrimitivePort) && ((TMLCPrimitivePort)tgc).getPortName().equals("primitivePort4")) {
+                    primitivePort4 = (TMLCPrimitivePort) tgc;
+                }
+            }
+        }
+    }
+
+    @Test
+    public void NonAttachThenAttachTest(){
+        //Test for cases : Non-attach --> Attach
+        //Test before attaching
+        assertTrue(primitivePort1.getFather() == null);
+        assertTrue(primitivePort2.getFather() == null);
+        assertTrue(primitivePort3.getFather() == null);
+
+        diagramPanel.attach(primitivePort1);
+        diagramPanel.attach(primitivePort2);
+        diagramPanel.attach(primitivePort3);
+
+        //Test after attaching
+        assertTrue(primitivePort1.getFather() == primitiveCompNullFather);
+        assertTrue(primitivePort2.getFather() == primitiveComp1);
+        assertTrue(primitivePort3.getFather() == primitiveComp3);
+    }
+
+    @Test
+    public void DetachThenReAttachTest(){
+        //Tes for case : Attach --> Detach --> Re-attach
+        //test before detaching
+        assertTrue(primitivePort4.getFather() == primitiveComp3);
+
+        diagramPanel.detach(primitivePort4);
+        //test after detaching
+        assertTrue(primitivePort4.getFather() == null);
+
+        //test after attaching
+        diagramPanel.attach(primitivePort4);
+        assertTrue(primitivePort4.getFather() == primitiveComp3);
+    }
+
+}