diff --git a/daemon/dnfdaemon-system.py b/daemon/dnfdaemon-system.py
index b9811acbc398123302d1a87e68f28c4fdc33699d..df21a208154d37f0d00ab434424aab75610b163a 100755
--- a/daemon/dnfdaemon-system.py
+++ b/daemon/dnfdaemon-system.py
@@ -235,7 +235,10 @@ class DnfDaemon(dnfdaemon.server.DnfDaemonBase):
         :param sender:
         """
         self.working_start(sender, write=False)
-        value = self.get_packages(pkg_filter, fields)
+        if fields ==  ['summary', 'size', 'group']:
+            value = self.get_packages_ndsg(pkg_filter)
+        else:
+            value = self.get_packages(pkg_filter, fields)
         return self.working_ended(value)
 
     @Logger
diff --git a/python/dnfdaemon/server/__init__.py b/python/dnfdaemon/server/__init__.py
index eb78c2bd6c6131eba1fd94bf4ce0eea05716d707..a9a95bf930f9b37d2912b1a081993e6f1792c868 100644
--- a/python/dnfdaemon/server/__init__.py
+++ b/python/dnfdaemon/server/__init__.py
@@ -387,6 +387,20 @@ class DnfDaemonBase(dbus.service.Object, DownloadCallback):
             value = [self._get_po_list(po, attrs) for po in pkgs]
         return json.dumps(value)
 
+    @Logger
+    def get_packages_ndsg(self, pkg_filter):
+        """Get packages and attribute values based on a filter.
+
+        :param pkg_filter: pkg pkg_filter string ('installed','updates' etc)
+        :param attrs: list of attributes to get.
+        """
+        value = []
+        if pkg_filter in ['installed', 'available', 'updates', 'obsoletes',
+                          'recent', 'extras', 'updates_all']:
+            pkgs = getattr(self.base.packages, pkg_filter)
+            value = [[self._get_id(po), po.summary, po.size, po.group] for po in pkgs]
+        return json.dumps(value)
+
     def get_attribute(self, id, attr):
         """Get package attribute.