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/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
+}