diff --git a/osm_nbi/engine.py b/osm_nbi/engine.py
index 101167c..129f709 100644
--- a/osm_nbi/engine.py
+++ b/osm_nbi/engine.py
@@ -379,13 +379,6 @@
                 session, _id, indata, not_send_msg=None
             )
 
-    def update_appinstance(self, session, topic, _id, item, indata):
-        if topic not in self.map_topic:
-            raise EngineException(
-                "Unknown topic {}!!!".format(topic), HTTPStatus.INTERNAL_SERVER_ERROR
-            )
-        return self.map_topic[topic].update_appinstance(session, _id, item, indata)
-
     def get_item_list(self, session, topic, filter_q=None, api_req=False):
         """
         Get a list of items
diff --git a/osm_nbi/k8s_topics.py b/osm_nbi/k8s_topics.py
index 9b5b84d..a17c293 100644
--- a/osm_nbi/k8s_topics.py
+++ b/osm_nbi/k8s_topics.py
@@ -42,6 +42,8 @@
     attach_dettach_profile_schema,
     ksu_schema,
     app_instance_schema,
+    app_instance_edit_schema,
+    app_instance_update_schema,
     oka_schema,
     node_create_new_schema,
     node_edit_schema,
@@ -1412,7 +1414,7 @@
     okapkg_topic = "okas"
     topic_msg = "appinstance"
     schema_new = app_instance_schema
-    schema_edit = app_instance_schema
+    schema_edit = app_instance_edit_schema
 
     def __init__(self, db, fs, msg, auth):
         super().__init__(db, fs, msg, auth)
@@ -1526,26 +1528,30 @@
         except ValidationError as e:
             raise EngineException(e, HTTPStatus.UNPROCESSABLE_ENTITY)
 
-    def update_appinstance(self, session, _id, item, indata):
+    def update_item(self, session, _id, item, indata):
         if not self.multiproject:
             filter_db = {}
         else:
             filter_db = self._get_project_filter(session)
         # To allow project&user addressing by name AS WELL AS _id
         filter_db[BaseTopic.id_field(self.topic, _id)] = _id
-        validate_input(indata, app_instance_schema)
+        self.logger.info(f"Item: {item}")
+        self.logger.info(f"Indata before validation: {indata}")
+        validate_input(indata, app_instance_update_schema)
+        self.logger.info(f"Indata after validation: {indata}")
         data = self.db.get_one(self.topic, filter_db)
         operation_params = {}
         data["operatingState"] = "PROCESSING"
         data["resourceState"] = "IN_PROGRESS"
         operation_params = indata
+        self.logger.info(f"Operation params: {operation_params}")
         op_id = self.format_on_operation(
             data,
-            item,
+            "update",
             operation_params,
         )
         self.db.set_one(self.topic, {"_id": _id}, data)
-        self._send_msg(item, {"appinstance": _id, "operation_id": op_id})
+        self._send_msg("update", {"appinstance": _id, "operation_id": op_id})
         return op_id
 
     def delete(self, session, _id, not_send_msg=None):
diff --git a/osm_nbi/nbi.py b/osm_nbi/nbi.py
index f723ff5..22e6105 100644
--- a/osm_nbi/nbi.py
+++ b/osm_nbi/nbi.py
@@ -823,10 +823,10 @@
                 "<ID>": {
                     "METHODS": ("GET", "PATCH", "DELETE"),
                     "ROLE_PERMISSION": "appinstance:id:",
-                },
-                "update": {
-                    "METHODS": ("POST",),
-                    "ROLE_PERMISSION": "appinstance:",
+                    "update": {
+                        "METHODS": ("POST",),
+                        "ROLE_PERMISSION": "appinstance:id:update:",
+                    },
                 },
             },
         }
@@ -2100,8 +2100,8 @@
                     )
                     outdata = {"op_id": op_id}
                 elif topic == "appinstances" and item == "update":
-                    op_id = self.engine.update_appinstance(
-                        engine_session, engine_topic, _id, indata, kwargs
+                    op_id = self.engine.update_item(
+                        engine_session, engine_topic, _id, item, indata
                     )
                     outdata = {"op_id": op_id}
                 elif topic == "clusters" and item in ("upgrade", "scale"):
diff --git a/osm_nbi/validation.py b/osm_nbi/validation.py
index 2c2972d..1a82a1a 100644
--- a/osm_nbi/validation.py
+++ b/osm_nbi/validation.py
@@ -1849,6 +1849,29 @@
     "required": ["name", "profile", "profile_type"],
 }
 
+app_instance_edit_schema = {
+    "title": "app instance edit schema",
+    "$schema": "http://json-schema.org/draft-04/schema#",
+    "type": "object",
+    "properties": {
+        "name": name_schema,
+        "description": string_schema,
+    },
+    "additionalProperties": False,
+}
+
+app_instance_update_schema = {
+    "title": "app instance update schema",
+    "$schema": "http://json-schema.org/draft-04/schema#",
+    "type": "object",
+    "properties": {
+        "model": object_schema,
+        "params": object_schema,
+        "secret_params": object_schema,
+    },
+    "additionalProperties": True,
+}
+
 
 class ValidationError(Exception):
     def __init__(self, message, http_code=HTTPStatus.UNPROCESSABLE_ENTITY):
