diff --git a/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj b/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj
index 81287ed13..80d3d47c4 100644
--- a/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj
+++ b/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj
@@ -543,6 +543,7 @@
+
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/HierarchyEditPublish.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/HierarchyEditPublish.sql
index 82ce8f325..798eb322b 100644
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/HierarchyEditPublish.sql
+++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/HierarchyEditPublish.sql
@@ -18,6 +18,7 @@
-- 03-06-2024 DB Publish NodePathDisplayVersion records.
-- 13-06-2024 DB Publish ResourceReferenceDisplayVersion records.
-- 26-07-2024 SA Remove references to be implemented
+-- 21-08-2024 SS Publishing catalogues needs to update referencing catalogues
-- 27-08-2024 SA Moving a folder into a referenced folder should affect all instances of the referenced folder.[added
-- condition to avoid duplicate entries in to NodeLink table]
-- 02-09-2024 DB Remove any deleted NodePathDisplayVersion anf ResourceReferenceDisplayVersion records.
@@ -560,7 +561,11 @@ BEGIN
AND np.CatalogueNodeId != np.NodeId
AND hed.NodeId IS NULL
+ ----------------------------------------------------------
+ -- NodePath: generate new NodePath/s for refered Catalogues
+ ----------------------------------------------------------
+ EXEC [hierarchy].[HierarchyNewNodePathForReferedCatalogue] @HierarchyEditId,@AmendUserId,@AmendDate
----------------------------------------------------------
-- NodePathNode
----------------------------------------------------------
@@ -576,7 +581,7 @@ BEGIN
SET @NodePathCursor = CURSOR FORWARD_ONLY FOR
SELECT NodePathId, NodeId, ParentNodeId, InitialNodePath, NewNodePath, HierarchyEditDetailOperationId
FROM hierarchy.HierarchyEditDetail
- WHERE HierarchyEditId = 80
+ WHERE HierarchyEditId = @HierarchyEditId
AND ISNULL(InitialNodePath, '') != ISNULL(NewNodePath, InitialNodePath)
AND (
HierarchyEditDetailTypeId = 4 -- Node Link
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/HierarchyNewNodePathForReferedCatalogue.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/HierarchyNewNodePathForReferedCatalogue.sql
new file mode 100644
index 000000000..8b87995d6
--- /dev/null
+++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/HierarchyNewNodePathForReferedCatalogue.sql
@@ -0,0 +1,95 @@
+-------------------------------------------------------------------------------
+-- Author Sarathlal
+-- Created 21-08-2024
+-- Purpose Publishing catalogues needs to update referencing catalogues
+--
+-- Modification History
+-- 21-08-2024 SS Initial version
+-------------------------------------------------------------------------------
+CREATE PROCEDURE [hierarchy].[HierarchyNewNodePathForReferedCatalogue]
+(
+ @HierarchyEditId INT,
+ @AmendUserId INT,
+ @AmendDate datetimeoffset(7)
+)
+
+AS
+
+BEGIN
+ BEGIN TRY
+
+ BEGIN TRAN
+ DECLARE @NodePathId int
+ DECLARE @PrimaryCatalogueNodeId int
+ DECLARE @NodeId int
+ DECLARE @ParentNodeId int
+ DECLARE @NewNodePath as NVARCHAR(256)
+ DECLARE @DisplayOrder int
+ DECLARE @NewNodePathCursor as CURSOR
+ SET @NewNodePathCursor = CURSOR FORWARD_ONLY FOR
+ SELECT
+ PrimaryCatalogueNodeId,
+ ParentNodeId,
+ NodeId,
+ hed.NewNodePath,
+ DisplayOrder,
+ NodePathId
+ FROM
+ hierarchy.HierarchyEditDetail hed
+ WHERE
+ HierarchyEditId = @HierarchyEditId
+ AND
+ (
+ HierarchyEditDetailTypeId = 4 -- Node Link
+ OR
+ HierarchyEditDetailTypeId = 3 -- Folder Node
+ )
+ AND (
+ HierarchyEditDetailOperationId = 1 -- Add
+ OR
+ HierarchyEditDetailOperationId = 2 -- Edit
+ )
+ AND NodeLinkId IS NULL
+ AND [Deleted] = 0
+ OPEN @NewNodePathCursor;
+ FETCH NEXT FROM @NewNodePathCursor INTO @PrimaryCatalogueNodeId,@ParentNodeId,@NodeId,@NewNodePath,@DisplayOrder,@NodePathId;
+ WHILE @@FETCH_STATUS = 0
+ BEGIN
+ IF NOT EXISTS (SELECT 1 FROM hierarchy.NodePath WHERE NodeId=@NodeId AND NodePath=NodePath+'\'+CAST(@NodeId AS VARCHAR(100)))
+ BEGIN
+ INSERT INTO hierarchy.NodePath (NodeId, NodePath, CatalogueNodeId, IsActive, Deleted, CreateUserId, CreateDate, AmendUserId, AmendDate)
+ SELECT @NodeId,NP.NodePath+'\'+CAST(@NodeId AS VARCHAR(100)),NP.CatalogueNodeId,1,0,@AmendUserId,@AmendDate,@AmendUserId,@AmendDate FROM
+ hub.[fn_Split](@NewNodePath, '\') nodeInPath
+ INNER JOIN hierarchy.NodePath NP ON NP.NodeId=nodeInPath.value AND CatalogueNodeId!=@PrimaryCatalogueNodeId
+ WHERE nodeInPath.value=@ParentNodeId
+
+ END
+
+
+ FETCH NEXT FROM @NewNodePathCursor INTO @PrimaryCatalogueNodeId,@ParentNodeId,@NodeId,@NewNodePath,@DisplayOrder,@NodePathId;
+
+ END
+
+ CLOSE @NewNodePathCursor;
+ DEALLOCATE @NewNodePathCursor;
+ COMMIT
+
+ END TRY
+ BEGIN CATCH
+ DECLARE @ErrorMessage NVARCHAR(4000);
+ DECLARE @ErrorSeverity INT;
+ DECLARE @ErrorState INT;
+
+ SELECT
+ @ErrorMessage = ERROR_MESSAGE(),
+ @ErrorSeverity = ERROR_SEVERITY(),
+ @ErrorState = ERROR_STATE();
+
+ IF @@TRANCOUNT > 0
+ ROLLBACK TRAN;
+
+ RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState);
+
+ END CATCH
+END
+GO
\ No newline at end of file