diff --git a/perxis-proto b/perxis-proto
index 8606df02e0df6807e503bf22471a295020a47fba..f000812a1eef24093c0d0abf1318e3179b679773 160000
--- a/perxis-proto
+++ b/perxis-proto
@@ -1 +1 @@
-Subproject commit 8606df02e0df6807e503bf22471a295020a47fba
+Subproject commit f000812a1eef24093c0d0abf1318e3179b679773
diff --git a/pkg/items/pagination.go b/pkg/items/pagination.go
index 6fe197d7d36c1e191e300dfb2a7799d4eac58a94..2e6fdd56d075f462fa2c875248943d1010ec20bd 100644
--- a/pkg/items/pagination.go
+++ b/pkg/items/pagination.go
@@ -10,7 +10,9 @@ import (
 )
 
 type BatchProcessor struct {
-	Items                        Items
+	Items Items // fixme: после того как здесь Content поменяли на Items (из-за цикличного импорта)
+	// использование в perxis BatchProcessor'a необходимо менять
+	// стоит ли это так делать или лучше в perxis-go BatchProcessor вынести в отдельный пакет чтобы не было цикличного импорта?
 	SpaceID, EnvID, CollectionID string
 	FindOptions                  *FindOptions
 	FindPublishedOptions         *FindPublishedOptions
diff --git a/pkg/items/service.go b/pkg/items/service.go
index 51d65d5bc9f7b3cc039f3e40da5e1abf53c4e51f..6a550dd0ad642f2dd1e02f7966b5963bf2147979 100644
--- a/pkg/items/service.go
+++ b/pkg/items/service.go
@@ -149,3 +149,25 @@ func EncodeAggregateResult(ctx context.Context, request map[string]string, r map
 
 	return result, nil
 }
+
+func CreateAndPublishItem(ctx context.Context, items Items, item *Item) error {
+	var err error
+	if item, err = items.Create(ctx, item); err != nil {
+		return errors.Wrap(err, "create item")
+	}
+	if err = items.Publish(ctx, item); err != nil {
+		return errors.Wrap(err, "publish item")
+	}
+	return nil
+}
+
+func UpdateAndPublishItem(ctx context.Context, items Items, item *Item) error {
+	var err error
+	if err = items.Update(ctx, item); err != nil {
+		return errors.Wrap(err, "update item")
+	}
+	if err = items.Publish(ctx, item); err != nil {
+		return errors.Wrap(err, "publish item")
+	}
+	return nil
+}