diff --git a/plugins/bt/org.eclipse.papyrus.robotics.bt.animation.zmq/src/org/eclipse/papyrus/robotics/bt/animation/zmq/core/ZMQBTReader.java b/plugins/bt/org.eclipse.papyrus.robotics.bt.animation.zmq/src/org/eclipse/papyrus/robotics/bt/animation/zmq/core/ZMQBTReader.java
index 2749267..bb74b27 100644
--- a/plugins/bt/org.eclipse.papyrus.robotics.bt.animation.zmq/src/org/eclipse/papyrus/robotics/bt/animation/zmq/core/ZMQBTReader.java
+++ b/plugins/bt/org.eclipse.papyrus.robotics.bt.animation.zmq/src/org/eclipse/papyrus/robotics/bt/animation/zmq/core/ZMQBTReader.java
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * Copyright (c) 2020 CEA LIST.
+ * Copyright (c) 2020, 2023 CEA LIST.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
  *
  * Contributors:
  *  Matteo MORELLI (CEA LIST) <matteo.morelli@cea.fr> - Initial API and implementation
+ *  Matteo MORELLI (CEA LIST) <matteo.morelli@cea.fr> - Bug #581828
  *****************************************************************************/
 
 package org.eclipse.papyrus.robotics.bt.animation.zmq.core;
@@ -25,7 +26,7 @@
 
 	protected ZContext _context;
 	protected Socket   _treeReader;
-	protected String   BT_READER_TCP = "tcp://*:1667";
+	protected String   BT_READER_TCP = "tcp://*:2667";
 	protected int      BT_READER_TIMEOUT_SEC = 60;
 	byte[]             _treeInfo;
 
diff --git a/plugins/bt/org.eclipse.papyrus.robotics.bt.animation.zmq/src/org/eclipse/papyrus/robotics/bt/animation/zmq/core/ZMQBehaviorTreeAnimator.java b/plugins/bt/org.eclipse.papyrus.robotics.bt.animation.zmq/src/org/eclipse/papyrus/robotics/bt/animation/zmq/core/ZMQBehaviorTreeAnimator.java
index 538e99c..045d497 100644
--- a/plugins/bt/org.eclipse.papyrus.robotics.bt.animation.zmq/src/org/eclipse/papyrus/robotics/bt/animation/zmq/core/ZMQBehaviorTreeAnimator.java
+++ b/plugins/bt/org.eclipse.papyrus.robotics.bt.animation.zmq/src/org/eclipse/papyrus/robotics/bt/animation/zmq/core/ZMQBehaviorTreeAnimator.java
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * Copyright (c) 2020 CEA LIST.
+ * Copyright (c) 2020, 2023 CEA LIST.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
  *
  * Contributors:
  *  Matteo MORELLI (CEA LIST) <matteo.morelli@cea.fr> - Initial API and implementation
+ *  Matteo MORELLI (CEA LIST) <matteo.morelli@cea.fr> - Bug #581828
  *****************************************************************************/
 
 package org.eclipse.papyrus.robotics.bt.animation.zmq.core;
@@ -36,7 +37,7 @@
 	protected ZMQBTReader _treeReader;
 	protected Socket      _logSubscriber;
 	protected Poller      _poller;
-	protected String      BT_LOG_SUBSCRIBER_TCP = "tcp://*:1666";
+	protected String      BT_LOG_SUBSCRIBER_TCP = "tcp://*:2666";
 	protected ByteBuffer  bb;
 	protected static final AnimationKind[] aks = { AnimationKind.VISITED, AnimationKind.RUNNING, AnimationKind.SUCCESS, AnimationKind.FAILURE };
 	protected boolean _node_status_update_required = true;
diff --git a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.cpp/src/org/eclipse/papyrus/robotics/ros2/codegen/cpp/skillrealization/CreateSkillRealizationCppCode.xtend b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.cpp/src/org/eclipse/papyrus/robotics/ros2/codegen/cpp/skillrealization/CreateSkillRealizationCppCode.xtend
index 1d8c846..d0c3e95 100644
--- a/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.cpp/src/org/eclipse/papyrus/robotics/ros2/codegen/cpp/skillrealization/CreateSkillRealizationCppCode.xtend
+++ b/plugins/ros2/org.eclipse.papyrus.robotics.ros2.codegen.cpp/src/org/eclipse/papyrus/robotics/ros2/codegen/cpp/skillrealization/CreateSkillRealizationCppCode.xtend
@@ -10,6 +10,7 @@
  * Contributors:
  *  Matteo MORELLI (CEA LIST) <matteo.morelli@cea.fr> - Bug #566899
  *  Matteo MORELLI (CEA LIST) <matteo.morelli@cea.fr> - Bug #581690
+ *  Matteo MORELLI (CEA LIST) <matteo.morelli@cea.fr> - Bug #581812
  *
  *****************************************************************************/
 
@@ -26,6 +27,7 @@
 
 import static extension org.eclipse.papyrus.robotics.core.utils.InteractionUtils.*
 import static extension org.eclipse.papyrus.robotics.ros2.codegen.common.utils.SkillUtils.*
+import org.eclipse.papyrus.designer.languages.common.base.file.ProtSection
 
 /**
  * Create the C++ code of a skill realization executed
@@ -61,6 +63,9 @@
 		// Generated by Papyrus4Robotics
 		//
 
+		// «ProtSection.protSection("BtActionNode header files")»
+		// «ProtSection.protSection»
+		#include "bt_utils/generic_types_conversions.hpp"
 		«FOR tp : skill.uniqueSkillParameterTypes»
 			#include "«tp.ROS2TypeIncludePath»"
 		«ENDFOR»
@@ -81,6 +86,7 @@
 		  «IF !skill.ins.isNullOrEmpty»
 		  void on_tick() override
 		  {
+		  	// «ProtSection.protSection("BtActionNode on_tick()")»
 		    «FOR param : skill.ins»
 		    «param.type.getROS2TypeFromMsgName» «param.name»;
 		    getInput("«param.name»", «param.name»);
@@ -88,12 +94,14 @@
 		      goal_.«prop.name» = «param.name».«prop.name»;
 		    «ENDFOR»
 		  «ENDFOR»
+		  	// «ProtSection.protSection»
 		  }
 		  «ENDIF»
 
 		  «IF !skill.outs.isNullOrEmpty»
 		  BT::NodeStatus on_success() override
 		  {
+		  	// «ProtSection.protSection("BtActionNode on_success()")»
 		  	«FOR param : skill.outs»
 		  	«param.type.getROS2TypeFromMsgName» «param.name»;
 		  	«FOR prop : param.type.ownedAttributes»
@@ -102,10 +110,14 @@
 		  	setOutput("«param.name»", «param.name»);
 		  	«ENDFOR»
 		  	return BT::NodeStatus::SUCCESS;
+		  	«ProtSection.protSection»
 		  }
 		  «ENDIF»
 
-		  «createProvidedPortsMethod(skill)»
+		  «createProvidedPortsMethod(skill,true)»
+
+		// «ProtSection.protSection("- BtActionNode other class methods and attributes (if any)")»
+		// «ProtSection.protSection»
 		};
 
 		#include "behaviortree_cpp_v3/bt_factory.h"
@@ -125,6 +137,9 @@
 		// Generated by Papyrus4Robotics
 		//
 
+		// «ProtSection.protSection("BtConditionNode header files")»
+		// «ProtSection.protSection»
+		#include "bt_utils/generic_types_conversions.hpp"
 		«FOR tp : skill.uniqueSkillParameterTypes»
 			#include "«tp.ROS2TypeIncludePath»"
 		«ENDFOR»
@@ -145,6 +160,7 @@
 		  «IF !skill.ins.isNullOrEmpty»
 		  void on_tick() override
 		  {
+		  	// «ProtSection.protSection("BtConditionNode on_tick()")»
 		    «FOR param : skill.ins»
 		    «param.type.getROS2TypeFromMsgName» «param.name»;
 		    getInput("«param.name»", «param.name»);
@@ -152,6 +168,7 @@
 		      request_->«prop.name» = «param.name».«prop.name»;
 		    «ENDFOR»
 		  «ENDFOR»
+		  	// «ProtSection.protSection»
 		  }
 		  «ENDIF»
 
@@ -175,7 +192,10 @@
 		    return BT::NodeStatus::FAILURE;
 		  }
 
-		  «createProvidedPortsMethod(skill)»
+		  «createProvidedPortsMethod(skill,true)»
+
+		// «ProtSection.protSection("- BtConditionNode other class methods and attributes (if any)")»
+		// «ProtSection.protSection»
 		};
 
 		#include "behaviortree_cpp_v3/bt_factory.h"
@@ -196,13 +216,16 @@
 		// ...
 
 		#include <string>
+		// «ProtSection.protSection("ActionNodeBase header files")»
+		// «ProtSection.protSection»
 		#include "rclcpp/rclcpp.hpp"
+		#include "bt_utils/generic_types_conversions.hpp"
 		«FOR tp : skill.uniqueSkillParameterTypes»
 			#include "«tp.ROS2TypeIncludePath»"
 		«ENDFOR»
 		#include "behaviortree_cpp_v3/action_node.h"
 		
-		class «skill.name»Action : public BT::SyncActionNode
+		class «skill.name»Action : public BT::ActionNodeBase
 		{
 		
 		public:
@@ -210,14 +233,15 @@
 		  «skill.name»Action(
 		    const std::string& name,
 		    const BT::NodeConfiguration& config)
-		  : SyncActionNode(name, config)
+		  : ActionNodeBase(name, config)
 		  {
 		  }
 		
-		  «createProvidedPortsMethod(skill)»
+		  «createProvidedPortsMethod(skill,false)»
 		
 		  BT::NodeStatus tick() override
 		  {
+		  	// «ProtSection.protSection("ActionNodeBase tick()")»
 			«IF !skill.ins.isNullOrEmpty»
 			  // Read from input ports
 			  //
@@ -253,8 +277,12 @@
 				«ENDFOR»
 			«ENDIF»
 		  	return BT::NodeStatus::SUCCESS;
+		  	// «ProtSection.protSection»
 		  }
-		
+
+		// «ProtSection.protSection("- ActionNodeBase other class methods and attributes (if any)")»
+		// «ProtSection.protSection»
+
 		};
 		
 		#include "behaviortree_cpp_v3/bt_factory.h"
@@ -267,22 +295,21 @@
 		}
 	'''
 
-	static def createProvidedPortsMethod(SkillDefinition skill) '''
-		«IF !skill.ins.isNullOrEmpty || !skill.outs.isNullOrEmpty»
-			// «skill.name» has in/out parameters => must provide a providedPorts method
-			static BT::PortsList providedPorts()
-			{
-			  return providedBasicPorts(
-			  {
-			    «FOR param : skill.ins SEPARATOR ','»
-			      BT::InputPort<«param.type.getROS2TypeFromMsgName»>("«param.name»")
-			    «ENDFOR»
-			    «FOR param : skill.outs SEPARATOR ','»
-			      BT::OutputPort<«param.type.getROS2TypeFromMsgName»>("«param.name»")
-		        «ENDFOR»
-			  });
-			}
-		«ENDIF»
+	static def createProvidedPortsMethod(SkillDefinition skill, boolean need_basic_ports) '''
+		// «skill.name» has a constructor in the form (const std::string&, const NodeConfiguration&) => must provide a providedPorts method
+		static BT::PortsList providedPorts()
+		{
+		  return«IF need_basic_ports» providedBasicPorts(«ENDIF»
+		  {
+		  	«createPortConstructionCommands(skill)»
+		  }«IF need_basic_ports»)«ENDIF»;
+		}
+	'''
+
+    static def createPortConstructionCommands(SkillDefinition skill) '''
+		«FOR param : skill.ins + skill.outs SEPARATOR ','»
+		«IF skill.ins.contains(param)»BT::InputPort<«ELSE»BT::OutputPort<«ENDIF»«param.type.getROS2TypeFromMsgName»>("«param.name»")
+		«ENDFOR»
 	'''
 
 	static def genCode(IPFileSystemAccess fileAccess, Map<SkillDefinition, SkillSemantic> skdefToSemanticsMap, Map<Interface, String> serviceToNameMap) {
diff --git a/releng/org.eclipse.papyrus.robotics.ros2.feature/feature.xml b/releng/org.eclipse.papyrus.robotics.ros2.feature/feature.xml
index d52565d..5863aad 100644
--- a/releng/org.eclipse.papyrus.robotics.ros2.feature/feature.xml
+++ b/releng/org.eclipse.papyrus.robotics.ros2.feature/feature.xml
@@ -124,4 +124,11 @@
          version="0.0.0"
          unpack="false"/>
 
+   <plugin
+         id="org.eclipse.papyrus.robotics.ros2.library.nav2"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
 </feature>
