diff --git a/persistence-modules/flyway-repair/README.MD b/persistence-modules/flyway-repair/README.MD
new file mode 100644
index 0000000000..7d843af9ea
--- /dev/null
+++ b/persistence-modules/flyway-repair/README.MD
@@ -0,0 +1 @@
+### Relevant Articles:
diff --git a/persistence-modules/flyway-repair/docker-compose/.env b/persistence-modules/flyway-repair/docker-compose/.env
new file mode 100644
index 0000000000..8a9d0e7954
--- /dev/null
+++ b/persistence-modules/flyway-repair/docker-compose/.env
@@ -0,0 +1 @@
+POSTGRES_PORT=5431
diff --git a/persistence-modules/flyway-repair/docker-compose/docker-compose.yaml b/persistence-modules/flyway-repair/docker-compose/docker-compose.yaml
new file mode 100644
index 0000000000..b32b48d1cf
--- /dev/null
+++ b/persistence-modules/flyway-repair/docker-compose/docker-compose.yaml
@@ -0,0 +1,15 @@
+version: '3.0'
+
+services:
+
+ postgres-test:
+ image: postgres:11.5
+ ports:
+ - ${POSTGRES_PORT}:5432
+ env_file: postgres.env
+ networks:
+ - baeldung
+
+networks:
+ baeldung:
+ driver: bridge
diff --git a/persistence-modules/flyway-repair/docker-compose/postgres.env b/persistence-modules/flyway-repair/docker-compose/postgres.env
new file mode 100644
index 0000000000..1e7373fdf0
--- /dev/null
+++ b/persistence-modules/flyway-repair/docker-compose/postgres.env
@@ -0,0 +1,3 @@
+POSTGRES_USER=testuser
+POSTGRES_PASSWORD=password
+POSTGRES_DB=testdb
diff --git a/persistence-modules/flyway-repair/pom.xml b/persistence-modules/flyway-repair/pom.xml
new file mode 100644
index 0000000000..4d61bd5c0e
--- /dev/null
+++ b/persistence-modules/flyway-repair/pom.xml
@@ -0,0 +1,80 @@
+
+
+ 4.0.0
+ flyway
+ flyway-repair
+ jar
+ Flyway Repair Demo
+
+
+ com.baeldung
+ parent-boot-2
+ 0.0.1-SNAPSHOT
+ ../../parent-boot-2
+
+
+
+
+ org.flywaydb
+ flyway-core
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+
+
+
+
+
+
+ org.flywaydb
+ flyway-maven-plugin
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
+
+
+ h2
+
+ true
+
+
+ h2
+
+
+
+ com.h2database
+ h2
+ runtime
+
+
+
+
+
+ postgres
+
+ postgres
+
+
+
+ org.postgresql
+ postgresql
+ runtime
+
+
+
+
+
+
+
+ src/main/resources/application-${spring-boot.run.profiles}.properties
+
+
+
diff --git a/persistence-modules/flyway-repair/src/main/java/com/baeldung/flywaycallbacks/FlywayApplication.java b/persistence-modules/flyway-repair/src/main/java/com/baeldung/flywaycallbacks/FlywayApplication.java
new file mode 100644
index 0000000000..34d794f7d1
--- /dev/null
+++ b/persistence-modules/flyway-repair/src/main/java/com/baeldung/flywaycallbacks/FlywayApplication.java
@@ -0,0 +1,13 @@
+package com.baeldung.flywaycallbacks;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class FlywayApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(FlywayApplication.class, args);
+ }
+
+}
diff --git a/persistence-modules/flyway-repair/src/main/resources/application-callbacks.properties b/persistence-modules/flyway-repair/src/main/resources/application-callbacks.properties
new file mode 100644
index 0000000000..46ad86afee
--- /dev/null
+++ b/persistence-modules/flyway-repair/src/main/resources/application-callbacks.properties
@@ -0,0 +1 @@
+spring.flyway.locations=classpath:db/migration,classpath:db/callback
diff --git a/persistence-modules/flyway-repair/src/main/resources/application-h2.properties b/persistence-modules/flyway-repair/src/main/resources/application-h2.properties
new file mode 100644
index 0000000000..64e485244e
--- /dev/null
+++ b/persistence-modules/flyway-repair/src/main/resources/application-h2.properties
@@ -0,0 +1,3 @@
+flyway.url=jdbc:h2:file:./testdb;DB_CLOSE_ON_EXIT=FALSE;AUTO_RECONNECT=TRUE;MODE=MySQL;DATABASE_TO_UPPER=false;
+flyway.user=testuser
+flyway.password=password
diff --git a/persistence-modules/flyway-repair/src/main/resources/application-postgres.properties b/persistence-modules/flyway-repair/src/main/resources/application-postgres.properties
new file mode 100644
index 0000000000..951f8f583d
--- /dev/null
+++ b/persistence-modules/flyway-repair/src/main/resources/application-postgres.properties
@@ -0,0 +1,3 @@
+flyway.url=jdbc:postgresql://127.0.0.1:5431/testdb
+flyway.user=testuser
+flyway.password=password
diff --git a/persistence-modules/flyway-repair/src/main/resources/application.properties b/persistence-modules/flyway-repair/src/main/resources/application.properties
new file mode 100644
index 0000000000..da666d3cc2
--- /dev/null
+++ b/persistence-modules/flyway-repair/src/main/resources/application.properties
@@ -0,0 +1,3 @@
+spring.datasource.url=${flyway.url}
+spring.datasource.username=${flyway.user}
+spring.datasource.password=${flyway.password}
diff --git a/persistence-modules/flyway-repair/src/main/resources/db/callback/afterMigrateError__repair.sql b/persistence-modules/flyway-repair/src/main/resources/db/callback/afterMigrateError__repair.sql
new file mode 100644
index 0000000000..ee0cbb6cee
--- /dev/null
+++ b/persistence-modules/flyway-repair/src/main/resources/db/callback/afterMigrateError__repair.sql
@@ -0,0 +1 @@
+DELETE FROM flyway_schema_history WHERE success=false;
diff --git a/persistence-modules/flyway-repair/src/main/resources/db/migration/V1_0__add_table.sql b/persistence-modules/flyway-repair/src/main/resources/db/migration/V1_0__add_table.sql
new file mode 100644
index 0000000000..1774e837b7
--- /dev/null
+++ b/persistence-modules/flyway-repair/src/main/resources/db/migration/V1_0__add_table.sql
@@ -0,0 +1,3 @@
+create table table_one (
+ id numeric primary key
+);
diff --git a/persistence-modules/flyway-repair/src/main/resources/db/migration/V1_1__add_table.sql b/persistence-modules/flyway-repair/src/main/resources/db/migration/V1_1__add_table.sql
new file mode 100644
index 0000000000..76f2ee7ba1
--- /dev/null
+++ b/persistence-modules/flyway-repair/src/main/resources/db/migration/V1_1__add_table.sql
@@ -0,0 +1,3 @@
+create table table_two (
+ id numeric primary key
+);
diff --git a/persistence-modules/flyway-repair/src/main/resources/db/migration/V1_2__add_table.sql b/persistence-modules/flyway-repair/src/main/resources/db/migration/V1_2__add_table.sql
new file mode 100644
index 0000000000..dd5cf34059
--- /dev/null
+++ b/persistence-modules/flyway-repair/src/main/resources/db/migration/V1_2__add_table.sql
@@ -0,0 +1,3 @@
+create table table_three (
+ id numeric primary key
+);
diff --git a/persistence-modules/flyway-repair/src/main/resources/db/migration/V1_3__add_table.sql b/persistence-modules/flyway-repair/src/main/resources/db/migration/V1_3__add_table.sql
new file mode 100644
index 0000000000..4a126ffe33
--- /dev/null
+++ b/persistence-modules/flyway-repair/src/main/resources/db/migration/V1_3__add_table.sql
@@ -0,0 +1,3 @@
+create table table_four (
+ id numeric primary key
+);
diff --git a/persistence-modules/flyway-repair/src/main/resources/logback.xml b/persistence-modules/flyway-repair/src/main/resources/logback.xml
new file mode 100644
index 0000000000..56af2d397e
--- /dev/null
+++ b/persistence-modules/flyway-repair/src/main/resources/logback.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file