diff --git a/prdoc/pr_2597.prdoc b/prdoc/pr_2597.prdoc
new file mode 100644
index 0000000000000000000000000000000000000000..33d8505318416b331c686c1d95ca108f55c46cdd
--- /dev/null
+++ b/prdoc/pr_2597.prdoc
@@ -0,0 +1,17 @@
+title: Make crate visible methods of `OverlayedChanges` public.
+
+doc:
+  - audience: Node Dev
+    description: | 
+      Make some methods of `OverlayedChanges` namely `set_child_storage`, `clear_child_storage`, `clear_prefix` 
+      and `clear_child_prefix` public which only had crate level visibility.
+
+migrations:
+  db: []
+
+  runtime: []
+
+crates:
+  - name: sp-state-machine
+
+host_functions: []
diff --git a/substrate/primitives/state-machine/src/overlayed_changes/mod.rs b/substrate/primitives/state-machine/src/overlayed_changes/mod.rs
index 9525c2c9dfe5932b5e381ddfd32d165291aae873..626cf6c3cafe128c98f6c5bedfe5d6cbe1ab958d 100644
--- a/substrate/primitives/state-machine/src/overlayed_changes/mod.rs
+++ b/substrate/primitives/state-machine/src/overlayed_changes/mod.rs
@@ -348,7 +348,7 @@ impl<H: Hasher> OverlayedChanges<H> {
 	/// `None` can be used to delete a value specified by the given key.
 	///
 	/// Can be rolled back or committed when called inside a transaction.
-	pub(crate) fn set_child_storage(
+	pub fn set_child_storage(
 		&mut self,
 		child_info: &ChildInfo,
 		key: StorageKey,
@@ -373,7 +373,7 @@ impl<H: Hasher> OverlayedChanges<H> {
 	/// Clear child storage of given storage key.
 	///
 	/// Can be rolled back or committed when called inside a transaction.
-	pub(crate) fn clear_child_storage(&mut self, child_info: &ChildInfo) -> u32 {
+	pub fn clear_child_storage(&mut self, child_info: &ChildInfo) -> u32 {
 		self.mark_dirty();
 
 		let extrinsic_index = self.extrinsic_index();
@@ -391,7 +391,7 @@ impl<H: Hasher> OverlayedChanges<H> {
 	/// Removes all key-value pairs which keys share the given prefix.
 	///
 	/// Can be rolled back or committed when called inside a transaction.
-	pub(crate) fn clear_prefix(&mut self, prefix: &[u8]) -> u32 {
+	pub fn clear_prefix(&mut self, prefix: &[u8]) -> u32 {
 		self.mark_dirty();
 
 		self.top.clear_where(|key, _| key.starts_with(prefix), self.extrinsic_index())
@@ -400,7 +400,7 @@ impl<H: Hasher> OverlayedChanges<H> {
 	/// Removes all key-value pairs which keys share the given prefix.
 	///
 	/// Can be rolled back or committed when called inside a transaction
-	pub(crate) fn clear_child_prefix(&mut self, child_info: &ChildInfo, prefix: &[u8]) -> u32 {
+	pub fn clear_child_prefix(&mut self, child_info: &ChildInfo, prefix: &[u8]) -> u32 {
 		self.mark_dirty();
 
 		let extrinsic_index = self.extrinsic_index();