diff --git a/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py b/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py
index c61d047be095fa65449c5926d417f4412aba25c0..94641b65c59aa49a1db56a9327e59ba4413759da 100644
--- a/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py
+++ b/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py
@@ -222,3 +222,33 @@ class BoundaryConditionAdisTS(SQLSubModel):
     @property
     def data(self):
         return self._data.copy()
+
+    @property
+    def _default_0(self):
+        return self._types[0](0)
+
+    @property
+    def _default_1(self):
+        return self._types[1](0.0)
+
+    def new_from_data(self, header, data):
+        new_0 = self._default_0
+        new_1 = self._default_1
+
+        if len(header) != 0:
+            for i in [0, 1]:
+                for j in range(len(header)):
+                    if self._header[i] == header[j]:
+                        if i == 0:
+                            new_0 = self._types[i](data[j].replace(",", "."))
+                        else:
+                            new_1 = self._types[i](data[j].replace(",", "."))
+        else:
+            new_0 = self._types[0](data[0].replace(",", "."))
+            new_1 = self._types[1](data[1].replace(",", "."))
+
+        return (new_0, new_1)
+
+    def insert(self, index: int, value):
+        self._data.insert(index, value)
+        self._status.modified()
diff --git a/src/Model/Pollutants/Pollutants.py b/src/Model/Pollutants/Pollutants.py
index 79f64514c16220f9a39151223c1515fe45cb5da9..645417d433966e548429e4787cd6211165fb71b2 100644
--- a/src/Model/Pollutants/Pollutants.py
+++ b/src/Model/Pollutants/Pollutants.py
@@ -45,7 +45,10 @@ class Pollutants(SQLSubModel):
         else:
             self.id = id
 
-        self._name = str(name)
+        if name is None or name == "":
+            self.name = f"pol{self.id}"
+        else:
+            self._name = str(name)
         self._enabled = True
 
         self._data = []
diff --git a/src/View/BoundaryConditionsAdisTS/Edit/Table.py b/src/View/BoundaryConditionsAdisTS/Edit/Table.py
index 59ac78a6462767678ab5f8c0e7deab97fb8061b6..3bcb594eb27c256eef73b616219a680e927f4db4 100644
--- a/src/View/BoundaryConditionsAdisTS/Edit/Table.py
+++ b/src/View/BoundaryConditionsAdisTS/Edit/Table.py
@@ -41,7 +41,7 @@ from PyQt5.QtWidgets import (
 )
 
 from View.BoundaryConditionsAdisTS.Edit.UndoCommand import (
-    AddCommand, DelCommand, SetDataCommand,
+    AddCommand, DelCommand, SetDataCommand, PasteCommand,
 )
 
 _translate = QCoreApplication.translate
@@ -118,3 +118,28 @@ class TableModel(PamhyrTableModel):
         )
 
         self.endRemoveRows()
+
+    def paste(self, row, header, data):
+        if len(data) == 0:
+            return
+
+        self.layoutAboutToBeChanged.emit()
+
+        self._undo.push(
+            PasteCommand(
+                self._data, row,
+                list(
+                    map(
+                        lambda d: self._data.new_from_data(header, d),
+                        data
+                    )
+                )
+            )
+        )
+
+        self.layoutAboutToBeChanged.emit()
+        self.update()
+
+    def update(self):
+        # self.auto_sort()
+        self.layoutChanged.emit()
diff --git a/src/View/BoundaryConditionsAdisTS/Edit/UndoCommand.py b/src/View/BoundaryConditionsAdisTS/Edit/UndoCommand.py
index 81b9c3c1f4212df4a76d4c1d8eb634d64871bbca..84b031877bc7b922aed0bb1eddd1b4f1d551117b 100644
--- a/src/View/BoundaryConditionsAdisTS/Edit/UndoCommand.py
+++ b/src/View/BoundaryConditionsAdisTS/Edit/UndoCommand.py
@@ -102,3 +102,22 @@ class DelCommand(QUndoCommand):
     def redo(self):
         for row in self._rows:
             del self._data._data[row]
+
+
+class PasteCommand(QUndoCommand):
+    def __init__(self, data, row, bcs):
+        QUndoCommand.__init__(self)
+
+        self._data = data
+        self._row = row
+        self._bcs = bcs
+        self._bcs.reverse()
+
+    def undo(self):
+        self._data.delete_i(
+            range(self._row, self._row + len(self._bcs))
+        )
+
+    def redo(self):
+        for bc in self._bcs:
+            self._data.insert(self._row, bc)
diff --git a/src/View/BoundaryConditionsAdisTS/Edit/Window.py b/src/View/BoundaryConditionsAdisTS/Edit/Window.py
index 2c9afb3e03fa0b0985939ebfc43e3e44599c17c2..3b565cd89d10194974bce637a4d627bc2c05d235 100644
--- a/src/View/BoundaryConditionsAdisTS/Edit/Window.py
+++ b/src/View/BoundaryConditionsAdisTS/Edit/Window.py
@@ -200,6 +200,22 @@ class EditBoundaryConditionWindow(PamhyrWindow):
 
         self.copyTableIntoClipboard(table)
 
+    def _paste(self):
+        header, data = self.parseClipboardTable()
+
+        logger.debug(f"paste: h:{header}, d:{data}")
+
+        if len(data) == 0:
+            return
+
+        row = 0
+        rows = self.index_selected_rows()
+        if len(rows) != 0:
+            row = rows[0]
+
+        self._table.paste(row, header, data)
+        self.plot.update()
+
     def _undo(self):
         self._table.undo()
         self.plot.update()
diff --git a/src/View/BoundaryConditionsAdisTS/Window.py b/src/View/BoundaryConditionsAdisTS/Window.py
index 3bc0a587dffda9aaf98b4f683ed0f398c932857b..1a537856e694ad2bc1d341d1ccf167f14c47b8fe 100644
--- a/src/View/BoundaryConditionsAdisTS/Window.py
+++ b/src/View/BoundaryConditionsAdisTS/Window.py
@@ -182,6 +182,9 @@ class BoundaryConditionAdisTSWindow(PamhyrWindow):
         for row in rows:
             data = self._bcs.lst[row]
 
+            if data.node is None:
+                continue
+
             if self.sub_window_exists(
                 EditBoundaryConditionWindow,
                 data=[self._study, None, data]