diff --git a/snf-cyclades-app/synnefo/logic/backend.py b/snf-cyclades-app/synnefo/logic/backend.py
index 0c0db1f3d526b06cca231aa395b8a53feea83453..5e5d47a828d01ab468a9574d0397b549dcdc6201 100644
--- a/snf-cyclades-app/synnefo/logic/backend.py
+++ b/snf-cyclades-app/synnefo/logic/backend.py
@@ -642,6 +642,8 @@ def get_ganeti_jobs(backend=None, bulk=False):
 
 def get_backends(backend=None):
     if backend:
+        if backend.offline:
+            return []
         return [backend]
     return Backend.objects.filter(offline=False)
 
diff --git a/snf-cyclades-app/synnefo/logic/management/commands/reconcile-servers.py b/snf-cyclades-app/synnefo/logic/management/commands/reconcile-servers.py
index 0694b74f021bb2d9fa07f31ba4949b59af730f61..bba9985866553a9d3de649a2b42027ca2e4c11f4 100644
--- a/snf-cyclades-app/synnefo/logic/management/commands/reconcile-servers.py
+++ b/snf-cyclades-app/synnefo/logic/management/commands/reconcile-servers.py
@@ -43,7 +43,9 @@ from optparse import make_option
 from django.core.management.base import BaseCommand, CommandError
 
 from synnefo.db.models import VirtualMachine, Network, pooled_rapi_client
-from synnefo.logic import reconciliation, backend, utils
+from synnefo.logic import reconciliation, utils
+from synnefo.logic import backend as backend_mod
+from synnefo.management.common import get_backend
 
 
 class Command(BaseCommand):
@@ -85,7 +87,10 @@ class Command(BaseCommand):
                     dest='fix_unsynced_nics', default=False,
                     help='Fix unsynced nics between DB and Ganeti'),
         make_option('--fix-all', action='store_true', dest='fix_all',
-                    default=False, help='Enable all --fix-* arguments'))
+                    default=False, help='Enable all --fix-* arguments'),
+        make_option('--backend-id', default=None, dest='backend-id',
+                    help='Reconcilie VMs only for this backend'),
+        )
 
     def _process_args(self, options):
         keys_detect = [k for k in options.keys() if k.startswith('detect_')]
@@ -111,11 +116,13 @@ class Command(BaseCommand):
     def handle(self, **options):
         verbosity = int(options['verbosity'])
         self._process_args(options)
+        backend_id = options['backend-id']
+        backend = get_backend(backend_id) if backend_id else None
 
-        D = reconciliation.get_servers_from_db()
-        G, GNics = reconciliation.get_instances_from_ganeti()
+        D = reconciliation.get_servers_from_db(backend)
+        G, GNics = reconciliation.get_instances_from_ganeti(backend)
 
-        DBNics = reconciliation.get_nics_from_db()
+        DBNics = reconciliation.get_nics_from_db(backend)
 
         #
         # Detect problems
@@ -190,7 +197,7 @@ class Command(BaseCommand):
                 "servers in the DB:" % len(stale)
             for vm in VirtualMachine.objects.filter(pk__in=stale):
                 event_time = datetime.datetime.now()
-                backend.process_op_status(vm=vm, etime=event_time, jobid=-0,
+                backend_mod.process_op_status(vm=vm, etime=event_time, jobid=-0,
                     opcode='OP_INSTANCE_REMOVE', status='success',
                     logmsg='Reconciliation: simulated Ganeti event')
             print >> sys.stderr, "    ...done"
@@ -216,7 +223,7 @@ class Command(BaseCommand):
                 opcode = "OP_INSTANCE_REBOOT" if ganeti_up \
                          else "OP_INSTANCE_SHUTDOWN"
                 event_time = datetime.datetime.now()
-                backend.process_op_status(vm=vm, etime=event_time, jobid=-0,
+                backend_mod.process_op_status(vm=vm, etime=event_time, jobid=-0,
                     opcode=opcode, status='success',
                     logmsg='Reconciliation: simulated Ganeti event')
             print >> sys.stderr, "    ...done"
@@ -227,7 +234,7 @@ class Command(BaseCommand):
             for id in build_errors:
                 vm = VirtualMachine.objects.get(pk=id)
                 event_time = datetime.datetime.now()
-                backend.process_op_status(vm=vm, etime=event_time, jobid=-0,
+                backend_mod.process_op_status(vm=vm, etime=event_time, jobid=-0,
                     opcode="OP_INSTANCE_CREATE", status='error',
                     logmsg='Reconciliation: simulated Ganeti event')
             print >> sys.stderr, "    ...done"
@@ -260,7 +267,7 @@ class Command(BaseCommand):
                         print 'Network of nic %d of vm %s is None. ' \
                               'Can not reconcile' % (i, vm.backend_vm_id)
                 event_time = datetime.datetime.now()
-                backend.process_net_status(vm=vm, etime=event_time, nics=final_nics)
+                backend_mod.process_net_status(vm=vm, etime=event_time, nics=final_nics)
             print >> sys.stderr, "    ...done"
 
 
diff --git a/snf-cyclades-app/synnefo/logic/reconciliation.py b/snf-cyclades-app/synnefo/logic/reconciliation.py
index 9b3796efe5f6ae3bef24d80c6552ce397859c8d7..fd597162331bc3e22db93a7af2c4fd2edeb11575 100755
--- a/snf-cyclades-app/synnefo/logic/reconciliation.py
+++ b/snf-cyclades-app/synnefo/logic/reconciliation.py
@@ -73,7 +73,7 @@ from datetime import datetime, timedelta
 
 from synnefo.db.models import (VirtualMachine, pooled_rapi_client)
 from synnefo.logic.rapi import GanetiApiError
-from synnefo.logic.backend import get_ganeti_instances
+from synnefo.logic.backend import get_ganeti_instances, get_backends
 from synnefo.logic import utils
 
 
@@ -160,13 +160,14 @@ def instances_with_build_errors(D, G):
     return failed
 
 
-def get_servers_from_db():
-    vms = VirtualMachine.objects.filter(deleted=False, backend__offline=False)
+def get_servers_from_db(backend=None):
+    backends = get_backends(backend)
+    vms = VirtualMachine.objects.filter(deleted=False, backend__in=backends)
     return dict(map(lambda x: (x.id, x.operstate), vms))
 
 
-def get_instances_from_ganeti():
-    ganeti_instances = get_ganeti_instances(bulk=True)
+def get_instances_from_ganeti(backend=None):
+    ganeti_instances = get_ganeti_instances(backend=backend, bulk=True)
     snf_instances = {}
     snf_nics = {}
 
@@ -193,11 +194,11 @@ def get_instances_from_ganeti():
 #
 # Nics
 #
-def get_nics_from_ganeti():
+def get_nics_from_ganeti(backend=None):
     """Get network interfaces for each ganeti instance.
 
     """
-    instances = get_ganeti_instances(bulk=True)
+    instances = get_ganeti_instances(backend=backend, bulk=True)
     prefix = settings.BACKEND_PREFIX_ID
 
     snf_instances_nics = {}
@@ -232,11 +233,13 @@ def get_nics_from_instance(i):
     return nics
 
 
-def get_nics_from_db():
+def get_nics_from_db(backend=None):
     """Get network interfaces for each vm in DB.
 
     """
-    instances = VirtualMachine.objects.filter(deleted=False)
+    backends = get_backends(backend)
+    instances = VirtualMachine.objects.filter(deleted=False,
+                                              backend__in=backends)
     instances_nics = {}
     for instance in instances:
         nics = {}