diff --git a/lib/AdapterRpc.php b/lib/AdapterRpc.php
index eecbcd74103ae71baae5026c298d415d164d4d39..12e41068ad1a45e3761dec2477e096a8ef95e792 100644
--- a/lib/AdapterRpc.php
+++ b/lib/AdapterRpc.php
@@ -824,6 +824,26 @@ class AdapterRpc extends Adapter
         return $this->connector->post('facilitiesManager', 'createFacility', $facility);
     }
 
+    public function getFacilitiesByAttributeWithAttributes($attributeName, $attributeValue, $attrNames)
+    {
+        $facilitiesWithAttributes = $this->connector->post(
+            'facilitiesManager',
+            'getFacilitiesByAttributeWithAttributes',
+            ['attributeName' => $attributeName, 'attributeValue' => $attributeValue, 'attrNames' => $attrNames]
+        );
+
+        $attrNamesMap = AttributeUtils::getRpcAttrNames($attrNames);
+
+        foreach ($facilitiesWithAttributes as $facilityWithAttributes) {
+            $facilityWithAttributes['attributes'] = $this->getAttributes(
+                $facilityWithAttributes['attributes'],
+                $attrNamesMap
+            );
+        }
+
+        return $facilitiesWithAttributes;
+    }
+
     private function getAttributes($perunAttrs, $attrNamesMap)
     {
         $attributes = [];
diff --git a/lib/MetadataFromPerun.php b/lib/MetadataFromPerun.php
index 6cb39005f6e344614c20576157f8a8bf5ee42427..70d1761d3d7db1ba26ed07d84b393efea0698239 100644
--- a/lib/MetadataFromPerun.php
+++ b/lib/MetadataFromPerun.php
@@ -172,42 +172,36 @@ class MetadataFromPerun
         return $allAttrNames;
     }
 
-    /**
-     * Get all facilities with proxyIdentifiers.
-     */
-    private function getFacilities()
-    {
-        $perunProxyIdentifierAttr = $this->conf->getString(self::PERUN_PROXY_IDENTIFIER_ATTR_NAME);
-        $perunProxyIdentifierRpcAttrName = AttributeUtils::getRpcAttrName($perunProxyIdentifierAttr);
-        $proxyIdentifier = $this->conf->getString(self::PROXY_IDENTIFIER);
-        $attributeDefinition = [
-            $perunProxyIdentifierRpcAttrName => $proxyIdentifier,
-        ];
-
-        return $this->rpcAdapter->searchFacilitiesByAttributeValue($attributeDefinition);
-    }
-
     /*+
      * Get facilities with attributes.
      */
     private function getFacilitiesWithAttributes()
     {
+        $perunProxyIdentifierAttr = $this->conf->getString(self::PERUN_PROXY_IDENTIFIER_ATTR_NAME);
+        $perunProxyIdentifierRpcAttrName = AttributeUtils::getRpcAttrName($perunProxyIdentifierAttr);
         $allAttrNames = $this->getAllAttributeNames();
-        $facilitiesWithAttributes = [];
-        foreach ($this->getFacilities() as $facility) {
-            $attributes = $this->rpcAdapter->getFacilityAttributes($facility, $allAttrNames);
+
+        $facilitiesWithAttributes = $this->rpcAdapter->getFacilitiesByAttributeWithAttributes(
+            $perunProxyIdentifierRpcAttrName,
+            $this->conf->getString(self::PROXY_IDENTIFIER),
+            $allAttrNames
+        );
+
+        $facilitiesWithAttributesRes = [];
+        foreach ($facilitiesWithAttributes as $facilityWithAttributes) {
+            $attributes = $facilityWithAttributes['attributes'];
             $facilityAttributes = [];
             foreach ($attributes as $attribute) {
                 $facilityAttributes[$attribute['name']] = $attribute;
             }
             if (!empty($facilityAttributes[$this->perunProxyEntityIDAttr]['value'])) {
-                $facilitiesWithAttributes[$facility->getId()] = [
-                    'facility' => $facility,
+                $facilitiesWithAttributesRes[$facilityWithAttributes['facility']['id']] = [
+                    'facility' => $facilityWithAttributes['facility'],
                     self::FACILITY_ATTRIBUTES => $facilityAttributes,
                 ];
             }
         }
 
-        return $facilitiesWithAttributes;
+        return $facilitiesWithAttributesRes;
     }
 }
diff --git a/www/listOfSps.php b/www/listOfSps.php
index bea2786a87ccc0ca4e7768dd80f81cc0ee29fda6..cdb558c71d441ad494a1dd668a192d04fe8c6285 100644
--- a/www/listOfSps.php
+++ b/www/listOfSps.php
@@ -74,12 +74,7 @@ $perunShowOnServiceListAttr
     = $conf->getString(PERUN_SHOW_ON_SERVICE_LIST_ATTR_NAME, null);
 
 $showProtocol = $conf->getBoolean(PERUN_SHOW_PROTOCOL, true);
-
 $rpcAdapter = new AdapterRpc();
-$attributeDefinition = [];
-$attributeDefinition[$perunProxyIdentifierAttr] = $proxyIdentifier;
-$facilities
-    = $rpcAdapter->searchFacilitiesByAttributeValue($attributeDefinition);
 
 $attrNames = [];
 
@@ -105,16 +100,21 @@ $samlServices = [];
 $oidcServices = [];
 $samlTestServicesCount = 0;
 $oidcTestServicesCount = 0;
-foreach ($facilities as $facility) {
-    $attributes = $rpcAdapter->getFacilityAttributes($facility, $attrNames);
 
+$facilitiesWithAttributes = $rpcAdapter->getFacilitiesByAttributeWithAttributes(
+    $perunProxyIdentifierAttr,
+    $proxyIdentifier,
+    $attrNames
+);
+
+foreach ($facilitiesWithAttributes as $facilityWithAttributes) {
     $facilityAttributes = [];
-    foreach ($attributes as $attribute) {
+    foreach ($facilityWithAttributes['attributes'] as $attribute) {
         $facilityAttributes[$attribute['name']] = $attribute;
     }
     if (!empty($facilityAttributes[$perunSaml2EntityIdAttr]['value'])) {
-        $samlServices[$facility->getId()] = [
-            'facility' => $facility,
+        $samlServices[$facilityWithAttributes['facility']['id']] = [
+            'facility' => $facilityWithAttributes['facility'],
             'name' => $facilityAttributes[$perunServiceNameAttr],
             'loginURL' => $facilityAttributes[$perunLoginURLAttr],
             'showOnServiceList' => $facilityAttributes[$perunShowOnServiceListAttr],
@@ -126,8 +126,8 @@ foreach ($facilities as $facility) {
     }
 
     if ($showOIDCServices && !empty($facilityAttributes[$perunOidcClientIdAttr]['value'])) {
-        $oidcServices[$facility->getId()] = [
-            'facility' => $facility,
+        $oidcServices[$facilityWithAttributes['facility']['id']] = [
+            'facility' => $facilityWithAttributes['facility'],
             'name' => $facilityAttributes[$perunServiceNameAttr],
             'loginURL' => $facilityAttributes[$perunLoginURLAttr],
             'showOnServiceList' => $facilityAttributes[$perunShowOnServiceListAttr],