diff --git a/osm_mon/dashboarder/backends/grafana.py b/osm_mon/dashboarder/backends/grafana.py
index eeb5e75..a1cbcba 100644
--- a/osm_mon/dashboarder/backends/grafana.py
+++ b/osm_mon/dashboarder/backends/grafana.py
@@ -207,6 +207,7 @@
         requests.request("POST", self.url + "/api/folders/{}/permissions".format(folder_name),
                          json=permission_data, headers=self.headers)
 
+    # delete user from grafana
     def delete_grafana_users(self, user_name):
         # Get user id
         response_id = requests.request("GET", self.url + "/api/users/lookup?loginOrEmail={}".format(user_name),
@@ -220,6 +221,7 @@
         log.info("User %s deleted in Grafana", user_name)
         return response
 
+    # delete team from grafana
     def delete_grafana_team(self, project_name):
         # Delete Grafana folder
         requests.request("DELETE", self.url + "/api/folders/{}".format(project_name),
@@ -232,6 +234,7 @@
         log.info("Team %s deleted in Grafana", project_name)
         return response
 
+    # update grafana team
     def update_grafana_teams(self, project_new_name, project_old_name):
         team_obj = requests.request("GET", self.url + "/api/teams/search?name={}".format(project_old_name),
                                     headers=self.headers)
@@ -240,3 +243,18 @@
         response = requests.request("PUT", self.url + "/api/teams/{}".format(team_id), json=data, headers=self.headers)
         log.info("Grafana team updated %s", response.text)
         return response
+
+    # remove member from grafana team
+    def remove_grafana_team_member(self, user_name, project_data):
+        # Get user id
+        response_id = requests.request("GET", self.url + "/api/users/lookup?loginOrEmail={}".format(user_name),
+                                       headers=self.headers)
+        user_id = json.loads(response_id.text)["id"]
+        for project in project_data:
+            # Get team id
+            team_obj = requests.request("GET", self.url + "/api/teams/search?name={}".format(project['project']),
+                                        headers=self.headers)
+            team_id = json.loads(team_obj.text)["teams"][0]["id"]
+            response = requests.request("DELETE", self.url + "/api/teams/{}/members/{}".format(team_id, user_id),
+                                        headers=self.headers)
+        return response
