diff --git a/src/main/java/fr/inra/po2vocabmanager/utils/XCell.java b/src/main/java/fr/inra/po2vocabmanager/utils/XCell.java
index b5809f7e7a93a906ce193506bf88d93663b39aa7..1b3b09b3953ef965abb0a369ccf1fee5ac34f61d 100644
--- a/src/main/java/fr/inra/po2vocabmanager/utils/XCell.java
+++ b/src/main/java/fr/inra/po2vocabmanager/utils/XCell.java
@@ -19,6 +19,8 @@
 package fr.inra.po2vocabmanager.utils;
 
 import fr.inra.po2vocabmanager.MainApp;
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
 import javafx.scene.control.*;
 import javafx.scene.image.ImageView;
 import javafx.scene.input.KeyCode;
@@ -29,9 +31,9 @@ import javafx.scene.layout.Priority;
 
 public class XCell extends ListCell<String> {
     HBox hbox = new HBox();
-    Label label = new Label("");
     Pane pane = new Pane();
     Button button = new Button("");
+    Hyperlink hl = new Hyperlink("");
     TextField tf = new TextField();
 
     public XCell() {
@@ -46,10 +48,16 @@ public class XCell extends ListCell<String> {
             }
         });
         button.setGraphic(new ImageView(UITools.getImage("resources/images/del_16.png")));
-        hbox.getChildren().addAll(label, pane, button);
+        hbox.getChildren().addAll(hl, pane, button);
         HBox.setHgrow(pane, Priority.ALWAYS);
         button.setOnAction(event -> getListView().getItems().remove(getItem()));
         button.disableProperty().bind(MainApp.getDataControler().getCanEditProperty().not());
+        hl.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent event) {
+                MainApp.openBrowser(hl.getText());
+            }
+        });
     }
 
     @Override
@@ -62,7 +70,7 @@ public class XCell extends ListCell<String> {
             tf.setText(item);
             setGraphic(tf);
         } else {
-            label.setText(item);
+            hl.setText(item);
             setGraphic(hbox);
         }
     }
@@ -80,14 +88,14 @@ public class XCell extends ListCell<String> {
     @Override
     public void cancelEdit() {
         super.cancelEdit();
-        label.setText(getItem());
+        hl.setText(getItem());
         setGraphic(hbox);
     }
 
     @Override
     public void commitEdit(String item) {
         super.commitEdit(tf.getText());
-        label.setText(tf.getText());
+        hl.setText(tf.getText());
         setText(null);
         setGraphic(hbox);
     }
diff --git a/src/main/java/fr/inra/po2vocabmanager/view/dataView/ProcessOverviewController.java b/src/main/java/fr/inra/po2vocabmanager/view/dataView/ProcessOverviewController.java
index 374a6eb8a0c98c766afc1eab86515be6dc2b5358..fb9108daa337a9e7ef519bb4d648a76adb3a096c 100644
--- a/src/main/java/fr/inra/po2vocabmanager/view/dataView/ProcessOverviewController.java
+++ b/src/main/java/fr/inra/po2vocabmanager/view/dataView/ProcessOverviewController.java
@@ -21,12 +21,16 @@ package fr.inra.po2vocabmanager.view.dataView;
 import fr.inra.po2vocabmanager.MainApp;
 import fr.inra.po2vocabmanager.model.DataNode;
 import fr.inra.po2vocabmanager.utils.UITools;
+import fr.inra.po2vocabmanager.utils.XCell;
 import fr.inrae.po2engine.model.dataModel.GeneralFile;
 import fr.inrae.po2engine.model.dataModel.StepFile;
 import javafx.animation.TranslateTransition;
 import javafx.beans.binding.Bindings;
 import javafx.beans.property.SimpleObjectProperty;
 import javafx.beans.property.SimpleStringProperty;
+import javafx.collections.FXCollections;
+import javafx.collections.ListChangeListener;
+import javafx.collections.ObservableList;
 import javafx.event.ActionEvent;
 import javafx.event.EventHandler;
 import javafx.fxml.FXML;
@@ -38,7 +42,9 @@ import javafx.util.Duration;
 import org.controlsfx.control.textfield.AutoCompletionBinding;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 public class ProcessOverviewController {
 
@@ -54,7 +60,11 @@ public class ProcessOverviewController {
     TitledPane stepAvailable;
     @FXML
     TextArea description;
-
+    @FXML
+    Label linksLabel;
+    @FXML
+    ListView<String> listExternalLinks;
+    private ObservableList<String> listLink;
     TreeTableView<StepFile> treeTableView;
     TreeTableColumn<StepFile, String> colStep;
     TreeTableColumn<StepFile, String> colIti;
@@ -135,6 +145,26 @@ public class ProcessOverviewController {
         UITools.simpleBindValue(generalFile.getCDescription(), description);
 
         listAutoCompletion.add(UITools.addAutoComplete(processType, generalFile.getCType().getListConstraint()));
+
+
+        ArrayList<String> ls = generalFile.getExternalLinks();
+        String[] arrayLink = new String [ls.size()];
+        ls.toArray(arrayLink);
+        this.listLink = FXCollections.observableArrayList(Arrays.asList(arrayLink));
+        this.listLink.addListener((ListChangeListener<? super String>) change -> {
+            updateListLink();
+        });
+        Button addLink = new Button();
+        addLink.disableProperty().bind(this.mainApp.getEditProperty().not());
+        addLink.setGraphic(new ImageView(UITools.getImage("resources/images/add_16.png")));
+        linksLabel.setGraphic(addLink);
+        listExternalLinks.editableProperty().bind(this.mainApp.getEditProperty());
+        listExternalLinks.setItems(listLink);
+        listExternalLinks.setCellFactory(param -> new XCell());
+
+        addLink.setOnAction(actionEvent -> {
+            listLink.add("new link");
+        });
 //            UITools.addPopOver(processType, Ontology.Process);
 
 //        generalFile.setTitle(processTitle);
@@ -220,6 +250,11 @@ public class ProcessOverviewController {
 
     }
 
+    private void updateListLink() {
+        String val = listLink.stream().collect(Collectors.joining("::"));
+        generalFile.setExternalLink(val);
+    }
+
     public void unloadControler() {
         treeTableView.getColumns().clear();
         colDel = null;
diff --git a/src/main/java/fr/inra/po2vocabmanager/view/dataView/ProjectOverviewController.java b/src/main/java/fr/inra/po2vocabmanager/view/dataView/ProjectOverviewController.java
index 763d4b3f898bdd88c7d9b7178c74966248474c5b..e633e4cd553c68d9f5039cec6d9f0ef874254deb 100644
--- a/src/main/java/fr/inra/po2vocabmanager/view/dataView/ProjectOverviewController.java
+++ b/src/main/java/fr/inra/po2vocabmanager/view/dataView/ProjectOverviewController.java
@@ -33,6 +33,7 @@ import javafx.scene.control.*;
 import javafx.scene.image.ImageView;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.stream.Collectors;
 
@@ -77,7 +78,9 @@ public class ProjectOverviewController {
         this.mainApp = mainApp;
         ProjectFile projectFile = mainApp.getDataControler().getCurrentData().getProjectFile();
 
-        String[] arrayLink = Arrays.stream(projectFile.getCExternalLinks().getValue().get().split("\\r?\\n?\\::")).map(String::trim).filter(s -> !s.isEmpty()).toArray(String[]::new);
+        ArrayList<String> ls = projectFile.getExternalLinks();
+        String[] arrayLink = new String [ls.size()];
+        ls.toArray(arrayLink);
         this.listLink = FXCollections.observableArrayList(Arrays.asList(arrayLink));
         this.listLink.addListener((ListChangeListener<? super String>) change -> {
             updateListLink();
diff --git a/src/main/resources/fr/inra/po2vocabmanager/view/dataView/ProcessOverview.fxml b/src/main/resources/fr/inra/po2vocabmanager/view/dataView/ProcessOverview.fxml
index 8809e7e200545fa89c810c5c87b80030ef274b04..3871d3b54891f62a7780ad540a5e482d5ff8d857 100644
--- a/src/main/resources/fr/inra/po2vocabmanager/view/dataView/ProcessOverview.fxml
+++ b/src/main/resources/fr/inra/po2vocabmanager/view/dataView/ProcessOverview.fxml
@@ -21,13 +21,13 @@
 <?import javafx.geometry.Insets?>
 <?import javafx.scene.control.*?>
 <?import javafx.scene.layout.*?>
-<AnchorPane xmlns:fx="http://javafx.com/fxml/1" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="544.0" prefWidth="718.0" xmlns="http://javafx.com/javafx/21.0.1" fx:controller="fr.inra.po2vocabmanager.view.dataView.ProcessOverviewController">
+<AnchorPane xmlns:fx="http://javafx.com/fxml/1" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="544.0" prefWidth="718.0" xmlns="http://javafx.com/javafx/21" fx:controller="fr.inra.po2vocabmanager.view.dataView.ProcessOverviewController">
    <children>
       <VBox spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
          <children>
-            <TitledPane text="Process">
+            <TitledPane prefHeight="210.0" text="Process">
                <content>
-                  <GridPane hgap="5.0" prefHeight="150.0" vgap="5.0">
+                  <GridPane hgap="5.0" vgap="5.0">
                     <columnConstraints>
                       <ColumnConstraints hgrow="SOMETIMES" percentWidth="33.0" />
                       <ColumnConstraints hgrow="SOMETIMES" percentWidth="33.0" />
@@ -36,6 +36,7 @@
                     <rowConstraints>
                       <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                         <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
+                        <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                     </rowConstraints>
                      <children>
                         <VBox GridPane.columnIndex="1">
@@ -57,7 +58,7 @@
                               <TextField fx:id="processType" />
                            </children>
                         </VBox>
-                        <VBox GridPane.columnIndex="2" GridPane.rowSpan="2">
+                        <VBox GridPane.columnIndex="1" GridPane.rowIndex="1" GridPane.rowSpan="2">
                            <children>
                               <Label text="Description : " />
                               <TextArea fx:id="description" />
@@ -73,11 +74,17 @@
                               </TextField>
                            </children>
                         </VBox>
-                        <VBox GridPane.columnIndex="1" GridPane.rowIndex="1">
+                        <VBox GridPane.rowIndex="2">
                            <children>
                               <Label text="End date : (YYYY-MM-DD)" />
                               <TextField fx:id="endDate" />
                            </children></VBox>
+                        <VBox prefHeight="200.0" prefWidth="100.0" GridPane.columnIndex="2" GridPane.rowSpan="3">
+                           <children>
+                              <Label fx:id="linksLabel" text="External Links :" />
+                              <ListView fx:id="listExternalLinks" prefHeight="200.0" prefWidth="200.0" />
+                           </children>
+                        </VBox>
                      </children>
                   </GridPane>
                </content>
diff --git a/src/main/resources/fr/inra/po2vocabmanager/view/dataView/ProjectOverview.fxml b/src/main/resources/fr/inra/po2vocabmanager/view/dataView/ProjectOverview.fxml
index 7dad00a5d0f3f9e8a171c197388ecc6d124bbeb7..13d080d1d0f4f9b43acea6538949cc93f24506e9 100644
--- a/src/main/resources/fr/inra/po2vocabmanager/view/dataView/ProjectOverview.fxml
+++ b/src/main/resources/fr/inra/po2vocabmanager/view/dataView/ProjectOverview.fxml
@@ -20,11 +20,11 @@
 
 <?import javafx.scene.control.*?>
 <?import javafx.scene.layout.*?>
-<AnchorPane xmlns:fx="http://javafx.com/fxml/1" prefHeight="564.0" prefWidth="755.0" xmlns="http://javafx.com/javafx/17" fx:controller="fr.inra.po2vocabmanager.view.dataView.ProjectOverviewController">
+<AnchorPane xmlns:fx="http://javafx.com/fxml/1" prefHeight="564.0" prefWidth="755.0" xmlns="http://javafx.com/javafx/21" fx:controller="fr.inra.po2vocabmanager.view.dataView.ProjectOverviewController">
    <children>
       <BorderPane prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
          <top>
-             <TitledPane collapsible="false" maxHeight="208.0" prefHeight="208.0" prefWidth="755.0" text="Project" BorderPane.alignment="CENTER">
+             <TitledPane collapsible="false" maxHeight="208.0" prefHeight="210.0" prefWidth="755.0" text="Project" BorderPane.alignment="CENTER">
                <content>
                   <GridPane hgap="5.0" vgap="5.0">
                     <columnConstraints>