diff --git a/libvirt/tools/virsh.c b/libvirt-pmc/tools/virsh.c
index eb11a78..9f473b9 100644
--- a/libvirt/tools/virsh.c
+++ b/libvirt-pmc/tools/virsh.c
@@ -2844,6 +2844,7 @@ static const vshCmdInfo info_migrate[] = {
 };
 
 static const vshCmdOptDef opts_migrate[] = {
+    {"pmc", VSH_OT_BOOL, 0, N_("enable pre migration checks")},
     {"live", VSH_OT_BOOL, 0, N_("live migration")},
     {"p2p", VSH_OT_BOOL, 0, N_("peer-2-peer migration")},
     {"direct", VSH_OT_BOOL, 0, N_("direct migration")},
@@ -2866,6 +2867,14 @@ cmdMigrate (vshControl *ctl, const vshCmd *cmd)
     const char *migrateuri;
     const char *dname;
     int flags = 0, found, ret = FALSE;
+    
+    /**
+     * pre migration checks
+     */
+    int enable_checks = FALSE;
+    virConnectPtr dconn = NULL;
+    /**
+     */
 
     if (!vshConnectionUsability (ctl, ctl->conn, TRUE))
         return FALSE;
@@ -2882,6 +2891,10 @@ cmdMigrate (vshControl *ctl, const vshCmd *cmd)
     migrateuri = vshCommandOptString (cmd, "migrateuri", NULL);
 
     dname = vshCommandOptString (cmd, "dname", NULL);
+    
+    /* checking for pre migration check activation */
+    if (vshCommandOptBool(cmd,"pmc"))
+        enable_checks = TRUE;
 
     if (vshCommandOptBool (cmd, "live"))
         flags |= VIR_MIGRATE_LIVE;
@@ -2912,11 +2925,30 @@ cmdMigrate (vshControl *ctl, const vshCmd *cmd)
             ret = TRUE;
     } else {
         /* For traditional live migration, connect to the destination host directly. */
-        virConnectPtr dconn = NULL;
+        //virConnectPtr dconn = NULL; //moved to line 2875
         virDomainPtr ddom = NULL;
 
         dconn = virConnectOpenAuth (desturi, virConnectAuthPtrDefault, 0);
         if (!dconn) goto done;
+        
+        /**
+         * Before migration if enable_checks variable assume value TRUE
+         * pre migration checks are executed
+         */
+        
+        if( enable_checks == TRUE )
+        {
+            int checkres = -1;
+            
+            checkres = virDomainMigratePMC(dom,dconn,flags,
+                                           dname,migrateuri,0);
+            if( checkres < 0 )
+            {
+                printf("Pre migration checks fails: migration process will be terminated.\n");
+                ret = TRUE;
+                goto check_fail;
+            }
+        }
 
         ddom = virDomainMigrate (dom, dconn, flags, dname, migrateuri, 0);
         if (ddom) {
@@ -2924,7 +2956,11 @@ cmdMigrate (vshControl *ctl, const vshCmd *cmd)
             ret = TRUE;
         }
         virConnectClose (dconn);
+        goto done;
     }
+ 
+ check_fail:
+    virConnectClose (dconn);
 
  done:
     if (dom) virDomainFree (dom);
