diff --git a/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/Handlers/RemoveAnnotationHandler.cs b/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/Handlers/RemoveAnnotationHandler.cs
new file mode 100644
index 00000000..0142b352
--- /dev/null
+++ b/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/Handlers/RemoveAnnotationHandler.cs
@@ -0,0 +1,32 @@
+using DigitalData.Core.Abstraction.Application.Repository;
+using MediatR;
+
+namespace EnvelopeGenerator.Application.Common.Notifications.RemoveSignature.Handlers;
+
+///
+///
+///
+public class RemoveAnnotationHandler : INotificationHandler
+{
+ private readonly IRepository _repo;
+
+ ///
+ ///
+ ///
+ ///
+ public RemoveAnnotationHandler(IRepository repository)
+ {
+ _repo = repository;
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task Handle(RemoveSignatureNotification notification, CancellationToken cancel)
+ {
+ await _repo.DeleteAsync(s => s.EnvelopeId == notification.EnvelopeId, cancel);
+ }
+}
\ No newline at end of file
diff --git a/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/Handlers/RemoveHistoryHandler.cs b/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/Handlers/RemoveHistoryHandler.cs
new file mode 100644
index 00000000..54e5e087
--- /dev/null
+++ b/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/Handlers/RemoveHistoryHandler.cs
@@ -0,0 +1,40 @@
+using DigitalData.Core.Abstraction.Application.Repository;
+using EnvelopeGenerator.Application.Common.Extensions;
+using EnvelopeGenerator.Application.Histories.Commands;
+using EnvelopeGenerator.Domain.Constants;
+using MediatR;
+using Newtonsoft.Json;
+
+namespace EnvelopeGenerator.Application.Common.Notifications.RemoveSignature.Handlers;
+
+///
+///
+///
+public class RemoveHistoryHandler : INotificationHandler
+{
+ private readonly IRepository _repo;
+
+ ///
+ ///
+ ///
+ ///
+ public RemoveHistoryHandler(IRepository repository)
+ {
+ _repo = repository;
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task Handle(RemoveSignatureNotification notification, CancellationToken cancel)
+ {
+ await _repo.DeleteAsync(hists
+ => hists
+ .Where(hist => hist.EnvelopeId == notification.EnvelopeId)
+ .Where(hist => hist.Status == EnvelopeStatus.DocumentSigned)
+ , cancel);
+ }
+}
\ No newline at end of file
diff --git a/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/RemoveSignatureNotification.cs b/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/RemoveSignatureNotification.cs
new file mode 100644
index 00000000..0abaf178
--- /dev/null
+++ b/EnvelopeGenerator.Application/Common/Notifications/RemoveSignature/RemoveSignatureNotification.cs
@@ -0,0 +1,9 @@
+using MediatR;
+
+namespace EnvelopeGenerator.Application.Common.Notifications.RemoveSignature;
+
+///
+///
+///
+///
+public record RemoveSignatureNotification(int EnvelopeId) : INotification;
\ No newline at end of file
diff --git a/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs b/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs
index dd2feee1..d1b11c2c 100644
--- a/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs
+++ b/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs
@@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
+using DigitalData.Core.Abstractions.Interfaces;
using EnvelopeGenerator.Domain.Interfaces;
#if NETFRAMEWORK
@@ -14,7 +15,7 @@ namespace EnvelopeGenerator.Domain.Entities
#endif
[Table("TBSIG_DOCUMENT_STATUS", Schema = "dbo")]
-public class DocumentStatus : IHasEnvelope, IHasReceiver
+public class DocumentStatus : IHasEnvelope, IHasReceiver, IEntity
{
public DocumentStatus()
{
diff --git a/EnvelopeGenerator.Domain/Entities/History.cs b/EnvelopeGenerator.Domain/Entities/History.cs
index ccb564e7..68654b21 100644
--- a/EnvelopeGenerator.Domain/Entities/History.cs
+++ b/EnvelopeGenerator.Domain/Entities/History.cs
@@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using EnvelopeGenerator.Domain.Interfaces;
using EnvelopeGenerator.Domain.Constants;
+using DigitalData.Core.Abstractions.Interfaces;
#if NETFRAMEWORK
@@ -17,7 +18,7 @@ namespace EnvelopeGenerator.Domain.Entities
#endif
[Table("TBSIG_ENVELOPE_HISTORY", Schema = "dbo")]
-public class History : IHasEnvelope, IHasReceiver
+public class History : IHasEnvelope, IHasReceiver, IEntity
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]