diff --git a/pkg/setup/collection.go b/pkg/setup/collection.go
index 68cc765aa0fff5615f586f50778b8848f0cdf7b7..e597acfcabefd70a9a8abb3d2fed64c11fb274d2 100644
--- a/pkg/setup/collection.go
+++ b/pkg/setup/collection.go
@@ -141,6 +141,8 @@ func (s *Setup) InstallCollection(ctx context.Context, c *Collection) (updateSch
 
 		// TODO: Проверить, что коллекция изменилась
 		// TODO: Тест на сравнение схем
+		// Замена возможного алиаса окружения на реального ID окружения перед сравнением
+		collection.EnvID = exist.EnvID
 		if !exist.Equal(collection) {
 			if err = s.content.Collections.Update(ctx, collection); err != nil {
 				return false, err
diff --git a/pkg/setup/config.go b/pkg/setup/config.go
index 14905ecd1601fec99616ec2940e40d96a19ed5d3..d7f68a90409ab338f8ff191e2f91bf80ddc0b130 100644
--- a/pkg/setup/config.go
+++ b/pkg/setup/config.go
@@ -45,7 +45,7 @@ func (cfg *Config) Load(fsys fs.FS) (*Config, error) {
 	}
 
 	if subFS, err := fs.Sub(fsys, "items"); err == nil {
-		if err = cfg.Items.Load(subFS); err != nil && !errors.Is(err, fs.ErrNotExist) {
+		if err = cfg.Items.Load(subFS, DecodeItem()); err != nil && !errors.Is(err, fs.ErrNotExist) {
 			return nil, err
 		}
 	}
diff --git a/pkg/setup/entity.go b/pkg/setup/entity.go
index 4397606de7a99acbdc36b9bc110313d04b09bcaf..69cd2c8d5ef4224bbc270c0c8cbb8df1fdfa1bf1 100644
--- a/pkg/setup/entity.go
+++ b/pkg/setup/entity.go
@@ -90,14 +90,14 @@ func (l *EntityList[C, T]) AddMany(t []T, opt ...EntityOption[C, T]) {
 }
 
 // Filter возвращает список сущностей, удовлетворяющих фильтру
-func (l *EntityList[C, T]) Filter(filter FilterFunc[T]) []*Entity[C, T] {
-	var res []*Entity[C, T]
+func (l *EntityList[C, T]) Filter(filter FilterFunc[T]) *EntityList[C, T] {
+	res := make(EntityList[C, T], 0)
 	for _, e := range *l {
 		if filter(e.value) {
 			res = append(res, e)
 		}
 	}
-	return res
+	return &res
 }
 
 // Get возвращает конфигурацию по ID