diff --git a/nav2_bt_navigator/CMakeLists.txt b/nav2_bt_navigator/CMakeLists.txt
index 231697cde5c5c3bc6126802a2f66aa0c5d7f04c6..9adc78573e0765dc95963f5d6d09460b5b2ee859 100644
--- a/nav2_bt_navigator/CMakeLists.txt
+++ b/nav2_bt_navigator/CMakeLists.txt
@@ -16,7 +16,7 @@ find_package(std_msgs REQUIRED)
 find_package(nav2_tasks REQUIRED)
 find_package(nav2_msgs REQUIRED)
 find_package(nav2_robot REQUIRED)
-find_package(behavior_tree_core REQUIRED)
+find_package(behaviortree_cpp REQUIRED)
 
 include_directories(
   include
@@ -41,7 +41,7 @@ set(dependencies
   nav2_tasks
   nav2_msgs
   nav2_robot
-  behavior_tree_core
+  behaviortree_cpp
 )
 
 ament_target_dependencies(${executable_name}
diff --git a/nav2_bt_navigator/behavior_trees/parallel.xml b/nav2_bt_navigator/behavior_trees/parallel.xml
index 1f8aa31802569f2e7b0f7882492663d4dbc74624..ec6677dfd66cfa31978575f85c9728ccd0004f80 100644
--- a/nav2_bt_navigator/behavior_trees/parallel.xml
+++ b/nav2_bt_navigator/behavior_trees/parallel.xml
@@ -19,7 +19,7 @@
   <BehaviorTree ID="MainTree">
     <SequenceStar name="root">
       <ComputePathToPose endpoints="${endpoints}" path="${path}"/>
-      <Parallel threshold_M="1">
+      <ParallelNode threshold="1">
         <FollowPath path="${path}"/>
         <Sequence>
           <RateController hz="2">
@@ -27,7 +27,7 @@
           </RateController>
           <UpdatePath/>
         </Sequence>
-      </Parallel>
+      </ParallelNode>
     </SequenceStar>
   </BehaviorTree>
 </root>
diff --git a/nav2_bt_navigator/src/bt_navigator.cpp b/nav2_bt_navigator/src/bt_navigator.cpp
index 8ad0fcbbd53ee76374fdd536f9a10a6d40b5f7c8..a2d2881172729201f2d3a7ad791c3d70237e4ed6 100644
--- a/nav2_bt_navigator/src/bt_navigator.cpp
+++ b/nav2_bt_navigator/src/bt_navigator.cpp
@@ -20,7 +20,7 @@
 #include "nav2_bt_navigator/navigate_to_pose_behavior_tree.hpp"
 #include "nav2_tasks/compute_path_to_pose_task.hpp"
 #include "nav2_tasks/bt_conversions.hpp"
-#include "Blackboard/blackboard_local.h"
+#include "behaviortree_cpp/blackboard/blackboard_local.h"
 
 using nav2_tasks::TaskStatus;
 
diff --git a/nav2_bt_navigator/src/navigate_to_pose_behavior_tree.cpp b/nav2_bt_navigator/src/navigate_to_pose_behavior_tree.cpp
index 3fa8e078f71bbb7a0c210925ad77b48462280771..54f1ff47c4ced705d2244ea2ce9322faf562ab19 100644
--- a/nav2_bt_navigator/src/navigate_to_pose_behavior_tree.cpp
+++ b/nav2_bt_navigator/src/navigate_to_pose_behavior_tree.cpp
@@ -38,9 +38,6 @@ NavigateToPoseBehaviorTree::NavigateToPoseBehaviorTree(rclcpp::Node::SharedPtr n
   factory_.registerSimpleAction("UpdatePath",
     std::bind(&NavigateToPoseBehaviorTree::updatePath, this, std::placeholders::_1));
 
-  // The parallel node is not yet registered in the BehaviorTree.CPP library
-  factory_.registerNodeType<BT::ParallelNode>("Parallel");
-
   follow_path_task_client_ = std::make_unique<nav2_tasks::FollowPathTaskClient>(node);
 }
 
diff --git a/nav2_mission_executor/CMakeLists.txt b/nav2_mission_executor/CMakeLists.txt
index d46cc533085b69ac512cef4256f751383eb67bbb..96fd877a82e5dbb711d76f2e84bd11a2e764650c 100644
--- a/nav2_mission_executor/CMakeLists.txt
+++ b/nav2_mission_executor/CMakeLists.txt
@@ -15,7 +15,7 @@ find_package(rclcpp REQUIRED)
 find_package(std_msgs REQUIRED)
 find_package(nav2_tasks REQUIRED)
 find_package(nav2_msgs REQUIRED)
-find_package(behavior_tree_core REQUIRED)
+find_package(behaviortree_cpp REQUIRED)
 
 include_directories(
   include
@@ -39,7 +39,7 @@ set(dependencies
   std_msgs
   nav2_tasks
   nav2_msgs
-  behavior_tree_core
+  behaviortree_cpp
 )
 
 ament_target_dependencies(${executable_name}
diff --git a/nav2_tasks/CMakeLists.txt b/nav2_tasks/CMakeLists.txt
index 9f0fa85eb8f37731bfe208553cac332354b4c850..156407f5889593c6bbb4198353d446df04100d17 100644
--- a/nav2_tasks/CMakeLists.txt
+++ b/nav2_tasks/CMakeLists.txt
@@ -16,7 +16,7 @@ find_package(std_msgs REQUIRED)
 find_package(builtin_interfaces REQUIRED)
 find_package(geometry_msgs REQUIRED)
 find_package(nav2_msgs REQUIRED)
-find_package(behavior_tree_core REQUIRED)
+find_package(behaviortree_cpp REQUIRED)
 
 include_directories(
   include
@@ -32,7 +32,7 @@ set(dependencies
   rclcpp
   geometry_msgs
   nav2_msgs
-  behavior_tree_core
+  behaviortree_cpp
 )
 
 ament_target_dependencies(${library_name}
diff --git a/nav2_tasks/include/nav2_tasks/behavior_tree_engine.hpp b/nav2_tasks/include/nav2_tasks/behavior_tree_engine.hpp
index 2c0f30bf423a9a64287591ae419ca2aa7480c6b7..adaa2cdaee6ea6545ca30fd2d7fc3b97aebba527 100644
--- a/nav2_tasks/include/nav2_tasks/behavior_tree_engine.hpp
+++ b/nav2_tasks/include/nav2_tasks/behavior_tree_engine.hpp
@@ -17,10 +17,10 @@
 
 #include <string>
 #include "rclcpp/rclcpp.hpp"
-#include "behavior_tree_core/behavior_tree.h"
-#include "behavior_tree_core/bt_factory.h"
-#include "behavior_tree_core/xml_parsing.h"
-#include "Blackboard/blackboard_local.h"
+#include "behaviortree_cpp/behavior_tree.h"
+#include "behaviortree_cpp/bt_factory.h"
+#include "behaviortree_cpp/xml_parsing.h"
+#include "behaviortree_cpp/blackboard/blackboard_local.h"
 #include "nav2_tasks/task_status.hpp"
 
 namespace nav2_tasks
diff --git a/nav2_tasks/include/nav2_tasks/bt_action_node.hpp b/nav2_tasks/include/nav2_tasks/bt_action_node.hpp
index df4e0ff21a1659935c1a09e3cfb9a675db8814a2..aa17ab4f3e62384b35c265f2195bea98e228b524 100644
--- a/nav2_tasks/include/nav2_tasks/bt_action_node.hpp
+++ b/nav2_tasks/include/nav2_tasks/bt_action_node.hpp
@@ -22,8 +22,8 @@
 
 #include "rclcpp/rclcpp.hpp"
 #include "nav2_tasks/task_client.hpp"
-#include "behavior_tree_core/action_node.h"
-#include "behavior_tree_core/bt_factory.h"
+#include "behaviortree_cpp/action_node.h"
+#include "behaviortree_cpp/bt_factory.h"
 
 namespace nav2_tasks
 {
diff --git a/nav2_tasks/include/nav2_tasks/bt_conversions.hpp b/nav2_tasks/include/nav2_tasks/bt_conversions.hpp
index 2ba6f39f0cf494cd0ee2da098871b48b00461535..9e988224f0c3c1d1449831ff05a263dcced7497a 100644
--- a/nav2_tasks/include/nav2_tasks/bt_conversions.hpp
+++ b/nav2_tasks/include/nav2_tasks/bt_conversions.hpp
@@ -16,7 +16,8 @@
 #define NAV2_TASKS__BT_CONVERSIONS_HPP_
 
 #include <string>
-#include "behavior_tree_core/behavior_tree.h"
+#include "behaviortree_cpp/behavior_tree.h"
+#include "behaviortree_cpp/blackboard/blackboard.h"
 #include "geometry_msgs/msg/point.hpp"
 #include "geometry_msgs/msg/quaternion.hpp"
 #include "nav2_msgs/msg/path.hpp"
@@ -29,25 +30,25 @@ namespace BT
 // but are not actually called. TODO(mjeronimo): See if we can avoid these.
 
 template<>
-inline rclcpp::Node::SharedPtr convertFromString(const std::string & /*key*/)
+inline rclcpp::Node::SharedPtr convertFromString(const StringView & /*key*/)
 {
   return nullptr;
 }
 
 template<>
-inline std::chrono::milliseconds convertFromString(const std::string & /*key*/)
+inline std::chrono::milliseconds convertFromString(const StringView & /*key*/)
 {
   return std::chrono::milliseconds(0);
 }
 
 template<>
-inline nav2_msgs::msg::Path::SharedPtr convertFromString(const std::string & /*key*/)
+inline nav2_msgs::msg::Path::SharedPtr convertFromString(const StringView & /*key*/)
 {
   return nullptr;
 }
 
 template<>
-inline nav2_msgs::msg::PathEndPoints::SharedPtr convertFromString(const std::string & /*key*/)
+inline nav2_msgs::msg::PathEndPoints::SharedPtr convertFromString(const StringView & /*key*/)
 {
   return nullptr;
 }
@@ -55,7 +56,7 @@ inline nav2_msgs::msg::PathEndPoints::SharedPtr convertFromString(const std::str
 // These are needed to be able to set parameters for these types in the BT XML
 
 template<>
-inline geometry_msgs::msg::Point convertFromString(const std::string & key)
+inline geometry_msgs::msg::Point convertFromString(const StringView & key)
 {
   // three real numbers separated by semicolons
   auto parts = BT::splitString(key, ';');
@@ -71,7 +72,7 @@ inline geometry_msgs::msg::Point convertFromString(const std::string & key)
 }
 
 template<>
-inline geometry_msgs::msg::Quaternion convertFromString(const std::string & key)
+inline geometry_msgs::msg::Quaternion convertFromString(const StringView & key)
 {
   // three real numbers separated by semicolons
   auto parts = BT::splitString(key, ';');
diff --git a/nav2_tasks/include/nav2_tasks/rate_controller_node.hpp b/nav2_tasks/include/nav2_tasks/rate_controller_node.hpp
index ba9316bf991d9a9f71e3f0e9af216cf5f30785d7..c3cd133de14546d46143c4befc5092aa8ae03850 100644
--- a/nav2_tasks/include/nav2_tasks/rate_controller_node.hpp
+++ b/nav2_tasks/include/nav2_tasks/rate_controller_node.hpp
@@ -17,7 +17,7 @@
 
 #include <string>
 #include <chrono>
-#include "behavior_tree_core/decorator_node.h"
+#include "behaviortree_cpp/decorator_node.h"
 
 namespace nav2_tasks
 {
diff --git a/nav2_tasks/src/behavior_tree_engine.cpp b/nav2_tasks/src/behavior_tree_engine.cpp
index d9d13cd46d0c63c6f414cda6fd96a88c1005ed28..6d6e438dd434c76139c37e4b7038e96541108244 100644
--- a/nav2_tasks/src/behavior_tree_engine.cpp
+++ b/nav2_tasks/src/behavior_tree_engine.cpp
@@ -16,7 +16,7 @@
 
 #include <string>
 #include "geometry_msgs/msg/pose2_d.hpp"
-#include "Blackboard/blackboard_local.h"
+#include "behaviortree_cpp/blackboard/blackboard_local.h"
 #include "nav2_tasks/navigate_to_pose_action.hpp"
 #include "nav2_tasks/compute_path_to_pose_action.hpp"
 #include "nav2_tasks/follow_path_action.hpp"
diff --git a/tools/ros2_dependencies.repos b/tools/ros2_dependencies.repos
index dfdc03800854ce3ec79f9d1f8bbf64ff240da90b..889d3f07114d2c901d5d92eaef6047f7d73fc247 100644
--- a/tools/ros2_dependencies.repos
+++ b/tools/ros2_dependencies.repos
@@ -1,8 +1,8 @@
 repositories:
   behavior_tree_core:
     type: git
-    url: https://github.com/mjeronimo/BehaviorTree.CPP
-    version: master
+    url: https://github.com/BehaviorTree/BehaviorTree.CPP.git
+    version: 5904431
   angles:
     type: git
     url: https://github.com/ros/angles.git