diff --git a/htools/Ganeti/HTools/Cluster.hs b/htools/Ganeti/HTools/Cluster.hs
index 77bfeb3369cc39adc41a8fefae696e05ebfe767c..c725fdf2fe9ca4d42739819a8da9f47f6cb7d2b7 100644
--- a/htools/Ganeti/HTools/Cluster.hs
+++ b/htools/Ganeti/HTools/Cluster.hs
@@ -909,6 +909,15 @@ nodeEvacInstance _ _ mode (Instance.Instance
                   failOnSecondaryChange mode dt >>
                   fail "Block device relocations not implemented yet"
 
+nodeEvacInstance nl il ChangePrimary
+                 inst@(Instance.Instance {Instance.diskTemplate = DTDrbd8}) _ =
+  do
+    (nl', inst', _, _) <- opToResult $ applyMove nl inst Failover
+    let idx = Instance.idx inst
+        il' = Container.add idx inst' il
+        ops = iMoveToJob nl' il' idx Failover
+    return (nl', il', ops)
+
 nodeEvacInstance _ _ _ (Instance.Instance
                         {Instance.diskTemplate = DTDrbd8}) _ =
                   fail "DRBD relocations not implemented yet"