diff --git a/apps/faultmanagement/fmmgr/src/main/java/org/onosproject/faultmanagement/impl/AlarmManager.java b/apps/faultmanagement/fmmgr/src/main/java/org/onosproject/faultmanagement/impl/AlarmManager.java
index f12bacb..74ed2c2 100644
--- a/apps/faultmanagement/fmmgr/src/main/java/org/onosproject/faultmanagement/impl/AlarmManager.java
+++ b/apps/faultmanagement/fmmgr/src/main/java/org/onosproject/faultmanagement/impl/AlarmManager.java
@@ -107,21 +107,6 @@
         return true;
     }
 
-    //TODO maybe map for field to update ?
-    @Override
-    public Alarm updateBookkeepingFields(AlarmId id, boolean isAcknowledged, String assignedUser) {
-        Alarm found = store.getAlarm(id);
-        if (found == null) {
-            throw new ItemNotFoundException("Alarm with id " + id + " found");
-        }
-        Alarm updated = new DefaultAlarm.Builder(found)
-                .withId(found.id())
-                .withAcknowledged(isAcknowledged)
-                .withAssignedUser(assignedUser).build();
-        store.createOrUpdateAlarm(updated);
-        return updated;
-    }
-
     @Override
     public Alarm updateBookkeepingFields(AlarmId id, boolean clear, boolean isAcknowledged,
                                          String assignedUser) {
diff --git a/apps/faultmanagement/fmweb/src/main/java/org/onosproject/faultmanagement/web/AlarmsWebResource.java b/apps/faultmanagement/fmweb/src/main/java/org/onosproject/faultmanagement/web/AlarmsWebResource.java
index 004f45b..1963b7c 100644
--- a/apps/faultmanagement/fmweb/src/main/java/org/onosproject/faultmanagement/web/AlarmsWebResource.java
+++ b/apps/faultmanagement/fmweb/src/main/java/org/onosproject/faultmanagement/web/AlarmsWebResource.java
@@ -134,7 +134,7 @@
 
             }
             Alarm updated = service.updateBookkeepingFields(
-                    alarm.id(), alarm.acknowledged(), alarm.assignedUser()
+                    alarm.id(), alarm.cleared(), alarm.acknowledged(), alarm.assignedUser()
             );
             ObjectNode encoded = new AlarmCodec().encode(updated, this);
             return ok(encoded.toString()).build();
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/faultmanagement/alarm/AlarmService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/faultmanagement/alarm/AlarmService.java
index 0c8c255..8dd76f6 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/faultmanagement/alarm/AlarmService.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/faultmanagement/alarm/AlarmService.java
@@ -33,18 +33,6 @@
      * Update book-keeping (ie administrative) fields for the alarm matching the specified identifier.
      *
      * @param id             alarm identifier
-     * @param isAcknowledged new acknowledged state
-     * @param assignedUser   new assigned user, null clear
-     * @return updated alarm (including any recent device-derived changes)
-     * @deprecated 1.10.0 Kingfisher
-     */
-    @Deprecated
-    Alarm updateBookkeepingFields(AlarmId id, boolean isAcknowledged, String assignedUser);
-
-    /**
-     * Update book-keeping (ie administrative) fields for the alarm matching the specified identifier.
-     *
-     * @param id             alarm identifier
      * @param clear          ture if the alarm has to be cleared
      * @param isAcknowledged new acknowledged state
      * @param assignedUser   new assigned user, null clear
