From f718168ea519ee33888e57de88d1df6a17de2808 Mon Sep 17 00:00:00 2001 From: simonredfern Date: Thu, 18 Dec 2025 02:30:58 +0100 Subject: [PATCH] bugfix: Dynamic Entity Delete Cascade 2 --- .../main/scala/code/api/util/ErrorMessages.scala | 1 + .../main/scala/code/api/v6_0_0/APIMethods600.scala | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/obp-api/src/main/scala/code/api/util/ErrorMessages.scala b/obp-api/src/main/scala/code/api/util/ErrorMessages.scala index 2e97edb1e..acaad26de 100644 --- a/obp-api/src/main/scala/code/api/util/ErrorMessages.scala +++ b/obp-api/src/main/scala/code/api/util/ErrorMessages.scala @@ -783,6 +783,7 @@ object ErrorMessages { // Cascade Deletion Exceptions (OBP-8XXXX) val CouldNotDeleteCascade = "OBP-80001: Could not delete cascade." + val CannotDeleteCascadePersonalEntity = "OBP-80002: Cannot delete cascade for personal entities (hasPersonalEntity=true). Please delete the records and definition separately." /////////// diff --git a/obp-api/src/main/scala/code/api/v6_0_0/APIMethods600.scala b/obp-api/src/main/scala/code/api/v6_0_0/APIMethods600.scala index 99fa44f5b..033f21cc9 100644 --- a/obp-api/src/main/scala/code/api/v6_0_0/APIMethods600.scala +++ b/obp-api/src/main/scala/code/api/v6_0_0/APIMethods600.scala @@ -4062,11 +4062,16 @@ trait APIMethods600 { |1. Deletes all data records associated with the dynamic entity |2. Deletes the dynamic entity definition itself | + |This operation is only allowed for non-personal entities (hasPersonalEntity=false). + |For personal entities (hasPersonalEntity=true), you must delete the records and definition separately. + | |Use with caution - this operation cannot be undone. | |For more information see ${Glossary.getGlossaryItemLink( "Dynamic-Entities" )}/ + | + |${userAuthenticationMessage(true)} | |""", EmptyBody, @@ -4099,6 +4104,10 @@ trait APIMethods600 { dynamicEntityId, cc.callContext ) + // Check if this is a personal entity - cascade delete not allowed for personal entities + _ <- Helper.booleanToFuture(failMsg = CannotDeleteCascadePersonalEntity, cc = cc.callContext) { + !entity.hasPersonalEntity + } // Get all data records for this entity (box, _) <- NewStyle.function.invokeDynamicConnector( GET_ALL, @@ -4108,7 +4117,7 @@ trait APIMethods600 { entity.bankId, None, None, - entity.hasPersonalEntity, + false, cc.callContext ) resultList: JArray = unboxResult( @@ -4126,7 +4135,7 @@ trait APIMethods600 { entity.entityName, recordId, None, - entity.hasPersonalEntity + false ) } }