diff --git a/src/main/java/ai/AIUseCaseDiagram.java b/src/main/java/ai/AIUseCaseDiagram.java
index e70608eff286e550dacaabc72655f9bf63f33cc9..99a8ff54bf7e0ace2b2eaeeed110408237e02be6 100644
--- a/src/main/java/ai/AIUseCaseDiagram.java
+++ b/src/main/java/ai/AIUseCaseDiagram.java
@@ -97,14 +97,20 @@ public class AIUseCaseDiagram extends AIInteract {
             "From the previous JSON and system specification, find the typical connections between actors and use case, " +
                     "and between use cases. Do give them respecting the specified JSON format"};
 
-    public String namesOfActors = "";
-    public String namesOfUseCases = "";
-    public String connections = "";
+    private String namesOfActors = "";
+    private String namesOfUseCases = "";
+    private String connections = "";
+
+    private AvatarUseCaseDiagram ad;
 
     public AIUseCaseDiagram(AIChatData _chatData) {
         super(_chatData);
     }
 
+    public AvatarUseCaseDiagram getUseCaseDiagram() {
+        return ad;
+    }
+
     public void internalRequest() {
 
         int stage = 0;
@@ -150,7 +156,9 @@ public class AIUseCaseDiagram extends AIInteract {
                 } else if (stage == 2) {
                     connections = "";
                     errors = new ArrayList<>();
-                    connections = getConnections(json, errors);
+                    ad = getConnections(json, errors);
+
+                    TraceManager.addDev("Obtained use case diagram: " + ad.toString());
                     /*specification = AvatarSpecification.fromJSON(json, "design", null, true);
                     if (specification != null) {
                         specification.addSignalsAndConnection(specification0);
@@ -206,10 +214,10 @@ public class AIUseCaseDiagram extends AIInteract {
 
     public Object applyAnswer(Object input) {
         if (input == null) {
-            return specification;
+            return ad;
         }
 
-        return specification;
+        return ad;
     }
 
 
@@ -262,14 +270,16 @@ public class AIUseCaseDiagram extends AIInteract {
         AvatarUseCaseDiagram ad = new AvatarUseCaseDiagram("", null);
         _errors.addAll(ad.makeUseCasesFromJson(_spec));
 
-        return ad.getActorNames();
+        return ad.getUseCaseNames();
     }
 
-    private String getConnections(String _spec, ArrayList<String> _errors) throws org.json.JSONException {
+    private AvatarUseCaseDiagram getConnections(String _spec, ArrayList<String> _errors) throws org.json.JSONException {
         AvatarUseCaseDiagram ad = new AvatarUseCaseDiagram("", null);
+        ad.addAllActors(namesOfActors);
+        ad.addAllUseCases(namesOfUseCases);
         _errors.addAll(ad.makeConnectionsFromJson(_spec));
 
-        return ad.getActorNames();
+        return ad;
     }
 
 
diff --git a/src/main/java/avatartranslator/avatarucd/AvatarUseCaseDiagram.java b/src/main/java/avatartranslator/avatarucd/AvatarUseCaseDiagram.java
index dfe2866eb90e5869b6042c5d0f55077a775a8ca4..2f863b272ee6805d6b8ca67eb2c58b7a9ea5be34 100644
--- a/src/main/java/avatartranslator/avatarucd/AvatarUseCaseDiagram.java
+++ b/src/main/java/avatartranslator/avatarucd/AvatarUseCaseDiagram.java
@@ -147,7 +147,7 @@ public class AvatarUseCaseDiagram extends AvatarElement {
                 errors.add("Usecase #" + i + " has no name");
             } else {
                 useCaseName = Conversion.replaceAllString(useCase.getString("name").trim(), " ", "");
-                actors.add(new AvatarActor(useCaseName, null));
+                useCases.add(new AvatarUseCase(useCaseName, null));
             }
         }
 
@@ -194,8 +194,13 @@ public class AvatarUseCaseDiagram extends AvatarElement {
                 if (elt2 == null) {
                     errors.add("element2 #" + i + " does not exist");
                 } else {
-                    elt2 = Conversion.replaceAllString(elt2.getString("name").trim(), " ", "");
-                    
+                    elt2 = Conversion.replaceAllString(elt2.trim(), " ", "");
+                    // We add the connection
+                    try {
+                        addConnection(elt1, elt2, true);
+                    } catch (AvatarUseCaseDiagramException aucde) {
+                        errors.add(aucde.getMessage());
+                    }
                 }
             }
         }
@@ -204,17 +209,29 @@ public class AvatarUseCaseDiagram extends AvatarElement {
         return errors;
     }
 
+    public void addAllActors(String _actors) {
+        for(String s: _actors.split(" ")) {
+            actors.add(new AvatarActor(s, null));
+        }
+    }
+
+    public void addAllUseCases(String _usecases) {
+        for(String s: _usecases.split(" ")) {
+            useCases.add(new AvatarUseCase(s, null));
+        }
+    }
+
     public String getActorNames() {
         StringBuffer sb = new StringBuffer();
         for(AvatarActor actor: actors) {
             if (sb.length() == 0) {
                 sb.append(actor.getName());
             } else {
-                sb.append("" + actor.getName());
+                sb.append(" " + actor.getName());
             }
         }
 
-        return sb.toString().trim();
+        return sb.toString();
     }
 
     public String getUseCaseNames() {
@@ -223,11 +240,35 @@ public class AvatarUseCaseDiagram extends AvatarElement {
             if (sb.length() == 0) {
                 sb.append(useCase.getName());
             } else {
-                sb.append("" + useCase.getName());
+                sb.append(" " + useCase.getName());
             }
         }
 
-        return sb.toString().trim();
+        return sb.toString();
+    }
+
+    public String getConnectionsNames() {
+        StringBuffer sb = new StringBuffer();
+        for(AvatarUCDConnection conn: connections) {
+            if (sb.length() == 0) {
+                sb.append("(" + conn.origin.getName() + "," + conn.destination.getName() + ")");
+            } else {
+                sb.append(" (" + conn.origin.getName() + "," + conn.destination.getName() + ")");
+            }
+        }
+
+        return sb.toString();
+    }
+
+
+
+    public String toString() {
+        StringBuffer sb = new StringBuffer();
+        sb.append("actors: " + getActorNames() + "\n");
+        sb.append("Use cases: " + getUseCaseNames() + "\n");
+        sb.append("Connections: " + getConnectionsNames() + "\n");
+
+        return sb.toString();
     }
 
     public AvatarActor getActorByName(String _name) {
@@ -248,6 +289,7 @@ public class AvatarUseCaseDiagram extends AvatarElement {
         return null;
     }
 
+
     public AvatarUCDConnection addConnection(String nameOrigin, String nameDestination, boolean force) throws AvatarUseCaseDiagramException {
         AvatarActor actor1 = getActorByName(nameOrigin);
         AvatarActor actor2 = getActorByName(nameDestination);
diff --git a/src/main/java/ui/window/JFrameAI.java b/src/main/java/ui/window/JFrameAI.java
index e1a93c912d92419b1924dadca4034b433e325122..9d4f01f69c1ea616b320fd25fceb2453a6b911c9 100644
--- a/src/main/java/ui/window/JFrameAI.java
+++ b/src/main/java/ui/window/JFrameAI.java
@@ -41,6 +41,7 @@ package ui.window;
 
 import ai.*;
 import avatartranslator.AvatarSpecification;
+import avatartranslator.avatarucd.AvatarUseCaseDiagram;
 import common.ConfigurationTTool;
 import help.HelpEntry;
 import help.HelpManager;
@@ -77,8 +78,8 @@ public class JFrameAI extends JFrame implements ActionListener {
 
 
     private static String[] POSSIBLE_ACTIONS = {"Chat - Chat on any topic you like, or help the AI give a better answer on a previous question",
-            "Identify requirements - Provide a system specification", "Classify requirements - select a" +
-            " requirement diagram first",
+            "Identify requirements - Provide a system specification",
+            "Classify requirements - select a requirement diagram first",
             "Identify use cases",
             "Identify properties - Select a block diagram first. You can also provide a system specification",
             "Identify system blocks (knowledge type #1) - Provide a system specification",
@@ -136,9 +137,9 @@ public class JFrameAI extends JFrame implements ActionListener {
         mgui = _mgui;
         chats = new ArrayList<>();
         makeComponents();
-
-        TraceManager.addDev("Selected TDP = " + mgui.getCurrentMainTDiagramPanel().getClass());
-
+        if (mgui.getCurrentMainTDiagramPanel() != null) {
+            TraceManager.addDev("Selected TDP = " + mgui.getCurrentMainTDiagramPanel().getClass());
+        }
     }
 
     public void setIcon(ChatData _data, Icon newIcon) {
@@ -465,7 +466,7 @@ public class JFrameAI extends JFrame implements ActionListener {
                 } else if (selectedChat.aiInteract instanceof ai.AIReqIdent) {
                     applyRequirementIdentification();
                 } else if (selectedChat.aiInteract instanceof ai.AIUseCaseDiagram) {
-                    applyUseCaseIdentification();
+                    applyUseCaseIdentification(selectedChat.aiInteract.applyAnswer(null));
                 } else if (selectedChat.aiInteract instanceof ai.AIReqClassification) {
                     applyRequirementClassification();
                 } else if (selectedChat.aiInteract instanceof ai.AIDesignPropertyIdentification) {
@@ -487,9 +488,9 @@ public class JFrameAI extends JFrame implements ActionListener {
                 applyRequirementClassification();
                 break;
             case 3:
+                applyUseCaseIdentification(selectedChat.aiInteract.applyAnswer(null));
                 break;
             case 4:
-                applyUseCaseIdentification();
                 break;
             case 5:
                 applyIdentifySystemBlocks(selectedChat.aiInteract.applyAnswer(null));
@@ -552,7 +553,7 @@ public class JFrameAI extends JFrame implements ActionListener {
         inform("Enhancing requirement diagram with ai answer: done\n");
     }
 
-    private void applyUseCaseIdentification() {
+    private void applyUseCaseIdentification(Object spec) {
 
         TDiagramPanel tdp = mgui.getCurrentTDiagramPanel();
         if (!(tdp instanceof UseCaseDiagramPanel)) {
@@ -560,10 +561,21 @@ public class JFrameAI extends JFrame implements ActionListener {
             return;
         }
 
+        if (spec == null) {
+            error("Empty use case diagram generated by AI");
+            return;
+        }
+
+        if (!(spec instanceof AvatarUseCaseDiagram)) {
+            error("Invalid use case diagram generated by AI");
+            return;
+        }
+
         UseCaseDiagramPanel ucdpanel = (UseCaseDiagramPanel) tdp;
+        AvatarUseCaseDiagram ad = (AvatarUseCaseDiagram) spec;
 
-        inform("Enhancing usecase diagram with ai answer, please wait\n");
-        TraceManager.addDev("Considered JSON array: " + selectedChat().lastAnswer);
+        inform("Drawing use case diagram with ai answer, please wait\n");
+        TraceManager.addDev("Considered UCD: " + ad.toString());
         /*try {
             rdpanel.loadAndUpdateFromText(selectedChat().lastAnswer);
         } catch (org.json.JSONException e) {