diff --git a/alarm/types.go b/alarm/types.go
index ea6651f..5a70f18 100755
--- a/alarm/types.go
+++ b/alarm/types.go
@@ -68,8 +68,8 @@
 }
 
 type AlarmConfigParams struct {
-        MaxActiveAlarms int `json:"maxactivealarms"`
-        MaxAlarmHistory int `json:"maxalarmhistory"`
+	MaxActiveAlarms int `json:"maxactivealarms"`
+	MaxAlarmHistory int `json:"maxalarmhistory"`
 }
 
 // RICAlarm is an alarm instance
@@ -89,19 +89,19 @@
 
 // Temp alarm constants & definitions
 const (
-	RIC_RT_DISTRIBUTION_FAILED     int = 8004
-	TCP_CONNECTIVITY_LOST_TO_DBAAS int = 8005
-	E2_CONNECTIVITY_LOST_TO_GNODEB int = 8006
-	E2_CONNECTIVITY_LOST_TO_ENODEB int = 8007
-	ACTIVE_ALARM_EXCEED_MAX_THRESHOLD int = 8008
+	RIC_RT_DISTRIBUTION_FAILED         int = 8004
+	TCP_CONNECTIVITY_LOST_TO_DBAAS     int = 8005
+	E2_CONNECTIVITY_LOST_TO_GNODEB     int = 8006
+	E2_CONNECTIVITY_LOST_TO_ENODEB     int = 8007
+	ACTIVE_ALARM_EXCEED_MAX_THRESHOLD  int = 8008
 	ALARM_HISTORY_EXCEED_MAX_THRESHOLD int = 8009
 )
 
 type AlarmDefinition struct {
-	AlarmId               int  `json:"alarmid"`
-	AlarmText             string  `json:"alarmtext"`
-	EventType             string  `json:"eventtype"`
-	OperationInstructions string  `json:"operationinstructions"`
+	AlarmId               int    `json:"alarmid"`
+	AlarmText             string `json:"alarmtext"`
+	EventType             string `json:"eventtype"`
+	OperationInstructions string `json:"operationinstructions"`
 }
 
 var RICAlarmDefinitions map[int]*AlarmDefinition
diff --git a/cli/alarm-cli.go b/cli/alarm-cli.go
index 0fd5b18..a3ea90c 100755
--- a/cli/alarm-cli.go
+++ b/cli/alarm-cli.go
@@ -10,12 +10,12 @@
 	"net/http"
 	"os"
 	"time"
-
+        "strconv"
 	"gerrit.o-ran-sc.org/r/ric-plt/alarm-go/alarm"
 )
 
 type CliAlarmDefinitions struct {
-        AlarmDefinitions []*alarm.AlarmDefinition `json:"alarmdefinitions"`
+	AlarmDefinitions []*alarm.AlarmDefinition `json:"alarmdefinitions"`
 }
 
 func main() {
@@ -92,16 +92,26 @@
 	// Create alarm defenition
 	commando.
 		Register("define").
-                SetShortDescription("Define alarm with given parameters").
-                AddFlag("aid", "alarm identifier", commando.Int, nil).
-                AddFlag("atx", "alarm text", commando.String, nil).
-                AddFlag("ety", "event type", commando.String, nil).
-                AddFlag("oin", "operation instructions", commando.String, nil).
+		SetShortDescription("Define alarm with given parameters").
+		AddFlag("aid", "alarm identifier", commando.Int, nil).
+		AddFlag("atx", "alarm text", commando.String, nil).
+		AddFlag("ety", "event type", commando.String, nil).
+		AddFlag("oin", "operation instructions", commando.String, nil).
 		AddFlag("host", "Alarm manager host address", commando.String, "localhost").
 		AddFlag("port", "Alarm manager host address", commando.String, "8080").
-                SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) {
-                        postAlarmDefinition(flags)
-                })
+		SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) {
+			postAlarmDefinition(flags)
+		})
+		// Delete alarm defenition
+	commando.
+		Register("undefine").
+		SetShortDescription("Define alarm with given parameters").
+		AddFlag("aid", "alarm identifier", commando.Int, nil).
+		AddFlag("host", "Alarm manager host address", commando.String, "localhost").
+		AddFlag("port", "Alarm manager host address", commando.String, "8080").
+		SetAction(func(args map[string]commando.ArgValue, flags map[string]commando.FlagValue) {
+			deleteAlarmDefinition(flags)
+		})
 
 	// parse command-line arguments
 	commando.Parse(nil)
@@ -214,30 +224,50 @@
 }
 
 func postAlarmDefinition(flags map[string]commando.FlagValue) {
-        host, _ := flags["host"].GetString()
-        port, _ := flags["port"].GetString()
-        alarmid, _ := flags["aid"].GetInt()
-        alarmtxt, _ := flags["atx"].GetString()
-        etype, _ := flags["ety"].GetString()
-        operation, _ := flags["oin"].GetString()
-        targetUrl := fmt.Sprintf("http://%s:%s/ric/v1/alarms/define", host, port)
+	host, _ := flags["host"].GetString()
+	port, _ := flags["port"].GetString()
+	alarmid, _ := flags["aid"].GetInt()
+	alarmtxt, _ := flags["atx"].GetString()
+	etype, _ := flags["ety"].GetString()
+	operation, _ := flags["oin"].GetString()
+	targetUrl := fmt.Sprintf("http://%s:%s/ric/v1/alarms/define", host, port)
 
 	var alarmdefinition alarm.AlarmDefinition
-        alarmdefinition.AlarmId = alarmid
-        alarmdefinition.AlarmText = alarmtxt
-        alarmdefinition.EventType = etype
-        alarmdefinition.OperationInstructions = operation
+	alarmdefinition.AlarmId = alarmid
+	alarmdefinition.AlarmText = alarmtxt
+	alarmdefinition.EventType = etype
+	alarmdefinition.OperationInstructions = operation
 
 	m := CliAlarmDefinitions{AlarmDefinitions: []*alarm.AlarmDefinition{&alarmdefinition}}
-        jsonData, err := json.Marshal(m)
-        if err != nil {
-                fmt.Println("json.Marshal failed: %v", err)
-                return
-        }
+	jsonData, err := json.Marshal(m)
+	if err != nil {
+		fmt.Println("json.Marshal failed: %v", err)
+		return
+	}
 
-        resp, err := http.Post(targetUrl, "application/json", bytes.NewBuffer(jsonData))
-        if err != nil || resp == nil {
-                fmt.Println("Couldn't fetch post alarm configuration due to error: %v", err)
-                return
-        }
+	resp, err := http.Post(targetUrl, "application/json", bytes.NewBuffer(jsonData))
+	if err != nil || resp == nil {
+		fmt.Println("Couldn't post alarm definition due to error: %v", err)
+		return
+	}
+}
+
+func deleteAlarmDefinition(flags map[string]commando.FlagValue) {
+	host, _ := flags["host"].GetString()
+	port, _ := flags["port"].GetString()
+	alarmid, _ := flags["aid"].GetInt()
+	salarmid := strconv.FormatUint(uint64(alarmid), 10)
+	targetUrl := fmt.Sprintf("http://%s:%s/ric/v1/alarms/define/%s", host, port, salarmid)
+
+	client := &http.Client{}
+	req, err := http.NewRequest("DELETE", targetUrl, nil)
+	if err != nil || req == nil {
+		fmt.Println("Couldn't make delete request due to error: %v", err)
+		return
+	}
+	resp, errr := client.Do(req)
+	if errr != nil || resp == nil {
+		fmt.Println("Couldn't send delete request due to error: %v", err)
+		return
+	}
 }
diff --git a/manager/cmd/manager.go b/manager/cmd/manager.go
index 8b4ac74..564a2d4 100755
--- a/manager/cmd/manager.go
+++ b/manager/cmd/manager.go
@@ -82,7 +82,7 @@
 
 	// Suppress duplicate alarms
 	idx, found := a.IsMatchFound(m.Alarm)
-	if found && m.AlarmAction == alarm.AlarmActionRaise  {
+	if found && m.AlarmAction == alarm.AlarmActionRaise {
 		app.Logger.Info("Duplicate alarm found, suppressing ...")
 		if m.PerceivedSeverity == a.activeAlarms[idx].PerceivedSeverity {
 			// Duplicate with same severity found
@@ -93,7 +93,6 @@
 		}
 	}
 
-
 	// Clear alarm if found from active alarm list
 	if m.AlarmAction == alarm.AlarmActionClear {
 		if found {
@@ -243,6 +242,7 @@
 	app.Resource.InjectRoute("/ric/v1/alarms/define", a.SetAlarmDefinition, "POST")
 	app.Resource.InjectRoute("/ric/v1/alarms/define/{alarmId}", a.DeleteAlarmDefinition, "DELETE")
 	app.Resource.InjectRoute("/ric/v1/alarms/define", a.GetAlarmDefinition, "GET")
+	app.Resource.InjectRoute("/ric/v1/alarms/define/{alarmId}", a.GetAlarmDefinition, "GET")
 
 	// Start background timer for re-raising alerts
 	a.postClear = sdlcheck
diff --git a/manager/cmd/manager_test.go b/manager/cmd/manager_test.go
index 7398969..838de79 100755
--- a/manager/cmd/manager_test.go
+++ b/manager/cmd/manager_test.go
@@ -21,8 +21,13 @@
 package main
 
 import (
+	"bytes"
 	"encoding/json"
 	"fmt"
+	"gerrit.o-ran-sc.org/r/ric-plt/alarm-go/alarm"
+	"gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
+	"github.com/gorilla/mux"
+	"github.com/prometheus/alertmanager/api/v2/models"
 	"github.com/stretchr/testify/assert"
 	"io"
 	"io/ioutil"
@@ -30,15 +35,10 @@
 	"net/http"
 	"net/http/httptest"
 	"os"
+	"strconv"
 	"strings"
 	"testing"
 	"time"
-        "github.com/gorilla/mux"
-        "strconv"
-	"bytes"
-	"gerrit.o-ran-sc.org/r/ric-plt/alarm-go/alarm"
-	"gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
-	"github.com/prometheus/alertmanager/api/v2/models"
 )
 
 var alarmManager *AlarmManager
@@ -145,11 +145,11 @@
 
 	//Delete 8004
 	req, _ = http.NewRequest("DELETE", "/ric/v1/alarms/define", nil)
-        vars := map[string]string{"alarmId": strconv.FormatUint(8004, 10)}
-        req = mux.SetURLVars(req, vars)
-        handleFunc = http.HandlerFunc(alarmManager.DeleteAlarmDefinition)
-        response = executeRequest(req, handleFunc)
-        checkResponseCode(t, http.StatusOK, response.Code)
+	vars := map[string]string{"alarmId": strconv.FormatUint(8004, 10)}
+	req = mux.SetURLVars(req, vars)
+	handleFunc = http.HandlerFunc(alarmManager.DeleteAlarmDefinition)
+	response = executeRequest(req, handleFunc)
+	checkResponseCode(t, http.StatusOK, response.Code)
 
 	//Get 8004 fail
 	req, _ = http.NewRequest("GET", "/ric/v1/alarms/define", nil)
@@ -257,7 +257,6 @@
 	assert.Nil(t, alarmer.Clear(a), "clear failed")
 }
 
-
 func TestInvalidAlarms(t *testing.T) {
 	xapp.Logger.Info("TestInvalidAlarms")
 	a := alarmer.NewAlarm(1111, alarm.SeverityMajor, "Some App data", "eth 0 1")
diff --git a/manager/cmd/restapi.go b/manager/cmd/restapi.go
index 3a18a72..7a09083 100755
--- a/manager/cmd/restapi.go
+++ b/manager/cmd/restapi.go
@@ -109,6 +109,7 @@
 	if alarmIdok {
 		if ialarmId, err := strconv.Atoi(alarmId); err == nil {
 			delete(alarm.RICAlarmDefinitions, ialarmId)
+			app.Logger.Debug("DELETE - alarm definition deleted for alarmId %v", ialarmId)
 		} else {
 			app.Logger.Error("DELETE - alarmId string to int conversion failed %v", alarmId)
 			a.respondWithError(w, http.StatusBadRequest, "Invalid path parameter")
