diff --git a/python_binding/graph/pybind_GraphView.cpp b/python_binding/graph/pybind_GraphView.cpp
index d1eec290741ac6477f3d75ffb4457ea4d21421cd..31e3a009953c8d5b938dfe6fb888d911bef1e066 100644
--- a/python_binding/graph/pybind_GraphView.cpp
+++ b/python_binding/graph/pybind_GraphView.cpp
@@ -30,6 +30,7 @@ void init_GraphView(py::module& m) {
           :param path: save location
           :type path: str
           )mydelimiter")
+          .def("set_name", &GraphView::setName, py::arg("name"))
           .def("inputs", (std::vector<std::pair<NodePtr, IOIndex_t>> (GraphView::*)() const) &GraphView::inputs)
           .def("outputs", (std::vector<std::vector<std::pair<NodePtr, IOIndex_t>>> (GraphView::*)() const) &GraphView::outputs)
           .def("in_view", (bool (GraphView::*)(const NodePtr&) const) &GraphView::inView)
diff --git a/src/graph/GraphView.cpp b/src/graph/GraphView.cpp
index fab9be91556c5ffc0bd446edcbc5abb80e99a1bb..9d6b19d1e5c6bebf42359a5d0897fac5c87e5299 100644
--- a/src/graph/GraphView.cpp
+++ b/src/graph/GraphView.cpp
@@ -807,18 +807,19 @@ bool Aidge::GraphView::add(std::set<std::shared_ptr<Node>> otherNodes, bool incl
   }
 
   bool orderUnicity = true;
-
   // List only the nodes that are not already present in current graph
   std::set<NodePtr> nodesToAdd;
   std::set_difference(otherNodes.begin(), otherNodes.end(), mNodes.begin(), mNodes.end(), std::inserter(nodesToAdd, nodesToAdd.begin()));
 
   // Check no name is common with the name in the current Graph
   for (auto node : nodesToAdd) {
-    if (mNodeRegistry.find(node->name()) != mNodeRegistry.end()){
-      std::string newName = node->createUniqueName(node->name());
-      fmt::print("Warning: node name \"{}\" is a duplicate, renaming to {}.\n", node->name(), newName);
-      node->setName(newName);
-
+    if (mNodeRegistry.find(node->name()) != mNodeRegistry.end()) {
+        std::string newName = node->createUniqueName(node->name());
+        while (mNodeRegistry.find(newName) != mNodeRegistry.end()) {
+            newName = node->createUniqueName(newName + "_1"); 
+        }
+        Log::notice("node name \"{}\" is a duplicate, renaming to {}.\n", node->name(), newName);
+        node->setName(newName);
     }
   }
   // List the nodes to rank, initially all the nodes in the GraphView
diff --git a/src/graph/Node.cpp b/src/graph/Node.cpp
index 1c8585d1d1f26341724486a16d0678d92f759146..7903046d9197e2bec26363136e0d2398bfb864da 100644
--- a/src/graph/Node.cpp
+++ b/src/graph/Node.cpp
@@ -93,6 +93,7 @@ std::string Aidge::Node::createUniqueName(std::string baseName)
         nameAlreadyUsed = false;
         for (auto graphView : views()) {
             if (graphView->inView(newName)) {
+                Log::info("Node::createUniqueName(): name '{}' already used in graph '{}'", newName, graphView->name());
                 nameAlreadyUsed = true;
                 break;
             }