diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py
index 6f1b17343b0c3feb2f433e5d291b535b0c952e1a..e434340b75e67625dde732728fa3225cae3a7c6d 100644
--- a/lib/rapi/rlib2.py
+++ b/lib/rapi/rlib2.py
@@ -156,6 +156,21 @@ ALL_FEATURES = frozenset([
 _WFJC_TIMEOUT = 10
 
 
+# FIXME: For compatibility we update the beparams/memory field. Needs to be
+#        removed in Ganeti 2.7
+def _UpdateBeparams(inst):
+  """Updates the beparams dict of inst to support the memory field.
+
+  @param inst: Inst dict
+  @return: Updated inst dict
+
+  """
+  beparams = inst["beparams"]
+  beparams[constants.BE_MEMORY] = beparams[constants.BE_MAXMEM]
+
+  return inst
+
+
 class R_root(baserlib.ResourceBase):
   """/ resource.
 
@@ -763,7 +778,7 @@ class R_2_instances(baserlib.OpcodeResource):
     use_locking = self.useLocking()
     if self.useBulk():
       bulkdata = client.QueryInstances([], I_FIELDS, use_locking)
-      return baserlib.MapBulkFields(bulkdata, I_FIELDS)
+      return map(_UpdateBeparams, baserlib.MapBulkFields(bulkdata, I_FIELDS))
     else:
       instancesdata = client.QueryInstances([], ["name"], use_locking)
       instanceslist = [row[0] for row in instancesdata]
@@ -816,7 +831,7 @@ class R_2_instances_name(baserlib.OpcodeResource):
                                             fields=I_FIELDS,
                                             use_locking=self.useLocking())
 
-    return baserlib.MapFields(I_FIELDS, result[0])
+    return _UpdateBeparams(baserlib.MapFields(I_FIELDS, result[0]))
 
   def GetDeleteOpInput(self):
     """Delete an instance.