diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/CleanUpCorruptedPublishedFlags.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/CleanUpCorruptedPublishedFlags.cs
new file mode 100644
index 0000000000..d62ad7645d
--- /dev/null
+++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/CleanUpCorruptedPublishedFlags.cs
@@ -0,0 +1,49 @@
+using System.Linq;
+using Umbraco.Core.Configuration;
+using Umbraco.Core.Logging;
+using Umbraco.Core.Models.Rdbms;
+using Umbraco.Core.Persistence.DatabaseModelDefinitions;
+using Umbraco.Core.Persistence.SqlSyntax;
+
+namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZero
+{
+ ///
+ /// Older corrupted dbs might have multiple published flags for a content item, this shouldn't be possible
+ /// so we need to clear the content flag on the older version
+ ///
+ [Migration("7.3.0", 18, GlobalSettings.UmbracoMigrationName)]
+ public class CleanUpCorruptedPublishedFlags : MigrationBase
+ {
+ public CleanUpCorruptedPublishedFlags(ISqlSyntaxProvider sqlSyntax, ILogger logger)
+ : base(sqlSyntax, logger)
+ {
+ }
+
+ public override void Up()
+ {
+ //Get all cmsDocument items that have more than one published date set
+ var sql = @"SELECT * FROM cmsDocument WHERE nodeId IN
+(SELECT nodeId
+FROM cmsDocument
+GROUP BY nodeId
+HAVING SUM(CASE WHEN published = 0 THEN 0 ELSE 1 END) > 1)
+AND published = 1
+ORDER BY nodeId, updateDate";
+
+ var docs = Context.Database.Fetch(sql).GroupBy(x => x.NodeId);
+
+ foreach (var doc in docs)
+ {
+ var latest = doc.OrderByDescending(x => x.UpdateDate).First();
+ foreach (var old in doc.Where(x => x.VersionId != latest.VersionId))
+ {
+ Update.Table("cmsDocument").Set(new {published = 0}).Where(new {nodeId = old.NodeId});
+ }
+ }
+ }
+
+ public override void Down()
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index 060e788d94..a40dd520a6 100644
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -411,6 +411,7 @@
+