diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props
index 1a712572da..099ff4c023 100644
--- a/src/Directory.Packages.props
+++ b/src/Directory.Packages.props
@@ -54,7 +54,7 @@
-
+
diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_failed_message_with_receive_properties_is_retried.cs b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_failed_message_with_receive_properties_is_retried.cs
new file mode 100644
index 0000000000..4e5ba7cf74
--- /dev/null
+++ b/src/ServiceControl.AcceptanceTests/Recoverability/MessageFailures/When_a_failed_message_with_receive_properties_is_retried.cs
@@ -0,0 +1,113 @@
+namespace ServiceControl.AcceptanceTests.RavenDB.Recoverability.MessageFailures
+{
+ using System;
+ using System.Linq;
+ using System.Threading;
+ using System.Threading.Tasks;
+ using AcceptanceTesting;
+ using AcceptanceTesting.EndpointTemplates;
+ using Infrastructure;
+ using NServiceBus;
+ using NServiceBus.AcceptanceTesting;
+ using NServiceBus.Configuration.AdvancedExtensibility;
+ using NServiceBus.Features;
+ using NServiceBus.Settings;
+ using NServiceBus.Transport;
+ using NUnit.Framework;
+ using ServiceControl.MessageFailures;
+
+ class When_a_failed_message_with_receive_properties_is_retried : AcceptanceTest
+ {
+ [Test]
+ public async Task Should_preserve_receive_dispatch_properties()
+ {
+ //HINT: LearningTransport defines one receive property "LearningTransport.FileCreatedAt"
+ // The property should have the same value when initially processed as when retried
+ var scenarioContext = await Define()
+ .WithEndpoint(b => b.When(async ctx =>
+ {
+ if (ctx.UniqueMessageId == null)
+ {
+ return false;
+ }
+
+ FailedMessage failedMessage = await this.TryGet($"/api/errors/{ctx.UniqueMessageId}");
+ if (failedMessage == null)
+ {
+ return false;
+ }
+
+ ctx.FailureGroupId = failedMessage.FailureGroups.First().Id;
+
+ return true;
+ }, async (bus, ctx) =>
+ {
+ ctx.AboutToSendRetry = true;
+ await this.Post